101 lines
3.2 KiB
Python
101 lines
3.2 KiB
Python
import pytest
|
|
|
|
from atst.domain.csp.cloud import EnvironmentCreationException
|
|
from atst.jobs import (
|
|
do_create_environment,
|
|
do_create_atat_admin_user,
|
|
do_create_environment_baseline,
|
|
)
|
|
|
|
# pylint: disable=unused-import
|
|
from tests.mock_boto3 import mock_aws, mock_boto3, AUTH_CREDENTIALS
|
|
from tests.factories import EnvironmentFactory
|
|
|
|
|
|
def test_create_environment_succeeds(mock_aws):
|
|
environment = EnvironmentFactory.create()
|
|
account_id = mock_aws.create_environment(
|
|
AUTH_CREDENTIALS, environment.creator, environment
|
|
)
|
|
assert "account-id" == account_id
|
|
|
|
|
|
@pytest.mark.mock_boto3({"organizations.describe_create_account.failure": True})
|
|
def test_create_environment_raises_x_when_account_creation_fails(mock_aws):
|
|
environment = EnvironmentFactory.create()
|
|
with pytest.raises(EnvironmentCreationException):
|
|
mock_aws.create_environment(AUTH_CREDENTIALS, environment.creator, environment)
|
|
|
|
|
|
def test_create_atat_admin_user_succeeds(mock_aws):
|
|
root_user_info = mock_aws.create_atat_admin_user(
|
|
AUTH_CREDENTIALS, "csp_environment_id"
|
|
)
|
|
assert {
|
|
"id": "user-id",
|
|
"username": "user-name",
|
|
"resource_id": "user-arn",
|
|
"credentials": {
|
|
"AccessKeyId": "access-key-id",
|
|
"SecretAccessKey": "secret-access-key",
|
|
},
|
|
} == root_user_info
|
|
|
|
|
|
@pytest.mark.mock_boto3({"iam.create_user.already_exists": True})
|
|
def test_create_atat_admin_when_user_already_exists(mock_aws):
|
|
root_user_info = mock_aws.create_atat_admin_user(
|
|
AUTH_CREDENTIALS, "csp_environment_id"
|
|
)
|
|
assert {
|
|
"id": "user-id",
|
|
"username": "user-name",
|
|
"resource_id": "user-arn",
|
|
"credentials": {
|
|
"AccessKeyId": "access-key-id",
|
|
"SecretAccessKey": "secret-access-key",
|
|
},
|
|
} == root_user_info
|
|
|
|
iam_client = mock_aws.boto3.client("iam")
|
|
iam_client.get_user.assert_any_call(UserName="atat")
|
|
|
|
|
|
def test_create_environment_baseline_succeeds(mock_aws):
|
|
baseline_info = mock_aws.create_environment_baseline(
|
|
AUTH_CREDENTIALS, "csp_environment_id"
|
|
)
|
|
assert {"policies": [{"BillingReadOnly": "policy-arn"}]} == baseline_info
|
|
|
|
|
|
@pytest.mark.mock_boto3({"iam.create_policy.already_exists": True})
|
|
def test_create_environment_baseline_when_policy_already_exists(mock_aws):
|
|
baseline_info = mock_aws.create_environment_baseline(
|
|
AUTH_CREDENTIALS, "csp_environment_id"
|
|
)
|
|
assert "policies" in baseline_info
|
|
|
|
|
|
def test_aws_provision_environment(mock_aws, session):
|
|
environment = EnvironmentFactory.create()
|
|
|
|
do_create_environment(mock_aws, environment_id=environment.id)
|
|
do_create_atat_admin_user(mock_aws, environment_id=environment.id)
|
|
do_create_environment_baseline(mock_aws, environment_id=environment.id)
|
|
|
|
session.refresh(environment)
|
|
|
|
assert "account-id" == environment.cloud_id
|
|
assert {
|
|
"id": "user-id",
|
|
"username": "user-name",
|
|
"credentials": {
|
|
"AccessKeyId": "access-key-id",
|
|
"SecretAccessKey": "secret-access-key",
|
|
},
|
|
"resource_id": "user-arn",
|
|
} == environment.root_user_info
|
|
assert {
|
|
"policies": [{"BillingReadOnly": "policy-arn"}]
|
|
} == environment.baseline_info
|