class TestWorkflowExecution(unittest.TestCase): def setUp(self): self.domain = Domain("TestDomain") self.wt = WorkflowType(self.domain, "TestType", "1.0") self.we = WorkflowExecution(self.domain, self.wt, "TestType-0.1-TestDomain") def tearDown(self): pass def test_instantiation(self): we = WorkflowExecution(self.domain, self.wt, "TestType-0.1-TestDomain") self.assertIsNotNone(we) self.assertIsInstance(we, WorkflowExecution) self.assertIn( we.status, [WorkflowExecution.STATUS_OPEN, WorkflowExecution.STATUS_CLOSED]) def test___diff_with_different_workflow_execution(self): with patch.object( Layer1, 'describe_workflow_execution', mock_describe_workflow_execution, ): workflow_execution = WorkflowExecution( self.domain, WorkflowType(self.domain, "NonExistentTestType", "1.0"), "non-existent-id") diffs = workflow_execution._diff() self.assertIsNotNone(diffs) self.assertEqual(len(diffs), 7) self.assertTrue(hasattr(diffs[0], 'attr')) self.assertTrue(hasattr(diffs[0], 'local')) self.assertTrue(hasattr(diffs[0], 'upstream')) def test_workflow_execution__diff_with_identical_workflow_execution(self): with patch.object( Layer1, 'describe_workflow_execution', mock_describe_workflow_execution, ): mocked = mock_describe_workflow_execution() workflow_execution = WorkflowExecution( self.domain, mocked['executionInfo']['execution']['workflowId'], run_id=mocked['executionInfo']['execution']['runId'], status=mocked['executionInfo']['executionStatus'], task_list=mocked['executionConfiguration']['taskList']['name'], child_policy=mocked['executionConfiguration']['childPolicy'], execution_timeout=mocked['executionConfiguration'] ['executionStartToCloseTimeout'], tag_list=mocked['executionInfo']['tagList'], decision_tasks_timeout=mocked['executionConfiguration'] ['taskStartToCloseTimeout'], ) diffs = workflow_execution._diff() self.assertEqual(len(diffs), 0) def test_exists_with_existing_workflow_execution(self): with patch.object(Layer1, 'describe_workflow_execution'): self.assertTrue(self.we.exists) def test_exists_with_non_existent_workflow_execution(self): with patch.object(self.we.connection, 'describe_workflow_execution') as mock: mock.side_effect = SWFResponseError( 400, "Bad Request:", { '__type': 'com.amazonaws.swf.base.model#UnknownResourceFault', 'message': 'Unknown execution: WorkflowExecution=[workflowId=blah, runId=test]' }, 'UnknownResourceFault', ) self.assertFalse(self.we.exists) # TODO: fix test when no network (probably hits real SWF endpoints) @unittest.skip("Skip it in case there's no network connection.") def test_workflow_execution_exists_with_whatever_error(self): with patch.object(self.we.connection, 'describe_workflow_execution') as mock: with self.assertRaises(ResponseError): mock.side_effect = SWFResponseError(400, "mocking exception", { '__type': 'WhateverError', 'message': 'Whatever' }) self.domain.exists def test_is_synced_with_unsynced_workflow_execution(self): pass def test_is_synced_with_synced_workflow_execution(self): pass def test_is_synced_over_non_existent_workflow_execution(self): with patch.object(Layer1, 'describe_workflow_execution', mock_describe_workflow_execution): workflow_execution = WorkflowExecution( self.domain, WorkflowType(self.domain, "NonExistentTestType", "1.0"), "non-existent-id") self.assertFalse(workflow_execution.is_synced) def test_changes_with_different_workflow_execution(self): with patch.object( Layer1, 'describe_workflow_execution', mock_describe_workflow_execution, ): workflow_execution = WorkflowExecution( self.domain, WorkflowType(self.domain, "NonExistentTestType", "1.0"), "non-existent-id") diffs = workflow_execution.changes self.assertIsNotNone(diffs) self.assertEqual(len(diffs), 7) self.assertTrue(hasattr(diffs[0], 'attr')) self.assertTrue(hasattr(diffs[0], 'local')) self.assertTrue(hasattr(diffs[0], 'upstream')) def test_workflow_execution_changes_with_identical_workflow_execution( self): with patch.object( Layer1, 'describe_workflow_execution', mock_describe_workflow_execution, ): mocked = mock_describe_workflow_execution() workflow_execution = WorkflowExecution( self.domain, mocked['executionInfo']['execution']['workflowId'], run_id=mocked['executionInfo']['execution']['runId'], status=mocked['executionInfo']['executionStatus'], task_list=mocked['executionConfiguration']['taskList']['name'], child_policy=mocked['executionConfiguration']['childPolicy'], execution_timeout=mocked['executionConfiguration'] ['executionStartToCloseTimeout'], tag_list=mocked['executionInfo']['tagList'], decision_tasks_timeout=mocked['executionConfiguration'] ['taskStartToCloseTimeout'], ) diffs = workflow_execution.changes self.assertEqual(len(diffs), 0) def test_history(self): with patch.object(self.we.connection, 'get_workflow_execution_history', mock_get_workflow_execution_history): history = self.we.history() self.assertIsInstance(history, History)
class TestWorkflowExecution(unittest.TestCase, CustomAssertions): def setUp(self): self.domain = Domain("TestDomain") self.wt = WorkflowType(self.domain, "TestType", "1.0") self.we = WorkflowExecution(self.domain, self.wt, "TestType-0.1-TestDomain") def tearDown(self): pass def test_instantiation(self): we = WorkflowExecution(self.domain, self.wt, "TestType-0.1-TestDomain") self.assertIsNotNone(we) self.assertIsInstance(we, WorkflowExecution) self.assertIn( we.status, [WorkflowExecution.STATUS_OPEN, WorkflowExecution.STATUS_CLOSED] ) def test___diff_with_different_workflow_execution(self): with patch.object( Layer1, "describe_workflow_execution", mock_describe_workflow_execution, ): workflow_execution = WorkflowExecution( self.domain, WorkflowType(self.domain, "NonExistentTestType", "1.0"), "non-existent-id", ) diffs = workflow_execution._diff() self.assertIsNotNone(diffs) self.assertLength(diffs, 7) self.assertTrue(hasattr(diffs[0], "attr")) self.assertTrue(hasattr(diffs[0], "local")) self.assertTrue(hasattr(diffs[0], "upstream")) def test_workflow_execution__diff_with_identical_workflow_execution(self): with patch.object( Layer1, "describe_workflow_execution", mock_describe_workflow_execution, ): mocked = mock_describe_workflow_execution() workflow_execution = WorkflowExecution( self.domain, mocked["executionInfo"]["execution"]["workflowId"], run_id=mocked["executionInfo"]["execution"]["runId"], status=mocked["executionInfo"]["executionStatus"], task_list=mocked["executionConfiguration"]["taskList"]["name"], child_policy=mocked["executionConfiguration"]["childPolicy"], execution_timeout=mocked["executionConfiguration"][ "executionStartToCloseTimeout" ], tag_list=mocked["executionInfo"]["tagList"], decision_tasks_timeout=mocked["executionConfiguration"][ "taskStartToCloseTimeout" ], ) diffs = workflow_execution._diff() self.assertLength(diffs, 0) def test_exists_with_existing_workflow_execution(self): with patch.object(Layer1, "describe_workflow_execution"): self.assertTrue(self.we.exists) def test_exists_with_non_existent_workflow_execution(self): with patch.object(self.we.connection, "describe_workflow_execution") as mock: mock.side_effect = SWFResponseError( 400, "Bad Request:", { "__type": "com.amazonaws.swf.base.model#UnknownResourceFault", "message": "Unknown execution: WorkflowExecution=[workflowId=blah, runId=test]", }, "UnknownResourceFault", ) self.assertFalse(self.we.exists) # TODO: fix test when no network (probably hits real SWF endpoints) @unittest.skip("Skip it in case there's no network connection.") def test_workflow_execution_exists_with_whatever_error(self): with patch.object(self.we.connection, "describe_workflow_execution") as mock: with self.assertRaises(ResponseError): mock.side_effect = SWFResponseError( 400, "mocking exception", {"__type": "WhateverError", "message": "Whatever"}, ) dummy = self.domain.exists def test_is_synced_with_unsynced_workflow_execution(self): pass def test_is_synced_with_synced_workflow_execution(self): pass def test_is_synced_over_non_existent_workflow_execution(self): with patch.object( Layer1, "describe_workflow_execution", mock_describe_workflow_execution ): workflow_execution = WorkflowExecution( self.domain, WorkflowType(self.domain, "NonExistentTestType", "1.0"), "non-existent-id", ) self.assertFalse(workflow_execution.is_synced) def test_changes_with_different_workflow_execution(self): with patch.object( Layer1, "describe_workflow_execution", mock_describe_workflow_execution, ): workflow_execution = WorkflowExecution( self.domain, WorkflowType(self.domain, "NonExistentTestType", "1.0"), "non-existent-id", ) diffs = workflow_execution.changes self.assertIsNotNone(diffs) self.assertLength(diffs, 7) self.assertTrue(hasattr(diffs[0], "attr")) self.assertTrue(hasattr(diffs[0], "local")) self.assertTrue(hasattr(diffs[0], "upstream")) def test_workflow_execution_changes_with_identical_workflow_execution(self): with patch.object( Layer1, "describe_workflow_execution", mock_describe_workflow_execution, ): mocked = mock_describe_workflow_execution() workflow_execution = WorkflowExecution( self.domain, mocked["executionInfo"]["execution"]["workflowId"], run_id=mocked["executionInfo"]["execution"]["runId"], status=mocked["executionInfo"]["executionStatus"], task_list=mocked["executionConfiguration"]["taskList"]["name"], child_policy=mocked["executionConfiguration"]["childPolicy"], execution_timeout=mocked["executionConfiguration"][ "executionStartToCloseTimeout" ], tag_list=mocked["executionInfo"]["tagList"], decision_tasks_timeout=mocked["executionConfiguration"][ "taskStartToCloseTimeout" ], ) diffs = workflow_execution.changes self.assertLength(diffs, 0) def test_history(self): with patch.object( self.we.connection, "get_workflow_execution_history", mock_get_workflow_execution_history, ): history = self.we.history() self.assertIsInstance(history, History)
class TestWorkflowExecution(unittest2.TestCase): def setUp(self): self.domain = Domain("TestDomain") self.wt = WorkflowType(self.domain, "TestType", "1.0") self.we = WorkflowExecution( self.domain, self.wt, "TestType-0.1-TestDomain" ) def tearDown(self): pass def test_instantiation(self): we = WorkflowExecution( self.domain, self.wt, "TestType-0.1-TestDomain" ) self.assertIsNotNone(we) self.assertIsInstance(we, WorkflowExecution) self.assertIn(we.status, [ WorkflowExecution.STATUS_OPEN, WorkflowExecution.STATUS_CLOSED ]) def test___diff_with_different_workflow_execution(self): with patch.object( Layer1, 'describe_workflow_execution', mock_describe_workflow_execution, ): workflow_execution = WorkflowExecution( self.domain, WorkflowType(self.domain, "NonExistentTestType", "1.0"), "non-existent-id" ) diffs = workflow_execution._diff() self.assertIsNotNone(diffs) self.assertEqual(len(diffs), 7) self.assertTrue(hasattr(diffs[0], 'attr')) self.assertTrue(hasattr(diffs[0], 'local')) self.assertTrue(hasattr(diffs[0], 'upstream')) def test_workflow_execution__diff_with_identical_workflow_execution(self): with patch.object( Layer1, 'describe_workflow_execution', mock_describe_workflow_execution, ): mocked = mock_describe_workflow_execution() workflow_execution = WorkflowExecution( self.domain, mocked['executionInfo']['execution']['workflowId'], run_id=mocked['executionInfo']['execution']['runId'], status=mocked['executionInfo']['executionStatus'], task_list=mocked['executionConfiguration']['taskList']['name'], child_policy=mocked['executionConfiguration']['childPolicy'], execution_timeout=mocked['executionConfiguration']['executionStartToCloseTimeout'], tag_list=mocked['executionInfo']['tagList'], decision_tasks_timeout=mocked['executionConfiguration']['taskStartToCloseTimeout'], ) diffs = workflow_execution._diff() self.assertEqual(len(diffs), 0) def test_exists_with_existing_workflow_execution(self): with patch.object(Layer1, 'describe_workflow_execution'): self.assertTrue(self.we.exists) def test_exists_with_non_existent_workflow_execution(self): with patch.object(self.we.connection, 'describe_workflow_execution') as mock: mock.side_effect = SWFResponseError( 400, "Bad Request:", {'__type': 'com.amazonaws.swf.base.model#UnknownResourceFault', 'message': 'Unknown execution: WorkflowExecution=[workflowId=blah, runId=test]'}, 'UnknownResourceFault', ) self.assertFalse(self.we.exists) def test_workflow_execution_exists_with_whatever_error(self): with patch.object(self.we.connection, 'describe_workflow_execution') as mock: with self.assertRaises(ResponseError): mock.side_effect = SWFResponseError( 400, "mocking exception", { '__type': 'WhateverError', 'message': 'Whatever' } ) self.domain.exists def test_is_synced_with_unsynced_workflow_execution(self): pass def test_is_synced_with_synced_workflow_execution(self): pass def test_is_synced_over_non_existent_workflow_execution(self): with patch.object( Layer1, 'describe_workflow_execution', mock_describe_workflow_execution ): workflow_execution = WorkflowExecution( self.domain, WorkflowType(self.domain, "NonExistentTestType", "1.0"), "non-existent-id" ) self.assertFalse(workflow_execution.is_synced) def test_changes_with_different_workflow_execution(self): with patch.object( Layer1, 'describe_workflow_execution', mock_describe_workflow_execution, ): workflow_execution = WorkflowExecution( self.domain, WorkflowType(self.domain, "NonExistentTestType", "1.0"), "non-existent-id" ) diffs = workflow_execution.changes self.assertIsNotNone(diffs) self.assertEqual(len(diffs), 7) self.assertTrue(hasattr(diffs[0], 'attr')) self.assertTrue(hasattr(diffs[0], 'local')) self.assertTrue(hasattr(diffs[0], 'upstream')) def test_workflow_execution_changes_with_identical_workflow_execution(self): with patch.object( Layer1, 'describe_workflow_execution', mock_describe_workflow_execution, ): mocked = mock_describe_workflow_execution() workflow_execution = WorkflowExecution( self.domain, mocked['executionInfo']['execution']['workflowId'], run_id=mocked['executionInfo']['execution']['runId'], status=mocked['executionInfo']['executionStatus'], task_list=mocked['executionConfiguration']['taskList']['name'], child_policy=mocked['executionConfiguration']['childPolicy'], execution_timeout=mocked['executionConfiguration']['executionStartToCloseTimeout'], tag_list=mocked['executionInfo']['tagList'], decision_tasks_timeout=mocked['executionConfiguration']['taskStartToCloseTimeout'], ) diffs = workflow_execution.changes self.assertEqual(len(diffs), 0) def test_history(self): with patch.object( self.we.connection, 'get_workflow_execution_history', mock_get_workflow_execution_history ): history = self.we.history() self.assertIsInstance(history, History)