| 
									
										
										
										
											2023-08-12 03:59:33 -04:00
										 |  |  | import boto3 | 
					
						
							|  |  |  | from botocore.exceptions import ClientError | 
					
						
							|  |  |  | import pytest | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 |