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"))
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
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"))
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
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"))
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)
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"))
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"))
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"))