Refactor SWF exceptions testing so responses tests get simpler

This commit is contained in:
Jean-Baptiste Barth 2015-10-05 10:05:35 +02:00
parent 464aef293c
commit 8d435d8afe
6 changed files with 165 additions and 188 deletions

View File

@ -1,5 +1,4 @@
import boto
from nose.tools import assert_raises
from sure import expect
from moto import mock_swf
@ -29,30 +28,18 @@ def test_register_already_existing_activity_type():
conn.register_domain("test-domain", "60")
conn.register_activity_type("test-domain", "test-activity", "v1.0")
with assert_raises(SWFTypeAlreadyExistsFault) as err:
conn.register_activity_type("test-domain", "test-activity", "v1.0")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("TypeAlreadyExistsFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#TypeAlreadyExistsFault",
"message": "ActivityType=[name=test-activity, version=v1.0]"
})
conn.register_activity_type.when.called_with(
"test-domain", "test-activity", "v1.0"
).should.throw(SWFTypeAlreadyExistsFault)
@mock_swf
def test_register_with_wrong_parameter_type():
conn = boto.connect_swf("the_key", "the_secret")
conn.register_domain("test-domain", "60")
with assert_raises(SWFSerializationException) as err:
conn.register_activity_type("test-domain", "test-activity", 12)
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("SerializationException")
ex.body["__type"].should.equal("com.amazonaws.swf.base.model#SerializationException")
conn.register_activity_type.when.called_with(
"test-domain", "test-activity", 12
).should.throw(SWFSerializationException)
# ListActivityTypes endpoint
@mock_swf
@ -101,32 +88,18 @@ def test_deprecate_already_deprecated_activity_type():
conn.register_activity_type("test-domain", "test-activity", "v1.0")
conn.deprecate_activity_type("test-domain", "test-activity", "v1.0")
with assert_raises(SWFTypeDeprecatedFault) as err:
conn.deprecate_activity_type("test-domain", "test-activity", "v1.0")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("TypeDeprecatedFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#TypeDeprecatedFault",
"message": "ActivityType=[name=test-activity, version=v1.0]"
})
conn.deprecate_activity_type.when.called_with(
"test-domain", "test-activity", "v1.0"
).should.throw(SWFTypeDeprecatedFault)
@mock_swf
def test_deprecate_non_existent_activity_type():
conn = boto.connect_swf("the_key", "the_secret")
conn.register_domain("test-domain", "60")
with assert_raises(SWFUnknownResourceFault) as err:
conn.deprecate_activity_type("test-domain", "non-existent", "v1.0")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("UnknownResourceFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#UnknownResourceFault",
"message": "Unknown type: ActivityType=[name=non-existent, version=v1.0]"
})
conn.deprecate_activity_type.when.called_with(
"test-domain", "non-existent", "v1.0"
).should.throw(SWFUnknownResourceFault)
# DescribeActivityType endpoint
@mock_swf
@ -148,13 +121,6 @@ def test_describe_non_existent_activity_type():
conn = boto.connect_swf("the_key", "the_secret")
conn.register_domain("test-domain", "60")
with assert_raises(SWFUnknownResourceFault) as err:
conn.describe_activity_type("test-domain", "non-existent", "v1.0")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("UnknownResourceFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#UnknownResourceFault",
"message": "Unknown type: ActivityType=[name=non-existent, version=v1.0]"
})
conn.describe_activity_type.when.called_with(
"test-domain", "non-existent", "v1.0"
).should.throw(SWFUnknownResourceFault)

View File

