Example #1
0
    def test_put_for_ocp_provider(self):
        """Test PUT update for OCP provider."""
        response, provider = create_generic_provider(Provider.PROVIDER_OCP,
                                                     self.headers)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        json_result = response.json()

        name = "new_name"
        auth = {"provider_resource_name": "testing_123"}
        provider = copy.deepcopy(PROVIDERS[Provider.PROVIDER_OCP])
        provider["name"] = name
        provider["authentication"] = auth

        url = reverse("provider-detail", args=[json_result.get("uuid")])
        client = APIClient()
        put_response = client.put(url,
                                  data=provider,
                                  format="json",
                                  **self.headers)
        self.assertEqual(put_response.status_code, status.HTTP_200_OK)

        put_json_result = put_response.json()
        self.assertEqual(put_json_result.get("name"), name)
        self.assertEqual(
            put_json_result.get("authentication").get("credentials"), auth)
Example #2
0
 def setUp(self):
     """Set up the customer view tests."""
     super().setUp()
     _, self.provider = create_generic_provider('OCP', self.headers)
     self.data_generator = OCPAWSReportDataGenerator(
         self.tenant, self.provider)
     self.data_generator.add_data_to_tenant()
Example #3
0
    def test_put_for_aws_provider_error(self):
        """Test PUT update for AWS provider with error."""
        with patch.object(ProviderAccessor,
                          "cost_usage_source_ready",
                          returns=True):
            response, provider = create_generic_provider(
                Provider.PROVIDER_AWS, self.headers)
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        with patch.object(ProviderAccessor,
                          "cost_usage_source_ready",
                          side_effect=serializers.ValidationError):
            json_result = response.json()
            name = "new_name"
            provider = copy.deepcopy(PROVIDERS[Provider.PROVIDER_AWS])
            provider["name"] = name

            url = reverse("provider-detail", args=[json_result.get("uuid")])
            client = APIClient()
            put_response = client.put(url,
                                      data=provider,
                                      format="json",
                                      **self.headers)
            self.assertEqual(put_response.status_code,
                             status.HTTP_400_BAD_REQUEST)
            self.assertFalse(
                Provider.objects.get(uuid=json_result.get("uuid")).active)
Example #4
0
    def test_group_bys_with_second_group_by_tag(self):
        """Test that a group by project followed by a group by tag does not error."""
        _, provider = create_generic_provider(Provider.PROVIDER_OCP,
                                              self.headers)
        data_generator = OCPAzureReportDataGenerator(self.tenant, provider)
        data_generator.add_data_to_tenant()
        with tenant_context(self.tenant):
            labels = (OCPAzureCostLineItemDailySummary.objects.filter(
                usage_start__gte=self.dh.last_month_start).filter(
                    usage_start__lte=self.dh.last_month_end).values(
                        *["tags"]).first())

            tags = labels.get("tags")
            group_by_key = list(tags.keys())[0]

        client = APIClient()
        for url in URLS:
            for group_by in GROUP_BYS:
                params = {
                    "filter[resolution]": "monthly",
                    "filter[time_scope_value]": "-2",
                    "filter[time_scope_units]": "month",
                    f"group_by[{group_by}]": "*",
                    f"group_by[tag:{group_by_key}]": "*",
                }
                url = url + "?" + urlencode(params, quote_via=quote_plus)
                response = client.get(url, **self.headers)
                self.assertEqual(response.status_code, status.HTTP_200_OK)
Example #5
0
 def setUp(self):
     """Set up the customer view tests."""
     super().setUp()
     self.dh = DateHelper()
     self.ten_days_ago = self.dh.n_days_ago(self.dh.today, 9)
     _, self.provider = create_generic_provider(Provider.PROVIDER_AZURE, self.headers)
     self.data_generator = AzureReportDataGenerator(self.tenant, self.provider)
     self.data_generator.add_data_to_tenant()
Example #6
0
 def setUp(self):
     """Set up the tests."""
     super().setUp()
     self.dh = DateHelper()
     _, self.provider = create_generic_provider(Provider.PROVIDER_AZURE, self.headers)
     generator = OCPAWSReportDataGenerator(self.tenant, self.provider)
     generator.add_data_to_tenant()
     generator.add_aws_data_to_tenant()
