Skip to content
Snippets Groups Projects
Select Git revision
  • 1968f6ea243a6662c469a734b3ba4b0fff287fc4
  • master default protected
  • gh-pages
  • dependabot/npm_and_yarn/neostandard-0.12.2
  • dependabot/npm_and_yarn/eslint-plugin-prettier-5.5.1
  • dependabot/npm_and_yarn/eslint-9.30.1
  • dependabot/npm_and_yarn/cypress-14.5.1
  • dependabot/npm_and_yarn/eslint-plugin-import-2.32.0
  • dependabot/npm_and_yarn/eslint-plugin-jsdoc-51.3.4
  • dependabot/npm_and_yarn/mocha-11.7.1
  • dependabot/npm_and_yarn/typescript-eslint/parser-8.36.0
  • dependabot/npm_and_yarn/nock-14.0.5
  • dependabot/npm_and_yarn/react-19.1.0
  • dependabot/npm_and_yarn/react-dom-19.1.0
  • server-2025-02-01-6100669a
  • server-2024-11-01-87cba042
  • server-2024-10-01-6875b7c8
  • dependabot/npm_and_yarn/path-to-regexp-8.2.0
  • server-2024-09-01-3d52575c
  • daily-tests-gha2
  • daily-tests-gha
  • server-2025-07-01
  • 5.0.2
  • 5.0.1
  • 5.0.0
  • server-2025-06-01
  • server-2025-05-01
  • server-2025-04-03
  • server-2025-03-02
  • server-2025-03-01
  • server-2025-02-02
  • server-2025-01-01
  • server-2024-12-01
  • server-2024-11-02
  • 4.1.0
  • server-2024-09-25
  • server-2024-09-02
  • server-2024-08-01
  • server-2024-07-01
  • 4.0.0
  • server-2024-06-01
41 results

tutorial-users.html

Blame
  • test_service.py 2.56 KiB
    import logging
    
    import pytest
    from plumbum import ProcessExecutionError
    from plumbum.cmd import docker
    
    logger = logging.getLogger()
    
    
    def _check_permissions(allowed_calls, forbidden_calls):
        for args in allowed_calls:
            docker(*args)
        for args in forbidden_calls:
            with pytest.raises(ProcessExecutionError):
                docker(*args)
    
    
    def test_default_permissions(proxy_factory):
        with proxy_factory() as test_container:
            allowed_calls = (("version",),)
            forbidden_calls = (
                ("pull", "alpine"),
                ("--rm", "alpine", "--name", test_container),
                ("logs", test_container),
                ("wait", test_container),
                ("rm", "-f", test_container),
                ("restart", test_container),
                ("network", "ls"),
                ("config", "ls"),
                ("service", "ls"),
                ("stack", "ls"),
                ("secret", "ls"),
                ("plugin", "ls"),
                ("info",),
                ("system", "info"),
                ("build", "."),
                ("buildx build", "."),
                ("swarm", "init"),
            )
            _check_permissions(allowed_calls, forbidden_calls)
    
    
    def test_container_permissions(proxy_factory):
        with proxy_factory(CONTAINERS=1) as test_container:
            allowed_calls = [
                ("logs", test_container),
                ("inspect", test_container),
            ]
            forbidden_calls = [
                ("wait", test_container),
                ("run", "--rm", "alpine"),
                ("rm", "-f", test_container),
                ("restart", test_container),
            ]
            _check_permissions(allowed_calls, forbidden_calls)
    
    
    def test_post_permissions(proxy_factory):
        with proxy_factory(POST=1) as test_container:
            allowed_calls = []
            forbidden_calls = [
                ("rm", "-f", test_container),
                ("pull", "alpine"),
                ("run", "--rm", "alpine"),
                ("network", "create", "foobar"),
            ]
            _check_permissions(allowed_calls, forbidden_calls)
    
    
    def test_network_post_permissions(proxy_factory):
        with proxy_factory(POST=1, NETWORKS=1):
            allowed_calls = [
                ("network", "ls"),
                ("network", "create", "foo"),
                ("network", "rm", "foo"),
            ]
            forbidden_calls = []
            _check_permissions(allowed_calls, forbidden_calls)
    
    
    def test_exec_permissions(proxy_factory):
        with proxy_factory(CONTAINERS=1, EXEC=1, POST=1) as container_id:
            allowed_calls = [
                ("exec", container_id, "ls"),
            ]
            forbidden_calls = []
            _check_permissions(allowed_calls, forbidden_calls)