Skip to content
Snippets Groups Projects
Select Git revision
  • ddfbed0d8916324ddef5dfcc618f05751715a3e0
  • main default protected
  • release-0.15
  • automated-updates-main
  • release-0.13
  • automated-updates-release-0.13
  • release-0.14
  • release-0.10
  • release-0.11
  • release-0.12
  • fix-versions-action
  • versions-fix
  • release-0.9
  • release-0.8
  • release-0.7
  • release-0.6
  • release-0.5
  • release-0.4
  • release-0.3
  • release-0.1
  • release-0.2
  • v0.15.0
  • v0.14.0
  • v0.13.0
  • v0.12.0
  • v0.11.0
  • v0.10.0
  • v0.9.0
  • v0.8.0
  • v0.7.0
  • v0.6.0
  • v0.5.0
  • v0.4.0
  • v0.3.0
  • v0.2.0
  • v0.1.0
36 results

weave-net-support.md

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)