159 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from __future__ import unicode_literals
 | |
| import sure  # noqa
 | |
| 
 | |
| import json
 | |
| 
 | |
| from moto.swf.exceptions import (
 | |
|     SWFClientError,
 | |
|     SWFUnknownResourceFault,
 | |
|     SWFDomainAlreadyExistsFault,
 | |
|     SWFDomainDeprecatedFault,
 | |
|     SWFSerializationException,
 | |
|     SWFTypeAlreadyExistsFault,
 | |
|     SWFTypeDeprecatedFault,
 | |
|     SWFWorkflowExecutionAlreadyStartedFault,
 | |
|     SWFDefaultUndefinedFault,
 | |
|     SWFValidationException,
 | |
|     SWFDecisionValidationException,
 | |
| )
 | |
| from moto.swf.models import (
 | |
|     WorkflowType,
 | |
| )
 | |
| 
 | |
| 
 | |
| def test_swf_client_error():
 | |
|     ex = SWFClientError("ASpecificType", "error message")
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "ASpecificType",
 | |
|         "message": "error message"
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_unknown_resource_fault():
 | |
|     ex = SWFUnknownResourceFault("type", "detail")
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "com.amazonaws.swf.base.model#UnknownResourceFault",
 | |
|         "message": "Unknown type: detail"
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_unknown_resource_fault_with_only_one_parameter():
 | |
|     ex = SWFUnknownResourceFault("foo bar baz")
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "com.amazonaws.swf.base.model#UnknownResourceFault",
 | |
|         "message": "Unknown foo bar baz"
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_domain_already_exists_fault():
 | |
|     ex = SWFDomainAlreadyExistsFault("domain-name")
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "com.amazonaws.swf.base.model#DomainAlreadyExistsFault",
 | |
|         "message": "domain-name"
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_domain_deprecated_fault():
 | |
|     ex = SWFDomainDeprecatedFault("domain-name")
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "com.amazonaws.swf.base.model#DomainDeprecatedFault",
 | |
|         "message": "domain-name"
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_serialization_exception():
 | |
|     ex = SWFSerializationException("value")
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "com.amazonaws.swf.base.model#SerializationException",
 | |
|         "message": "class java.lang.Foo can not be converted to an String  (not a real SWF exception ; happened on: value)"
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_type_already_exists_fault():
 | |
|     wft = WorkflowType("wf-name", "wf-version")
 | |
|     ex = SWFTypeAlreadyExistsFault(wft)
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "com.amazonaws.swf.base.model#TypeAlreadyExistsFault",
 | |
|         "message": "WorkflowType=[name=wf-name, version=wf-version]"
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_type_deprecated_fault():
 | |
|     wft = WorkflowType("wf-name", "wf-version")
 | |
|     ex = SWFTypeDeprecatedFault(wft)
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "com.amazonaws.swf.base.model#TypeDeprecatedFault",
 | |
|         "message": "WorkflowType=[name=wf-name, version=wf-version]"
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_workflow_execution_already_started_fault():
 | |
|     ex = SWFWorkflowExecutionAlreadyStartedFault()
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "com.amazonaws.swf.base.model#WorkflowExecutionAlreadyStartedFault",
 | |
|         'message': 'Already Started',
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_default_undefined_fault():
 | |
|     ex = SWFDefaultUndefinedFault("execution_start_to_close_timeout")
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "com.amazonaws.swf.base.model#DefaultUndefinedFault",
 | |
|         "message": "executionStartToCloseTimeout",
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_validation_exception():
 | |
|     ex = SWFValidationException("Invalid token")
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     json.loads(ex.get_body()).should.equal({
 | |
|         "__type": "com.amazon.coral.validate#ValidationException",
 | |
|         "message": "Invalid token",
 | |
|     })
 | |
| 
 | |
| 
 | |
| def test_swf_decision_validation_error():
 | |
|     ex = SWFDecisionValidationException([
 | |
|         {"type": "null_value",
 | |
|          "where": "decisions.1.member.startTimerDecisionAttributes.startToFireTimeout"},
 | |
|         {"type": "bad_decision_type",
 | |
|          "value": "FooBar",
 | |
|          "where": "decisions.1.member.decisionType",
 | |
|          "possible_values": "Foo, Bar, Baz"},
 | |
|     ])
 | |
| 
 | |
|     ex.code.should.equal(400)
 | |
|     ex.error_type.should.equal("com.amazon.coral.validate#ValidationException")
 | |
| 
 | |
|     msg = ex.get_body()
 | |
|     msg.should.match(r"2 validation errors detected:")
 | |
|     msg.should.match(
 | |
|         r"Value null at 'decisions.1.member.startTimerDecisionAttributes.startToFireTimeout' "
 | |
|         r"failed to satisfy constraint: Member must not be null;"
 | |
|     )
 | |
|     msg.should.match(
 | |
|         r"Value 'FooBar' at 'decisions.1.member.decisionType' failed to satisfy constraint: "
 | |
|         r"Member must satisfy enum value set: \[Foo, Bar, Baz\]"
 | |
|     )
 |