def test_bgkube_migrate_rollback_executes_db_migrations_rollback_command_when_supplied( self, exec_mock): tag, prev_state = get_random_int(), get_random_str() self.bgkube.db_migrations_rollback_command = get_random_str() self.bgkube.migrate_rollback(tag, prev_state) exec_mock.assert_called_once_with( tag, self.bgkube.db_migrations_rollback_command, prev_state)
def test_bgkube_migrate_apply_returns_stdout_from_db_migrations_status_command_when_supplied( self, exec_mock): tag = get_random_int() exec_mock.return_value = get_random_str() self.bgkube.db_migrations_status_command = get_random_str() stdout = self.bgkube.migrate_apply(tag) self.assertEqual(stdout, exec_mock.return_value) exec_mock.assert_called_once_with( tag, self.bgkube.db_migrations_status_command)
def test_bgkube_migrate_applies_latest_migrations_when_recurring_deployment( self, init_mock, apply_mock, env_mock): env_mock.return_value = get_random_str() apply_mock.return_value = get_random_str() tag = get_random_int() is_initial, prev_state = self.bgkube.migrate(tag) self.assertEqual(is_initial, False) self.assertEqual(prev_state, apply_mock.return_value) init_mock.assert_not_called() apply_mock.assert_called_once_with(tag)
def test_bgkube_apply_calls_kube_api_apply_with_expected_attributes( self, apply_mock): filename = get_random_str() tag = get_random_int() color = get_random_str() bg = self.bgkube bg.apply('object description', filename, tag, color) apply_mock.assert_called_once_with(filename, bg.env_file, TAG=tag, COLOR=color, ENV_FILE=bg.env_file)
def test_bgkube_migrate_rollback_does_not_execute_empty_db_migrations_rollback_command( self, exec_mock): tag, prev_state = get_random_int(), get_random_str() self.bgkube.db_migrations_rollback_command = None self.bgkube.migrate_rollback(tag, prev_state) exec_mock.assert_not_called()
def test_bgkube_migrate_apply_executes_db_migrations_apply_command_when_supplied( self, exec_mock): tag = get_random_int() self.bgkube.db_migrations_apply_command = get_random_str() self.bgkube.migrate_apply(tag) exec_mock.assert_called_once_with( tag, self.bgkube.db_migrations_apply_command)
def test_bgkube_active_env_returns_public_service_selector_color_when_found( self, resource_mock): service = Mock(obj={'spec': {'selector': {'color': get_random_str()}}}) resource_mock.return_value = service env = self.bgkube.active_env() self.assertEqual(env, service.obj['spec']['selector']['color']) resource_mock.assert_called_once_with('Service', self.bgkube.service_name)
def test_bgkube_publish_does_not_swap_to_newly_deployed_env_when_smoke_tests_fail( self, swap_mock, smoke_mock, deploy_mock, migrate_mock, push_mock, build_mock): is_initial, prev_state = False, None build_mock.return_value = get_random_int() deploy_mock.return_value = get_random_str() migrate_mock.return_value = is_initial, prev_state smoke_mock.return_value = False self.assertRaises(ActionFailedError, self.bgkube.publish) swap_mock.assert_not_called()
def test_bgkube_migrate_performs_initial_migrations_when_initial_deployment( self, init_mock, apply_mock, env_mock): env_mock.return_value = None apply_mock.return_value = get_random_str() tag = get_random_int() is_initial, prev_state = self.bgkube.migrate(tag) self.assertEqual(is_initial, True) self.assertIsNone(prev_state) init_mock.assert_called_once_with(tag) apply_mock.assert_not_called()
def test_main_get_parser_args_match_bgkube_attributes(self): args = [ arg.dest for arg in get_parser()._actions if arg.dest not in ['help', 'command', 'command_args'] ] options = Mock( ** {arg: get_random_str() for arg in args if arg in BgKube.required}) bg = BgKube(options) for name in args: self.assertIsNotNone(getattr(bg, name, None), name)
def test_bgkube_pod_exec_runs_command_on_any_ready_pod_from_kube_api_and_returns_stdout( self, start_mock, pod_mock): pod = Mock(ready=False, name='pod1') ready_pod = Mock(ready=True, name='pod2') pod_mock.return_value = [pod, ready_pod] start_mock.return_value = get_random_str() tag, command, arg1, arg2 = get_random_int( ), 'echo', '"hello"', '"world' stdout = self.bgkube.pod_exec(tag, command, arg1, arg2) self.assertEqual(stdout, start_mock.return_value) pod_mock.assert_called_once_with(tag=tag) start_mock.assert_called_once_with(cmd.KUBECTL_EXEC.format( pod=ready_pod.name, command=command, args=' '.join([arg1, arg2])), capture=True)
def test_bgkube_publish_swaps_to_newly_deployed_env_when_smoke_tests_pass( self, swap_mock, smoke_mock, deploy_mock, migrate_mock, push_mock, build_mock): new_tag = get_random_int() new_color = get_random_str() is_initial, prev_state = False, None build_mock.return_value = new_tag deploy_mock.return_value = new_color migrate_mock.return_value = is_initial, prev_state smoke_mock.return_value = True self.bgkube.publish() push_mock.assert_called_once_with(new_tag) migrate_mock.assert_called_once_with(new_tag) smoke_mock.assert_called_once_with(new_color) swap_mock.assert_called_once_with(new_color)