def test_kwargs(self): with mock.patch(self.mock_one) as mock_action_one: with mock.patch(self.mock_two) as mock_action_two: builder = utils.ActionBuilder(["action_one", "action_two"]) builder.bind_action("action_one", mock_action_one, a=1, b=2) builder.bind_action("action_two", mock_action_two, c=3) actions = builder.build_actions([{ "action_two": 3 }, { "action_one": 4 }]) for action in actions: action() self.assertEqual(4, mock_action_one.call_count, "action one not called 4 times") mock_calls = [] for i in range(4): mock_calls.append(mock.call(a=1, b=2)) mock_action_one.assert_has_calls(mock_calls) self.assertEqual(3, mock_action_two.call_count, "action two not called 3 times") mock_calls = [] for i in range(3): mock_calls.append(mock.call(c=3)) mock_action_two.assert_has_calls(mock_calls) with mock.patch(self.mock_one) as mock_action_one: with mock.patch(self.mock_two) as mock_action_two: builder = utils.ActionBuilder(["action_one", "action_two"]) builder.bind_action("action_one", mock_action_one, a=1, b=2) builder.bind_action("action_two", mock_action_two, c=3) actions = builder.build_actions([{ "action_two": 3 }, { "action_one": 4 }], d=4, e=5) for action in actions: action() self.assertEqual(4, mock_action_one.call_count, "action one not called 4 times") mock_calls = [] for i in range(4): mock_calls.append(mock.call(a=1, b=2, d=4, e=5)) mock_action_one.assert_has_calls(mock_calls) self.assertEqual(3, mock_action_two.call_count, "action two not called 3 times") mock_calls = [] for i in range(3): mock_calls.append(mock.call(c=3, d=4, e=5)) mock_action_two.assert_has_calls(mock_calls)
def test_positional_args(self): with mock.patch(self.mock_one) as mock_action_one: with mock.patch(self.mock_two) as mock_action_two: builder = utils.ActionBuilder(["action_one", "action_two"]) builder.bind_action("action_one", mock_action_one, "a", "b") builder.bind_action("action_two", mock_action_two, "c") actions = builder.build_actions([{ "action_two": 3 }, { "action_one": 4 }]) for action in actions: action() self.assertEqual(4, mock_action_one.call_count, "action one not called 4 times") mock_calls = [] for i in range(4): mock_calls.append(mock.call("a", "b")) mock_action_one.assert_has_calls(mock_calls) self.assertEqual(3, mock_action_two.call_count, "action two not called 3 times") mock_calls = [] for i in range(3): mock_calls.append(mock.call("c")) mock_action_two.assert_has_calls(mock_calls) with mock.patch(self.mock_one) as mock_action_one: with mock.patch(self.mock_two) as mock_action_two: builder = utils.ActionBuilder(["action_one", "action_two"]) builder.bind_action("action_one", mock_action_one, "a", "b") builder.bind_action("action_two", mock_action_two, "c") actions = builder.build_actions([{ "action_two": 3 }, { "action_one": 4 }], "d", 5) for action in actions: action() self.assertEqual(4, mock_action_one.call_count, "action one not called 4 times") mock_calls = [] for i in range(4): mock_calls.append(mock.call("a", "b", "d", 5)) mock_action_one.assert_has_calls(mock_calls) self.assertEqual(3, mock_action_two.call_count, "action two not called 3 times") mock_calls = [] for i in range(3): mock_calls.append(mock.call("c", "d", 5)) mock_action_two.assert_has_calls(mock_calls)
def test_invalid_schema(self): builder = utils.ActionBuilder(["action_one", "action_two"]) self.assertRaises(schema_exceptions.ValidationError, builder.validate, [{ "action_oone": 1 }, { "action_twoo": 2 }]) self.assertRaises(schema_exceptions.ValidationError, builder.validate, [{ "action_one": -1 }, { "action_two": 2 }]) self.assertRaises(schema_exceptions.ValidationError, builder.validate, [{ "action_one": 0 }, { "action_two": 2 }]) self.assertRaises(schema_exceptions.ValidationError, builder.validate, [{ 1: 0 }, { "action_two": 2 }]) self.assertRaises(schema_exceptions.ValidationError, builder.validate, [{ "action_two": "action_two" }])
def _bind_actions(self): actions = [ "hard_reboot", "soft_reboot", "stop_start", "rescue_unrescue" ] action_builder = task_utils.ActionBuilder(actions) action_builder.bind_action("hard_reboot", self._reboot_server) action_builder.bind_action("soft_reboot", self._soft_reboot_server) action_builder.bind_action("stop_start", self._stop_and_start_server) action_builder.bind_action("rescue_unrescue", self._rescue_and_unrescue_server) return action_builder
def _bind_actions(self): actions = [ "hard_reboot", "soft_reboot", "stop_start", "rescue_unrescue", "pause_unpause", "suspend_resume", "lock_unlock", "shelve_unshelve" ] action_builder = utils.ActionBuilder(actions) action_builder.bind_action("hard_reboot", self._reboot_server) action_builder.bind_action("soft_reboot", self._soft_reboot_server) action_builder.bind_action("stop_start", self._stop_and_start_server) action_builder.bind_action("rescue_unrescue", self._rescue_and_unrescue_server) action_builder.bind_action("pause_unpause", self._pause_and_unpause_server) action_builder.bind_action("suspend_resume", self._suspend_and_resume_server) action_builder.bind_action("lock_unlock", self._lock_and_unlock_server) action_builder.bind_action("shelve_unshelve", self._shelve_and_unshelve_server) return action_builder
def test_invalid_bind(self): builder = utils.ActionBuilder(["action_one"]) self.assertRaises(schema_exceptions.ValidationError, builder.bind_action, "missing", action_one)
def test_invalid_keyword(self): builder = utils.ActionBuilder(["action_one", "action_two"]) self.assertRaises(schema_exceptions.ValidationError, builder.build_actions, [{ "missing": 1 }])