moto/tests/test_swf/responses/test_domains.py

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

210 lines
6.9 KiB
Python
Raw Normal View History

import boto3
import pytest
from botocore.exceptions import ClientError
from moto import mock_swf
from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
# RegisterDomain endpoint
@mock_swf
def test_register_domain_boto3():
client = boto3.client("swf", region_name="us-west-1")
client.register_domain(
name="test-domain",
workflowExecutionRetentionPeriodInDays="60",
description="A test domain",
)
all_domains = client.list_domains(registrationStatus="REGISTERED")
assert len(all_domains["domainInfos"]) == 1
domain = all_domains["domainInfos"][0]
assert domain["name"] == "test-domain"
assert domain["status"] == "REGISTERED"
assert domain["description"] == "A test domain"
assert domain["arn"] == f"arn:aws:swf:us-west-1:{ACCOUNT_ID}:/domain/test-domain"
@mock_swf
def test_register_already_existing_domain_boto3():
client = boto3.client("swf", region_name="us-west-1")
client.register_domain(
name="test-domain",
workflowExecutionRetentionPeriodInDays="60",
description="A test domain",
)
with pytest.raises(ClientError) as ex:
client.register_domain(
name="test-domain",
workflowExecutionRetentionPeriodInDays="60",
description="A test domain",
)
assert ex.value.response["Error"]["Code"] == "DomainAlreadyExistsFault"
assert ex.value.response["Error"]["Message"] == "test-domain"
assert ex.value.response["ResponseMetadata"]["HTTPStatusCode"] == 400
# ListDomains endpoint
@mock_swf
def test_list_domains_order_boto3():
client = boto3.client("swf", region_name="us-west-1")
client.register_domain(
name="b-test-domain", workflowExecutionRetentionPeriodInDays="60"
)
client.register_domain(
name="a-test-domain", workflowExecutionRetentionPeriodInDays="60"
)
client.register_domain(
name="c-test-domain", workflowExecutionRetentionPeriodInDays="60"
)
all_domains = client.list_domains(registrationStatus="REGISTERED")
assert len(all_domains["domainInfos"]) == 3
names = [domain["name"] for domain in all_domains["domainInfos"]]
assert names == ["a-test-domain", "b-test-domain", "c-test-domain"]
@mock_swf
def test_list_domains_reverse_order_boto3():
client = boto3.client("swf", region_name="us-west-1")
client.register_domain(
name="b-test-domain", workflowExecutionRetentionPeriodInDays="60"
)
client.register_domain(
name="a-test-domain", workflowExecutionRetentionPeriodInDays="60"
)
client.register_domain(
name="c-test-domain", workflowExecutionRetentionPeriodInDays="60"
)
all_domains = client.list_domains(
registrationStatus="REGISTERED", reverseOrder=True
)
assert len(all_domains["domainInfos"]) == 3
names = [domain["name"] for domain in all_domains["domainInfos"]]
assert names == ["c-test-domain", "b-test-domain", "a-test-domain"]
# DeprecateDomain endpoint
@mock_swf
def test_deprecate_domain_boto3():
client = boto3.client("swf", region_name="us-west-1")
client.register_domain(
name="test-domain", workflowExecutionRetentionPeriodInDays="60"
)
client.deprecate_domain(name="test-domain")
all_domains = client.list_domains(registrationStatus="REGISTERED")
assert len(all_domains["domainInfos"]) == 0
all_domains = client.list_domains(registrationStatus="DEPRECATED")
assert len(all_domains["domainInfos"]) == 1
domain = all_domains["domainInfos"][0]
assert domain["name"] == "test-domain"
@mock_swf
def test_deprecate_already_deprecated_domain_boto3():
client = boto3.client("swf", region_name="us-west-1")
client.register_domain(
name="test-domain", workflowExecutionRetentionPeriodInDays="60"
)
client.deprecate_domain(name="test-domain")
with pytest.raises(ClientError) as ex:
client.deprecate_domain(name="test-domain")
assert ex.value.response["Error"]["Code"] == "DomainDeprecatedFault"
assert ex.value.response["Error"]["Message"] == "test-domain"
assert ex.value.response["ResponseMetadata"]["HTTPStatusCode"] == 400
@mock_swf
def test_deprecate_non_existent_domain_boto3():
client = boto3.client("swf", region_name="us-west-1")
with pytest.raises(ClientError) as ex:
client.deprecate_domain(name="non-existent")
assert ex.value.response["Error"]["Code"] == "UnknownResourceFault"
assert ex.value.response["Error"]["Message"] == "Unknown domain: non-existent"
assert ex.value.response["ResponseMetadata"]["HTTPStatusCode"] == 400
# UndeprecateDomain endpoint
@mock_swf
def test_undeprecate_domain():
client = boto3.client("swf", region_name="us-east-1")
client.register_domain(
name="test-domain", workflowExecutionRetentionPeriodInDays="60"
)
client.deprecate_domain(name="test-domain")
client.undeprecate_domain(name="test-domain")
resp = client.describe_domain(name="test-domain")
assert resp["domainInfo"]["status"] == "REGISTERED"
@mock_swf
def test_undeprecate_already_undeprecated_domain():
client = boto3.client("swf", region_name="us-east-1")
client.register_domain(
name="test-domain", workflowExecutionRetentionPeriodInDays="60"
)
client.deprecate_domain(name="test-domain")
client.undeprecate_domain(name="test-domain")
with pytest.raises(ClientError):
client.undeprecate_domain(name="test-domain")
@mock_swf
def test_undeprecate_never_deprecated_domain():
client = boto3.client("swf", region_name="us-east-1")
client.register_domain(
name="test-domain", workflowExecutionRetentionPeriodInDays="60"
)
with pytest.raises(ClientError):
client.undeprecate_domain(name="test-domain")
@mock_swf
def test_undeprecate_non_existent_domain():
client = boto3.client("swf", region_name="us-east-1")
with pytest.raises(ClientError):
client.undeprecate_domain(name="non-existent")
# DescribeDomain endpoint
@mock_swf
def test_describe_domain_boto3():
client = boto3.client("swf", region_name="us-east-1")
client.register_domain(
name="test-domain",
workflowExecutionRetentionPeriodInDays="60",
description="A test domain",
)
domain = client.describe_domain(name="test-domain")
assert domain["configuration"]["workflowExecutionRetentionPeriodInDays"] == "60"
assert domain["domainInfo"]["description"] == "A test domain"
assert domain["domainInfo"]["name"] == "test-domain"
assert domain["domainInfo"]["status"] == "REGISTERED"
@mock_swf
def test_describe_non_existent_domain_boto3():
client = boto3.client("swf", region_name="us-west-1")
with pytest.raises(ClientError) as ex:
client.describe_domain(name="non-existent")
assert ex.value.response["Error"]["Code"] == "UnknownResourceFault"
assert ex.value.response["Error"]["Message"] == "Unknown domain: non-existent"
assert ex.value.response["ResponseMetadata"]["HTTPStatusCode"] == 400