Beispiel #1
0
 def test_execute_query_10_day_parameters_only_keys(self):
     """Test that the execute query runs properly with 10 day query."""
     url = "?filter[time_scope_units]=day&filter[time_scope_value]=-10&filter[resolution]=daily&key_only=True"
     query_params = self.mocked_query_params(url, GCPTagView)
     handler = GCPTagQueryHandler(query_params)
     query_output = handler.execute_query()
     self.assertIsNotNone(query_output.get("data"))
     self.assertEqual(handler.time_scope_units, "day")
     self.assertEqual(handler.time_scope_value, -10)
Beispiel #2
0
 def test_execute_query_two_month_parameters(self):
     """Test that the execute query runs properly with two month query."""
     url = "?filter[time_scope_units]=month&filter[time_scope_value]=-2&filter[resolution]=monthly"
     query_params = self.mocked_query_params(url, GCPTagView)
     handler = GCPTagQueryHandler(query_params)
     query_output = handler.execute_query()
     self.assertIsNotNone(query_output.get("data"))
     self.assertEqual(handler.time_scope_units, "month")
     self.assertEqual(handler.time_scope_value, -2)
Beispiel #3
0
 def test_execute_query_no_query_parameters(self):
     """Test that the execute query runs properly with no query."""
     url = "?"
     query_params = self.mocked_query_params(url, GCPTagView)
     handler = GCPTagQueryHandler(query_params)
     query_output = handler.execute_query()
     self.assertIsNotNone(query_output.get("data"))
     self.assertEqual(handler.time_scope_units, "day")
     self.assertEqual(handler.time_scope_value, -10)
Beispiel #4
0
    def test_execute_query_for_project(self):
        """Test that the execute query runs properly with project query."""
        account = None
        with tenant_context(self.tenant):
            obj = GCPCostEntryLineItemDailySummary.objects.values(
                "account_id").first()
            account = obj.get("account_id")

        url = f"?filter[time_scope_units]=day&filter[time_scope_value]=-10&filter[resolution]=daily&filter[account]={account}"  # noqa: E501
        query_params = self.mocked_query_params(url, GCPTagView)
        handler = GCPTagQueryHandler(query_params)
        query_output = handler.execute_query()
        self.assertIsNotNone(query_output.get("data"))
        self.assertEqual(handler.time_scope_units, "day")
        self.assertEqual(handler.time_scope_value, -10)
Beispiel #5
0
 def test_get_tags_for_key_filter(self):
     """Test that get tags runs properly with key query."""
     key = "vm_key_proj2"
     url = f"?filter[key]={key}"
     query_params = self.mocked_query_params(url, GCPTagView)
     handler = GCPTagQueryHandler(query_params)
     with tenant_context(self.tenant):
         tags = GCPTagsSummary.objects.filter(
             key__contains=key).values("values").distinct().all()
         tag_values = tags[0].get("values")
     expected = {"key": key, "values": tag_values}
     result = handler.get_tags()
     self.assertEqual(result[0].get("key"), expected.get("key"))
     self.assertEqual(sorted(result[0].get("values")),
                      sorted(expected.get("values")))
Beispiel #6
0
 def test_get_tag_values_for_value_filter(self):
     """Test that get tag values runs properly with value query."""
     key = "vm_key_proj2"
     value = "test_storage_label"
     url = f"?filter[value]={value}"
     query_params = self.mocked_query_params(url, GCPTagView)
     handler = GCPTagQueryHandler(query_params)
     handler.key = key
     with tenant_context(self.tenant):
         tags = GCPTagsValues.objects.filter(
             key__exact=key, value=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")))
Beispiel #7
0
    def test_get_tag_keys_filter_false(self):
        """Test that all tag keys are returned with no filter."""
        url = "?filter[time_scope_units]=month&filter[time_scope_value]=-2&filter[resolution]=monthly"
        query_params = self.mocked_query_params(url, GCPTagView)
        handler = GCPTagQueryHandler(query_params)

        tag_keys = set()
        with tenant_context(self.tenant):
            tags = (GCPCostEntryLineItemDailySummary.objects.annotate(
                tag_keys=JSONBObjectKeys("tags")).values(
                    "tags").distinct().all())
            for tag in tags:
                if not tag.get("tags"):
                    continue
                for key in tag.get("tags").keys():
                    tag_keys.add(key)
        result = handler.get_tag_keys(filters=False)
        self.assertEqual(sorted(result), sorted(list(tag_keys)))
Beispiel #8
0
 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, GCPTagView)
     # the mocked query parameters dont include the key from the url so it needs to be added
     query_params.kwargs = {"key": key}
     handler = GCPTagQueryHandler(query_params)
     with tenant_context(self.tenant):
         tags = (GCPTagsValues.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")))