Example #7
0
 def _create_source_and_provider(self, provider_type, source_id):
     """Create Provider."""
     _, provider = create_generic_provider(provider_type, self.headers)
     source = Sources.objects.get(source_id=source_id)
     source.source_uuid = provider.uuid
     authentication = {"credentials": provider.authentication.credentials}
     if authentication.get("credentials").get("provider_resource_name"):
         authentication["resource_name"] = authentication["credentials"]["provider_resource_name"]
     source.authentication = authentication
     billing_source = {"data_source": provider.billing_source.data_source}
     source.billing_source = billing_source
     source.save()
     return source
    def setUp(self):
        """Set up the customer view tests."""
        super().setUp()
        self.dh = DateHelper()
        _, self.provider = create_generic_provider(Provider.PROVIDER_OCP, self.headers)

        self.this_month_filter = {"usage_start__gte": self.dh.this_month_start}
        self.ten_day_filter = {"usage_start__gte": self.dh.n_days_ago(self.dh.today, 9)}
        self.thirty_day_filter = {"usage_start__gte": self.dh.n_days_ago(self.dh.today, 29)}
        self.last_month_filter = {
            "usage_start__gte": self.dh.last_month_start,
            "usage_end__lte": self.dh.last_month_end,
        }
        self.generator = OCPAzureReportDataGenerator(self.tenant, self.provider)
Example #9
0
    def test_put_for_provider_type_change(self, mock_access):
        """Test that provider_type change thru PUT request results in error."""
        response, provider = create_generic_provider('AWS', self.headers)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        json_result = response.json()

        provider = copy.deepcopy(PROVIDERS['AWS'])
        provider['type'] = 'OCP'

        url = reverse('provider-detail', args=[json_result.get('uuid')])
        client = APIClient()
        put_response = client.put(url,
                                  data=provider,
                                  format='json',
                                  **self.headers)
        self.assertEqual(put_response.status_code, status.HTTP_400_BAD_REQUEST)
Example #10
0
    def test_put_for_provider_type_change(self, mock_access):
        """Test that provider_type change thru PUT request results in error."""
        response, provider = create_generic_provider(Provider.PROVIDER_AWS,
                                                     self.headers)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        json_result = response.json()

        provider = copy.deepcopy(PROVIDERS[Provider.PROVIDER_AWS])
        provider["type"] = Provider.PROVIDER_OCP

        url = reverse("provider-detail", args=[json_result.get("uuid")])
        client = APIClient()
        put_response = client.put(url,
                                  data=provider,
                                  format="json",
                                  **self.headers)
        self.assertEqual(put_response.status_code, status.HTTP_400_BAD_REQUEST)
Example #11
0
    def test_patch_not_supported(self):
        """Test that PATCH request returns 405."""
        response, provider = create_generic_provider('AZURE', self.headers)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        json_result = response.json()

        name = 'new_name'
        provider = copy.deepcopy(PROVIDERS['AZURE'])
        provider['name'] = name

        url = reverse('provider-detail', args=[json_result.get('uuid')])
        client = APIClient()
        put_response = client.patch(url,
                                    data=provider,
                                    format='json',
                                    **self.headers)
        self.assertEqual(put_response.status_code,
                         status.HTTP_405_METHOD_NOT_ALLOWED)
Example #12
0
    def test_patch_not_supported(self):
        """Test that PATCH request returns 405."""
        response, provider = create_generic_provider(Provider.PROVIDER_AZURE,
                                                     self.headers)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        json_result = response.json()

        name = "new_name"
        provider = copy.deepcopy(PROVIDERS[Provider.PROVIDER_AZURE])
        provider["name"] = name

        url = reverse("provider-detail", args=[json_result.get("uuid")])
        client = APIClient()
        put_response = client.patch(url,
                                    data=provider,
                                    format="json",
                                    **self.headers)
        self.assertEqual(put_response.status_code,
                         status.HTTP_405_METHOD_NOT_ALLOWED)
Example #13
0
    def setUp(self):
        """Set up the customer view tests."""
        super().setUp()
        self.dh = DateHelper()
        _, self.provider = create_generic_provider('OCP', self.headers)

        self.this_month_filter = {'usage_start__gte': self.dh.this_month_start}
        self.ten_day_filter = {
            'usage_start__gte': self.dh.n_days_ago(self.dh.today, 9)
        }
        self.thirty_day_filter = {
            'usage_start__gte': self.dh.n_days_ago(self.dh.today, 29)
        }
        self.last_month_filter = {
            'usage_start__gte': self.dh.last_month_start,
            'usage_end__lte': self.dh.last_month_end,
        }
        OCPAWSReportDataGenerator(self.tenant,
                                  self.provider).add_data_to_tenant()
