def test_check_wildcard_access_with_restrictions(self): """Test check restrictions returns True when 1 provider is restricted.""" self.test_read_access = { "aws.account": { "read": ["999999999"] }, "azure.subscription_guid": { "read": ["*"] } } fake_request = Mock( spec=HttpRequest, user=Mock(access=self.test_read_access, customer=Mock(schema_name="acct10001")), GET=Mock(urlencode=Mock(return_value="")), ) fake_view = Mock( spec=ReportView, provider=Provider.OCP_ALL, query_handler=Mock(provider=Provider.OCP_ALL), report=self.FAKE.word(), serializer=Mock, tag_handler=[], ) with patch("reporting.models.OCPAllCostLineItemDailySummary.objects", return_value=[]): params = QueryParameters(fake_request, fake_view) access_list = params._get_providers(Provider.OCP_ALL.lower()) result = params._check_restrictions(access_list) self.assertTrue(result)
def test_get_providers(self): """Test get providers returns the correct access keys.""" fake_request = Mock( spec=HttpRequest, user=Mock(access=Mock(get=lambda key, default: default), customer=Mock(schema_name="acct10001")), GET=Mock(urlencode=Mock(return_value="")), ) fake_view = Mock( spec=ReportView, provider=self.FAKE.word(), query_handler=Mock(provider=random.choice(PROVIDERS)), report=self.FAKE.word(), serializer=Mock, tag_handler=[], ) params = QueryParameters(fake_request, fake_view) for provider in PROVIDERS: provider = provider.lower() with self.subTest(provider=provider): temp = params._get_providers(provider) result = [] for res in temp: result.append(res[2]) expected = ACCESS_KEYS[provider] self.assertEqual(sorted(result), sorted(expected))
def test_check_wildcard_access_with_ocp_restrictions(self): """Test check restrictions returns False when non-ocp have wildcard, but ocp is restricted.""" self.test_read_access = { "aws.account": { "read": ["*"] }, "aws.organizational_unit": { "read": ["*"] }, "azure.subscription_guid": { "read": ["*"] }, "openshift.cluster": { "read": ["my-ocp-cluster"] }, } fake_request = Mock( spec=HttpRequest, user=Mock(access=self.test_read_access, customer=Mock(schema_name="acct10001")), GET=Mock(urlencode=Mock(return_value="")), ) fake_view = Mock( spec=ReportView, provider=Provider.OCP_ALL, query_handler=Mock(provider=Provider.OCP_ALL), report=self.FAKE.word(), serializer=Mock, tag_handler=[], ) params = QueryParameters(fake_request, fake_view) access_list = params._get_providers(Provider.OCP_ALL.lower()) result = params._check_restrictions(access_list) self.assertFalse(result)
def test_get_providers_with_nonsense_provider(self): """Test get providers raises validation error with nonsense provider.""" fake_request = Mock( spec=HttpRequest, user=Mock(access=Mock(get=lambda key, default: default), customer=Mock(schema_name="acct10001")), GET=Mock(urlencode=Mock(return_value="")), ) fake_view = Mock( spec=ReportView, provider=self.FAKE.word(), query_handler=Mock(provider=random.choice(PROVIDERS)), report=self.FAKE.word(), serializer=Mock, tag_handler=[], ) params = QueryParameters(fake_request, fake_view) with self.assertRaises(ValidationError): params._get_providers("nonsense")