@ -1,5 +1,4 @@
import boto
from nose.tools import assert_raises
from sure import expect
from moto import mock_swf
@ -29,28 +28,17 @@ def test_register_already_existing_domain():
conn = boto.connect_swf("the_key", "the_secret")
conn.register_domain("test-domain", "60", description="A test domain")
with assert_raises(SWFDomainAlreadyExistsFault) as err:
conn.register_domain("test-domain", "60", description="A test domain")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("DomainAlreadyExistsFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#DomainAlreadyExistsFault",
"message": "test-domain"
})
conn.register_domain.when.called_with(
"test-domain", "60", description="A test domain"
).should.throw(SWFDomainAlreadyExistsFault)
@mock_swf
def test_register_with_wrong_parameter_type():
conn = boto.connect_swf("the_key", "the_secret")
with assert_raises(SWFSerializationException) as err:
conn.register_domain("test-domain", 60, description="A test domain")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("SerializationException")
ex.body["__type"].should.equal("com.amazonaws.swf.base.model#SerializationException")
conn.register_domain.when.called_with(
"test-domain", 60, description="A test domain"
).should.throw(SWFSerializationException)
# ListDomains endpoint
@ -95,31 +83,18 @@ def test_deprecate_already_deprecated_domain():
conn.register_domain("test-domain", "60", description="A test domain")
conn.deprecate_domain("test-domain")
with assert_raises(SWFDomainDeprecatedFault) as err:
conn.deprecate_domain("test-domain")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("DomainDeprecatedFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#DomainDeprecatedFault",
"message": "test-domain"
})
conn.deprecate_domain.when.called_with(
"test-domain"
).should.throw(SWFDomainDeprecatedFault)
@mock_swf
def test_deprecate_non_existent_domain():
conn = boto.connect_swf("the_key", "the_secret")
with assert_raises(SWFUnknownResourceFault) as err:
conn.deprecate_domain("non-existent")
conn.deprecate_domain.when.called_with(
"non-existent"
).should.throw(SWFUnknownResourceFault)
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("UnknownResourceFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#UnknownResourceFault",
"message": "Unknown domain: non-existent"
})
# DescribeDomain endpoint
@mock_swf
@ -137,13 +112,6 @@ def test_describe_domain():
def test_describe_non_existent_domain():
conn = boto.connect_swf("the_key", "the_secret")
with assert_raises(SWFUnknownResourceFault) as err:
conn.describe_domain("non-existent")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("UnknownResourceFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#UnknownResourceFault",
"message": "Unknown domain: non-existent"
})
conn.describe_domain.when.called_with(
"non-existent"
).should.throw(SWFUnknownResourceFault)

View File

@ -0,0 +1,105 @@
from __future__ import unicode_literals
from moto.swf.exceptions import (
SWFClientError,
SWFUnknownResourceFault,
SWFDomainAlreadyExistsFault,
SWFDomainDeprecatedFault,
SWFSerializationException,
SWFTypeAlreadyExistsFault,
SWFTypeDeprecatedFault,
SWFWorkflowExecutionAlreadyStartedFault,
SWFDefaultUndefinedFault,
)
from moto.swf.models import (
WorkflowType,
)
def test_swf_client_error():
ex = SWFClientError("error message", "ASpecificType")
ex.status.should.equal(400)
ex.error_code.should.equal("ASpecificType")
ex.body.should.equal({
"__type": "ASpecificType",
"message": "error message"
})
def test_swf_unknown_resource_fault():
ex = SWFUnknownResourceFault("type", "detail")
ex.status.should.equal(400)
ex.error_code.should.equal("UnknownResourceFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#UnknownResourceFault",
"message": "Unknown type: detail"
})
def test_swf_domain_already_exists_fault():
ex = SWFDomainAlreadyExistsFault("domain-name")
ex.status.should.equal(400)
ex.error_code.should.equal("DomainAlreadyExistsFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#DomainAlreadyExistsFault",
"message": "domain-name"
})
def test_swf_domain_deprecated_fault():
ex = SWFDomainDeprecatedFault("domain-name")
ex.status.should.equal(400)
ex.error_code.should.equal("DomainDeprecatedFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#DomainDeprecatedFault",
"message": "domain-name"
})
def test_swf_serialization_exception():
ex = SWFSerializationException("value")
ex.status.should.equal(400)
ex.error_code.should.equal("SerializationException")
ex.body["__type"].should.equal("com.amazonaws.swf.base.model#SerializationException")
ex.body["Message"].should.match(r"class java.lang.Foo can not be converted to an String")
def test_swf_type_already_exists_fault():
wft = WorkflowType("wf-name", "wf-version")
ex = SWFTypeAlreadyExistsFault(wft)
ex.status.should.equal(400)
ex.error_code.should.equal("TypeAlreadyExistsFault")
ex.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.status.should.equal(400)
ex.error_code.should.equal("TypeDeprecatedFault")
ex.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.status.should.equal(400)
ex.error_code.should.equal("WorkflowExecutionAlreadyStartedFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#WorkflowExecutionAlreadyStartedFault",
})
def test_swf_default_undefined_fault():
ex = SWFDefaultUndefinedFault("execution_start_to_close_timeout")
ex.status.should.equal(400)
ex.error_code.should.equal("DefaultUndefinedFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#DefaultUndefinedFault",
"message": "executionStartToCloseTimeout",
})