Example #14
0
    def test_put_for_azure_provider(self, mock_access):
        """Test PUT update for AZURE provider."""
        response, provider = create_generic_provider('AZURE', self.headers)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        json_result = response.json()

        name = 'new_name'
        provider = copy.deepcopy(PROVIDERS['AZURE'])
        provider['name'] = name

        url = reverse('provider-detail', args=[json_result.get('uuid')])
        client = APIClient()
        put_response = client.put(url,
                                  data=provider,
                                  format='json',
                                  **self.headers)
        self.assertEqual(put_response.status_code, status.HTTP_200_OK)

        put_json_result = put_response.json()
        self.assertEqual(put_json_result.get('name'), name)
Example #15
0
    def test_put_for_azure_provider(self, mock_access):
        """Test PUT update for AZURE provider."""
        response, provider = create_generic_provider(Provider.PROVIDER_AZURE,
                                                     self.headers)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        json_result = response.json()

        name = "new_name"
        provider = copy.deepcopy(PROVIDERS[Provider.PROVIDER_AZURE])
        provider["name"] = name

        url = reverse("provider-detail", args=[json_result.get("uuid")])
        client = APIClient()
        put_response = client.put(url,
                                  data=provider,
                                  format="json",
                                  **self.headers)
        self.assertEqual(put_response.status_code, status.HTTP_200_OK)

        put_json_result = put_response.json()
        self.assertEqual(put_json_result.get("name"), name)
Example #16
0
    def test_deleted_before_put_returns_400(self):
        """Test if 400 is raised when a PUT is called on deleted provider."""
        response, provider = create_generic_provider('AZURE', self.headers)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        json_result = response.json()

        name = 'new_name'
        provider = copy.deepcopy(PROVIDERS['AZURE'])
        provider['name'] = name

        url = reverse('provider-detail', args=[json_result.get('uuid')])
        client = APIClient()
        response = client.delete(url, **self.headers)
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

        url = reverse('provider-detail', args=[json_result.get('uuid')])
        client = APIClient()
        put_response = client.put(url,
                                  data=provider,
                                  format='json',
                                  **self.headers)
        self.assertEqual(put_response.status_code, status.HTTP_404_NOT_FOUND)
Example #17
0
    def test_put_for_ocp_provider(self):
        """Test PUT update for OCP provider."""
        response, provider = create_generic_provider('OCP', self.headers)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        json_result = response.json()

        name = 'new_name'
        auth = {'provider_resource_name': 'testing_123'}
        provider = copy.deepcopy(PROVIDERS['OCP'])
        provider['name'] = name
        provider['authentication'] = auth

        url = reverse('provider-detail', args=[json_result.get('uuid')])
        client = APIClient()
        put_response = client.put(url,
                                  data=provider,
                                  format='json',
                                  **self.headers)
        self.assertEqual(put_response.status_code, status.HTTP_200_OK)

        put_json_result = put_response.json()
        self.assertEqual(put_json_result.get('name'), name)
        self.assertEqual(
            put_json_result.get('authentication').get('credentials'), auth)
Example #18
0
 def setUp(self):
     """Set up the customer view tests."""
     super().setUp()
     _, self.provider = create_generic_provider(Provider.PROVIDER_OCP,
                                                self.headers)
     OCPReportDataGenerator(self.tenant, self.provider).add_data_to_tenant()
Example #19
0
 def setUp(self):
     """Set up the customer view tests."""
     super().setUp()
     _, self.provider = create_generic_provider('AZURE', self.headers)
     AzureReportDataGenerator(self.tenant, self.provider).add_data_to_tenant()
Example #20
0
 def test_create_azure_type_camel_casing(self):
     """Test creating a provider with type camel cased."""
     response, _ = create_generic_provider("AzUrE", self.headers)
     json_result = response.json()
     self.assertEqual(response.status_code, status.HTTP_201_CREATED)
     self.assertEqual(json_result.get("type"), Provider.PROVIDER_AZURE)