def gather_internal_api_responses(self): """ Call the internal API and collect all the responses to be output. Returns: dict: All of the internal API responses. """ responses = dict() ############################ # Internal Customer Account Setup AWS # Create an AWS account (success) another_arn = util_helper.generate_dummy_arn() aws_cloud_account_data = ( util_helper.generate_dummy_aws_cloud_account_post_data()) aws_cloud_account_data.update({ "account_arn": another_arn, "name": "yet another account" }) response = self.internal_client.create_accounts( data=aws_cloud_account_data) assert_status(response, 201) responses["internal_account_create_aws"] = response customer_account = models.CloudAccount.objects.get( id=response.data["account_id"]) # Create an AWS account (fail: duplicate ARN) aws_cloud_account_duplicate_arn_data = ( util_helper.generate_dummy_aws_cloud_account_post_data()) aws_cloud_account_duplicate_arn_data.update({ "account_arn": another_arn, "name": "but this account already exists" }) response = self.internal_client.create_accounts( data=aws_cloud_account_duplicate_arn_data) assert_status(response, 400) responses["internal_account_create_aws_duplicate_arn"] = response # Create an Azure account (success) tenant_id = str(seeded_uuid4()) azure_cloud_account_data = ( util_helper.generate_dummy_azure_cloud_account_post_data()) azure_cloud_account_data.update({ "tenant_id": tenant_id, "name": "it's an azure account" }) response = self.internal_client.create_accounts( data=azure_cloud_account_data) assert_status(response, 201) responses["internal_account_create_azure"] = response return responses
def setUp(self): """Set up shared test data.""" self.aws_account_id = util_helper.generate_dummy_aws_account_id() self.arn = util_helper.generate_dummy_arn(self.aws_account_id) self.role = util_helper.generate_dummy_role() self.validated_data = util_helper.generate_dummy_aws_cloud_account_post_data( ) self.validated_data.update({ "account_arn": self.arn, "name": "account_name" })
def test_create_with_malformed_arn_fails(self): """Test create account with malformed arn returns validation error.""" data = util_helper.generate_dummy_aws_cloud_account_post_data() data["account_arn"] = self.faker.bs() request = self.factory.post("/accounts/", data=data) force_authenticate(request, user=self.user2) view = InternalAccountViewSet.as_view(actions={"post": "create"}) response = view(request) self.assertEqual(response.status_code, 400) self.assertIn("account_arn", response.data)
def test_create_account_without_name_fail(self): """Test create account without a name fails.""" data = util_helper.generate_dummy_aws_cloud_account_post_data() del data["name"] request = self.factory.post("/accounts/", data=data) force_authenticate(request, user=self.user2) view = InternalAccountViewSet.as_view(actions={"post": "create"}) response = view(request) self.assertEqual(response.status_code, 400) self.assertIn("name", response.data)
def test_create_noun(self, mock_notify_sources): """Assert "create" requests work.""" client = helper.SandboxedRestClient(api_root="/internal/api/cloudigrade/v1") client._force_authenticate(self.user) arn = util_helper.generate_dummy_arn() name = _faker.sentence() data = util_helper.generate_dummy_aws_cloud_account_post_data() data.update({"account_arn": arn, "name": name}) response = client.create_accounts(data=data) self.assertEqual(response.status_code, http.HTTPStatus.CREATED) response_json = response.json() self.assertEqual(response_json["content_object"]["account_arn"], arn) self.assertEqual(response_json["name"], name) self.assertEqual(response_json["user_id"], self.user.id)
def test_create_account_with_duplicate_name_fail(self, mock_aws, mock_task): """Test create account with a duplicate name fails.""" mock_aws.verify_account_access.return_value = True, [] data = util_helper.generate_dummy_aws_cloud_account_post_data() data["name"] = "unique" # should collide with self.account5 request = self.factory.post("/accounts/", data=data) force_authenticate(request, user=self.user2) view = InternalAccountViewSet.as_view(actions={"post": "create"}) response = view(request) self.assertEqual(response.status_code, 400) self.assertIn("name", response.data) mock_task.delay.assert_not_called()
def test_create_account_with_name_success(self, mock_enable): """Test create account with a name succeeds.""" data = util_helper.generate_dummy_aws_cloud_account_post_data() request = self.factory.post("/accounts/", data=data) force_authenticate(request, user=self.user2) view = InternalAccountViewSet.as_view(actions={"post": "create"}) response = view(request) self.assertEqual(response.status_code, 201) self.assertEqual(response.data["content_object"]["account_arn"], data["account_arn"]) self.assertEqual(response.data["name"], data["name"]) self.assertIsNotNone(response.data["name"]) self.assertEqual(response.data["is_enabled"], True) # True by default mock_enable.assert_called()