moto/tests/test_resiliencehub/test_resiliencyhub_resources.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

163 lines
5.7 KiB
Python
Raw Normal View History

import boto3
from moto import mock_aws
@mock_aws
def test_import_resources_to_draft_app_version():
client = boto3.client("resiliencehub", region_name="us-east-2")
app_arn = client.create_app(name="myapp")["app"]["appArn"]
components = client.list_app_version_app_components(
appArn=app_arn, appVersion="draft"
)
assert components["appArn"] == app_arn
assert components["appComponents"] == []
assert components["appVersion"] == "draft"
resp = client.import_resources_to_draft_app_version(
appArn=app_arn,
eksSources=[{"eksClusterArn": "some-arn", "namespaces": ["eks/ns/1"]}],
importStrategy="AddOnly",
sourceArns=["sarn1", "sarn2"],
terraformSources=[{"s3StateFileUrl": "tf://url"}],
)
assert resp["appArn"] == app_arn
assert resp["eksSources"] == [
{"eksClusterArn": "some-arn", "namespaces": ["eks/ns/1"]}
]
assert resp["sourceArns"] == ["sarn1", "sarn2"]
assert resp["status"] == "Pending"
assert resp["terraformSources"] == [{"s3StateFileUrl": "tf://url"}]
components = client.list_app_version_app_components(
appArn=app_arn, appVersion="draft"
)["appComponents"]
assert {
"id": "appcommon",
"name": "appcommon",
"type": "AWS::ResilienceHub::AppCommonAppComponent",
} in components
@mock_aws
def test_create_app_version_app_component():
client = boto3.client("resiliencehub", region_name="us-east-2")
app_arn = client.create_app(name="myapp")["app"]["appArn"]
component = client.create_app_version_app_component(
appArn=app_arn,
name="my_databases",
type="AWS::ResilienceHub::DatabaseAppComponent",
)
assert component["appArn"] == app_arn
assert component["appVersion"] == "draft"
assert component["appComponent"]["id"] == "my_databases"
assert component["appComponent"]["name"] == "my_databases"
assert (
component["appComponent"]["type"] == "AWS::ResilienceHub::DatabaseAppComponent"
)
components = client.list_app_version_app_components(
appArn=app_arn, appVersion="draft"
)["appComponents"]
assert components == [
{
"id": "my_databases",
"name": "my_databases",
"type": "AWS::ResilienceHub::DatabaseAppComponent",
}
]
@mock_aws
def test_create_app_version_resource():
client = boto3.client("resiliencehub", region_name="us-east-2")
app_arn = client.create_app(name="myapp")["app"]["appArn"]
component = client.create_app_version_app_component(
appArn=app_arn,
name="my_databases",
type="AWS::ResilienceHub::DatabaseAppComponent",
)["appComponent"]
resp = client.create_app_version_resource(
appArn=app_arn,
appComponents=["my_databases"],
logicalResourceId={
"identifier": "myres",
},
physicalResourceId="myphys",
resourceType="AWS::Lambda::Function",
)
assert resp["appArn"] == app_arn
assert resp["appVersion"] == "draft"
assert resp["physicalResource"]["appComponents"] == [component]
assert resp["physicalResource"]["logicalResourceId"] == {"identifier": "myres"}
assert resp["physicalResource"]["physicalResourceId"]["identifier"] == "myphys"
assert resp["physicalResource"]["resourceName"] == "myres"
assert resp["physicalResource"]["resourceType"] == "AWS::Lambda::Function"
resources = client.list_app_version_resources(appArn=app_arn, appVersion="draft")
assert resources["physicalResources"] == [resp["physicalResource"]]
@mock_aws
def test_create_app_version_resource_with_unknown_component():
client = boto3.client("resiliencehub", region_name="us-east-2")
app_arn = client.create_app(name="myapp")["app"]["appArn"]
# Not sure how AWS behaves, when providing an unknown appComponent
# But let's try to be flexible in what we accept
resp = client.create_app_version_resource(
appArn=app_arn,
appComponents=["unknown"],
logicalResourceId={
"identifier": "myres",
},
physicalResourceId="myphys",
resourceType="AWS::Lambda::Function",
)
assert resp["physicalResource"]["appComponents"] == []
@mock_aws
def test_publish():
client = boto3.client("resiliencehub", region_name="us-east-2")
app_arn = client.create_app(name="myapp")["app"]["appArn"]
versions = client.list_app_versions(appArn=app_arn)["appVersions"]
assert len(versions) == 1
assert versions[0]["appVersion"] == "draft"
assert versions[0]["creationTime"]
assert versions[0]["identifier"] == 0
client.import_resources_to_draft_app_version(
appArn=app_arn,
eksSources=[{"eksClusterArn": "some-arn", "namespaces": ["eks/ns/1"]}],
importStrategy="AddOnly",
sourceArns=["sarn1", "sarn2"],
terraformSources=[{"s3StateFileUrl": "tf://url"}],
)
publish = client.publish_app_version(appArn=app_arn, versionName="v1")
assert publish["appArn"] == app_arn
assert publish["appVersion"] == "release"
assert publish["identifier"] == 1
assert publish["versionName"] == "v1"
versions = client.list_app_versions(appArn=app_arn)["appVersions"]
assert len(versions) == 2
assert versions[1]["appVersion"] == "release"
assert versions[1]["identifier"] == 1
assert versions[1]["versionName"] == "v1"
client.publish_app_version(appArn=app_arn, versionName="v2")
versions = client.list_app_versions(appArn=app_arn)["appVersions"]
assert len(versions) == 3
for v in versions:
del v["creationTime"]
assert {"appVersion": "release", "identifier": 2, "versionName": "v2"} in versions
assert {"appVersion": "1", "identifier": 1, "versionName": "v1"} in versions