View File

@ -1,5 +1,4 @@
from sure import expect
from nose.tools import assert_raises
from freezegun import freeze_time
from moto.swf.models import (
@ -112,16 +111,9 @@ def test_workflow_execution_creation_child_policy_logic():
child_policy="REQUEST_CANCEL"
).child_policy.should.equal("REQUEST_CANCEL")
with assert_raises(SWFDefaultUndefinedFault) as err:
WorkflowExecution(WorkflowType("test-workflow", "v1.0"), "ab1234")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("DefaultUndefinedFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#DefaultUndefinedFault",
"message": "executionStartToCloseTimeout"
})
WorkflowExecution.when.called_with(
WorkflowType("test-workflow", "v1.0"), "ab1234"
).should.throw(SWFDefaultUndefinedFault)
def test_workflow_execution_string_representation():

View File

@ -1,5 +1,4 @@
import boto
from nose.tools import assert_raises
from sure import expect
from moto import mock_swf
@ -38,31 +37,18 @@ def test_start_already_started_workflow_execution():
conn = setup_swf_environment()
conn.start_workflow_execution("test-domain", "uid-abcd1234", "test-workflow", "v1.0")
with assert_raises(SWFWorkflowExecutionAlreadyStartedFault) as err:
conn.start_workflow_execution("test-domain", "uid-abcd1234", "test-workflow", "v1.0")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("WorkflowExecutionAlreadyStartedFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#WorkflowExecutionAlreadyStartedFault",
})
conn.start_workflow_execution.when.called_with(
"test-domain", "uid-abcd1234", "test-workflow", "v1.0"
).should.throw(SWFWorkflowExecutionAlreadyStartedFault)
@mock_swf
def test_start_workflow_execution_on_deprecated_type():
conn = setup_swf_environment()
conn.deprecate_workflow_type("test-domain", "test-workflow", "v1.0")
with assert_raises(SWFTypeDeprecatedFault) as err:
conn.start_workflow_execution("test-domain", "uid-abcd1234", "test-workflow", "v1.0")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("TypeDeprecatedFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#TypeDeprecatedFault",
"message": "WorkflowType=[name=test-workflow, version=v1.0]"
})
conn.start_workflow_execution.when.called_with(
"test-domain", "uid-abcd1234", "test-workflow", "v1.0"
).should.throw(SWFTypeDeprecatedFault)
# DescribeWorkflowExecution endpoint
@ -80,16 +66,9 @@ def test_describe_workflow_execution():
def test_describe_non_existent_workflow_execution():
conn = setup_swf_environment()
with assert_raises(SWFUnknownResourceFault) as err:
conn.describe_workflow_execution("test-domain", "wrong-run-id", "wrong-workflow-id")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("UnknownResourceFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#UnknownResourceFault",
"message": "Unknown execution: WorkflowExecution=[workflowId=wrong-workflow-id, runId=wrong-run-id]"
})
conn.describe_workflow_execution.when.called_with(
"test-domain", "wrong-run-id", "wrong-workflow-id"
).should.throw(SWFUnknownResourceFault)
# GetWorkflowExecutionHistory endpoint
@ -109,7 +88,6 @@ def test_get_workflow_execution_history():
def test_get_workflow_execution_history_on_non_existent_workflow_execution():
conn = setup_swf_environment()
with assert_raises(SWFUnknownResourceFault) as err:
conn.get_workflow_execution_history("test-domain", "wrong-run-id", "wrong-workflow-id")
# (the rest is already tested above)
conn.get_workflow_execution_history.when.called_with(
"test-domain", "wrong-run-id", "wrong-workflow-id"
).should.throw(SWFUnknownResourceFault)

