mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-03-22 03:08:23 +00:00
224 lines
6.5 KiB
Python
224 lines
6.5 KiB
Python
from argparse import Namespace
|
|
|
|
from prowler.providers.image.lib.arguments.arguments import validate_arguments
|
|
|
|
|
|
class TestValidateArguments:
|
|
def test_no_source_fails(self):
|
|
args = Namespace(
|
|
images=[],
|
|
image_list_file=None,
|
|
registry=None,
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, msg = validate_arguments(args)
|
|
assert not ok
|
|
assert "--image" in msg
|
|
|
|
def test_image_only_passes(self):
|
|
args = Namespace(
|
|
images=["nginx:latest"],
|
|
image_list_file=None,
|
|
registry=None,
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, _ = validate_arguments(args)
|
|
assert ok
|
|
|
|
def test_image_list_only_passes(self):
|
|
args = Namespace(
|
|
images=[],
|
|
image_list_file="images.txt",
|
|
registry=None,
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, _ = validate_arguments(args)
|
|
assert ok
|
|
|
|
def test_registry_only_passes(self):
|
|
args = Namespace(
|
|
images=[],
|
|
image_list_file=None,
|
|
registry="myregistry.io",
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, _ = validate_arguments(args)
|
|
assert ok
|
|
|
|
def test_image_filter_without_registry_fails(self):
|
|
args = Namespace(
|
|
images=["nginx:latest"],
|
|
image_list_file=None,
|
|
registry=None,
|
|
image_filter="^prod",
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, msg = validate_arguments(args)
|
|
assert not ok
|
|
assert "--image-filter requires --registry" in msg
|
|
|
|
def test_tag_filter_without_registry_fails(self):
|
|
args = Namespace(
|
|
images=["nginx:latest"],
|
|
image_list_file=None,
|
|
registry=None,
|
|
image_filter=None,
|
|
tag_filter="^v",
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, msg = validate_arguments(args)
|
|
assert not ok
|
|
assert "--tag-filter requires --registry" in msg
|
|
|
|
def test_max_images_without_registry_fails(self):
|
|
args = Namespace(
|
|
images=["nginx:latest"],
|
|
image_list_file=None,
|
|
registry=None,
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=50,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, msg = validate_arguments(args)
|
|
assert not ok
|
|
assert "--max-images requires --registry" in msg
|
|
|
|
def test_registry_insecure_without_registry_fails(self):
|
|
args = Namespace(
|
|
images=[],
|
|
image_list_file="i.txt",
|
|
registry=None,
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=True,
|
|
registry_list_images=False,
|
|
)
|
|
ok, msg = validate_arguments(args)
|
|
assert not ok
|
|
assert "--registry-insecure requires --registry" in msg
|
|
|
|
def test_docker_hub_no_namespace_fails(self):
|
|
args = Namespace(
|
|
images=[],
|
|
image_list_file=None,
|
|
registry="docker.io",
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, msg = validate_arguments(args)
|
|
assert not ok
|
|
assert "namespace" in msg.lower()
|
|
|
|
def test_docker_hub_with_namespace_passes(self):
|
|
args = Namespace(
|
|
images=[],
|
|
image_list_file=None,
|
|
registry="docker.io/myorg",
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, _ = validate_arguments(args)
|
|
assert ok
|
|
|
|
def test_docker_hub_https_no_namespace_fails(self):
|
|
args = Namespace(
|
|
images=[],
|
|
image_list_file=None,
|
|
registry="https://docker.io",
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, msg = validate_arguments(args)
|
|
assert not ok
|
|
assert "namespace" in msg.lower()
|
|
|
|
def test_registry_with_filters_passes(self):
|
|
args = Namespace(
|
|
images=[],
|
|
image_list_file=None,
|
|
registry="myregistry.io",
|
|
image_filter="^prod",
|
|
tag_filter="^v",
|
|
max_images=100,
|
|
registry_insecure=True,
|
|
registry_list_images=False,
|
|
)
|
|
ok, _ = validate_arguments(args)
|
|
assert ok
|
|
|
|
def test_registry_list_without_registry_fails(self):
|
|
args = Namespace(
|
|
images=["nginx:latest"],
|
|
image_list_file=None,
|
|
registry=None,
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=True,
|
|
)
|
|
ok, msg = validate_arguments(args)
|
|
assert not ok
|
|
assert "--registry-list requires --registry" in msg
|
|
|
|
def test_registry_list_with_registry_passes(self):
|
|
args = Namespace(
|
|
images=[],
|
|
image_list_file=None,
|
|
registry="myregistry.io",
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=True,
|
|
)
|
|
ok, _ = validate_arguments(args)
|
|
assert ok
|
|
|
|
def test_combined_registry_and_image_passes(self):
|
|
args = Namespace(
|
|
images=["nginx:latest"],
|
|
image_list_file=None,
|
|
registry="myregistry.io",
|
|
image_filter=None,
|
|
tag_filter=None,
|
|
max_images=0,
|
|
registry_insecure=False,
|
|
registry_list_images=False,
|
|
)
|
|
ok, _ = validate_arguments(args)
|
|
assert ok
|