Exemple #1
0
    def test_two_tags_filter_resource(self):
        resources = filter_resources(
            [
                Resource(
                    digest=ResourceDigest(id="1", type="type"),
                    name="name",
                    tags=[Filterable(key="key", value="value1")],
                ),
                Resource(
                    digest=ResourceDigest(id="2", type="type"),
                    name="name",
                    tags=[Filterable(key="key", value="value2")],
                ),
                Resource(
                    digest=ResourceDigest(id="3", type="type"),
                    name="name",
                    tags=[Filterable(key="key", value="wrong")],
                ),
            ],
            [
                Filterable(key="key", value="value1"),
                Filterable(key="key", value="value2"),
            ],
        )

        assert_that(resources).is_length(2).extracting(0).contains(
            ResourceDigest(id="1", type="type"),
            ResourceDigest(id="2", type="type"))
Exemple #2
0
def resource_tags_from_tuples(
        tuples: List[Dict[str, str]]) -> List[Filterable]:
    """
        List of key-value tuples that store tags, syntax:
        [
            {
                'Key': 'string',
                'Value': 'string',
                ...
            },
        ]
        OR
        [
            {
                'key': 'string',
                'value': 'string',
                ...
            },
        ]
    """
    result = []
    for tuple_elem in tuples:
        if "Key" in tuple_elem and "Value" in tuple_elem:
            result.append(
                Filterable(key=tuple_elem["Key"], value=tuple_elem["Value"]))
        elif "key" in tuple_elem and "value" in tuple_elem:
            result.append(
                Filterable(key=tuple_elem["key"], value=tuple_elem["value"]))
    return result
Exemple #3
0
    def test_one_type_filter_resource(self):
        resources = filter_resources(
            [
                Resource(
                    digest=ResourceDigest(id="1", type="type1"),
                    name="name",
                    tags=[Filterable(key="key", value="value")],
                ),
                Resource(
                    digest=ResourceDigest(id="2", type="type2"),
                    name="name",
                    tags=[Filterable(key="key", value="wrong")],
                ),
            ],
            [Filterable(type="type1")],
        )

        assert_that(resources).is_length(1)
        assert_that(resources[0].digest).is_equal_to(
            ResourceDigest(id="1", type="type1"))
Exemple #4
0
def resource_tags_from_dict(tags: Dict[str, str]) -> List[Filterable]:
    """
        List of key-value dict that store tags, syntax:
        {
            'string': 'string'
        }
    """
    result = []
    for key, value in tags.items():
        result.append(Filterable(key=key, value=value))
    return result
Exemple #5
0
    def test_no_filters_resource(self):
        resources = filter_resources(
            [
                Resource(
                    digest=ResourceDigest(id="1", type="type"),
                    name="name",
                    tags=[Filterable(key="key", value="value")],
                )
            ],
            [],
        )

        assert_that(resources).is_length(1)
        assert_that(resources[0].digest).is_equal_to(
            ResourceDigest(id="1", type="type"))
Exemple #6
0
    def test_no_filters_relation(self):
        digest = ResourceDigest(id="1", type="type")
        edge = ResourceEdge(from_node=digest, to_node=digest)
        relations = filter_relations(
            [
                Resource(
                    digest=digest,
                    name="name",
                    tags=[Filterable(key="key", value="value")],
                )
            ],
            [edge],
        )

        assert_that(relations).is_length(1).contains(edge)
Exemple #7
0
 def test_parse_filters_simple_tag_filter(self):
     filters = parse_filters(["Name=tags.costCenter;Value=20000"])
     assert_that(filters).is_length(1)
     assert_that(filters).contains(Filterable(key="costCenter", value="20000"))
Exemple #8
0
 def test_parse_filters_two_complex_values_tag_filter(self):
     filters = parse_filters(["Name=tags.costCenter;Value=20000:'20000:1'"])
     assert_that(filters).is_length(2)
     assert_that(filters).contains(Filterable(key="costCenter", value="20000"))
     assert_that(filters).contains(Filterable(key="costCenter", value="20000:1"))
Exemple #9
0
 def test_parse_filters_type_filter(self):
     filters = parse_filters(["Name=type;Value=aws_lambda_function"])
     assert_that(filters).is_length(1)
     assert_that(filters).contains(Filterable(type="aws_lambda_function"))