Exemplo n.º 1
0
    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
Exemplo n.º 2
0
 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"
     })
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
    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()
Exemplo n.º 7
0
    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()