View File

@ -1,5 +1,4 @@
import boto
from nose.tools import assert_raises
from sure import expect
from moto import mock_swf
@ -29,29 +28,18 @@ def test_register_already_existing_workflow_type():
conn.register_domain("test-domain", "60")
conn.register_workflow_type("test-domain", "test-workflow", "v1.0")
with assert_raises(SWFTypeAlreadyExistsFault) as err:
conn.register_workflow_type("test-domain", "test-workflow", "v1.0")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("TypeAlreadyExistsFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#TypeAlreadyExistsFault",
"message": "WorkflowType=[name=test-workflow, version=v1.0]"
})
conn.register_workflow_type.when.called_with(
"test-domain", "test-workflow", "v1.0"
).should.throw(SWFTypeAlreadyExistsFault)
@mock_swf
def test_register_with_wrong_parameter_type():
conn = boto.connect_swf("the_key", "the_secret")
conn.register_domain("test-domain", "60")
with assert_raises(SWFSerializationException) as err:
conn.register_workflow_type("test-domain", "test-workflow", 12)
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("SerializationException")
ex.body["__type"].should.equal("com.amazonaws.swf.base.model#SerializationException")
conn.register_workflow_type.when.called_with(
"test-domain", "test-workflow", 12
).should.throw(SWFSerializationException)
# ListWorkflowTypes endpoint
@ -101,32 +89,19 @@ def test_deprecate_already_deprecated_workflow_type():
conn.register_workflow_type("test-domain", "test-workflow", "v1.0")
conn.deprecate_workflow_type("test-domain", "test-workflow", "v1.0")
with assert_raises(SWFTypeDeprecatedFault) as err:
conn.deprecate_workflow_type("test-domain", "test-workflow", "v1.0")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("TypeDeprecatedFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#TypeDeprecatedFault",
"message": "WorkflowType=[name=test-workflow, version=v1.0]"
})
conn.deprecate_workflow_type.when.called_with(
"test-domain", "test-workflow", "v1.0"
).should.throw(SWFTypeDeprecatedFault)
@mock_swf
def test_deprecate_non_existent_workflow_type():
conn = boto.connect_swf("the_key", "the_secret")
conn.register_domain("test-domain", "60")
with assert_raises(SWFUnknownResourceFault) as err:
conn.deprecate_workflow_type("test-domain", "non-existent", "v1.0")
conn.deprecate_workflow_type.when.called_with(
"test-domain", "non-existent", "v1.0"
).should.throw(SWFUnknownResourceFault)
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("UnknownResourceFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#UnknownResourceFault",
"message": "Unknown type: WorkflowType=[name=non-existent, version=v1.0]"
})
# DescribeWorkflowType endpoint
@mock_swf
@ -150,13 +125,6 @@ def test_describe_non_existent_workflow_type():
conn = boto.connect_swf("the_key", "the_secret")
conn.register_domain("test-domain", "60")
with assert_raises(SWFUnknownResourceFault) as err:
conn.describe_workflow_type("test-domain", "non-existent", "v1.0")
ex = err.exception
ex.status.should.equal(400)
ex.error_code.should.equal("UnknownResourceFault")
ex.body.should.equal({
"__type": "com.amazonaws.swf.base.model#UnknownResourceFault",
"message": "Unknown type: WorkflowType=[name=non-existent, version=v1.0]"
})
conn.describe_workflow_type.when.called_with(
"test-domain", "non-existent", "v1.0"
).should.throw(SWFUnknownResourceFault)