def test_get_tag_values_for_value_filter_partial_match(self): """Test that the execute query runs properly with value query.""" key = "version" value = "a" url = f"/version/?filter[value]={value}" query_params = self.mocked_query_params(url, OCPTagView) # the mocked query parameters dont include the key from the url so it needs to be added query_params.kwargs = {"key": key} handler = OCPTagQueryHandler(query_params) with tenant_context(self.tenant): storage_tags = (OCPTagsValues.objects.filter( key__exact=key, value__icontains=value).values("value").distinct().all()) storage_values = [tag.get("value") for tag in storage_tags] usage_tags = (OCPTagsValues.objects.filter( key__exact=key, value__icontains=value).values("value").distinct().all()) usage_values = [tag.get("value") for tag in usage_tags] # remove duplicates from the values tag_values = list(dict.fromkeys(storage_values + usage_values)) expected = {"key": key, "values": tag_values} result = handler.get_tag_values() self.assertEqual(result[0].get("key"), expected.get("key")) self.assertEqual(sorted(result[0].get("values")), sorted(expected.get("values")))
def test_get_tag_values_for_value_filter(self): """Test that get tag values runs properly with value query.""" key = "version" value = "Andromeda" url = f"?filter[value]={value}" query_params = self.mocked_query_params(url, OCPTagView) handler = OCPTagQueryHandler(query_params) handler.key = key with tenant_context(self.tenant): storage_tags = (OCPTagsValues.objects.filter( key__exact=key, value__icontains=value).values("value").distinct().all()) tag_values = [tag.get("value") for tag in storage_tags] expected = {"key": key, "values": tag_values} result = handler.get_tag_values() self.assertEqual(result[0].get("key"), expected.get("key")) self.assertEqual(sorted(result[0].get("values")), sorted(expected.get("values")))
def test_get_tag_values_for_value_filter_RBAC_cluster(self): """Test that the execute query runs properly with value query and an RBAC restriction on cluster.""" key = "app" value = "b" url = f"/app/?filter[value]={value}" query_params = self.mocked_query_params(url, OCPTagView) # the mocked query parameters dont include the key from the url so it needs to be added query_params.kwargs = {"key": key} handler = OCPTagQueryHandler(query_params) with tenant_context(self.tenant): tags = (OCPTagsValues.objects.filter( key__exact=key, value__icontains=value).values("value").distinct().all()) tag_values = [tag.get("value") for tag in tags] expected = {"key": key, "values": tag_values} result = handler.get_tag_values() self.assertEqual(result[0].get("key"), expected.get("key")) self.assertEqual(sorted(result[0].get("values")), sorted(expected.get("values")))