From 81198a782a3be1976acea80afc5b9626bd2fd93d Mon Sep 17 00:00:00 2001 From: gengchc2 Date: Tue, 25 Dec 2018 01:15:06 -0800 Subject: [PATCH] Add raise unit test for update and replace tuple in sqlalchemy Change-Id: I6f244639954db856f713e08f7c3dfdb2618f4ecd --- freezer_api/db/sqlalchemy/api.py | 3 --- .../unit/sqlalchemy/v1/test_api_common.py | 22 ++++++++++++++++ .../unit/sqlalchemy/v2/test_api_common.py | 25 +++++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/freezer_api/db/sqlalchemy/api.py b/freezer_api/db/sqlalchemy/api.py index 591acc90..fd5fae94 100644 --- a/freezer_api/db/sqlalchemy/api.py +++ b/freezer_api/db/sqlalchemy/api.py @@ -197,12 +197,9 @@ def update_tuple(tablename, user_id, tuple_id, tuple_values, project_id=None): query = query.filter_by(user_id=user_id).filter_by(id=tuple_id) result = query.update(tuple_values) except Exception as e: - session.close() raise freezer_api_exc.StorageEngineError( message='Mysql operation failed {0}'.format(e)) - session.close() - if not result: raise freezer_api_exc.DocumentNotFound( message='Tuple not registered with ID' diff --git a/freezer_api/tests/unit/sqlalchemy/v1/test_api_common.py b/freezer_api/tests/unit/sqlalchemy/v1/test_api_common.py index 54e0b048..29fb4194 100644 --- a/freezer_api/tests/unit/sqlalchemy/v1/test_api_common.py +++ b/freezer_api/tests/unit/sqlalchemy/v1/test_api_common.py @@ -146,3 +146,25 @@ class ApiTestCase(base.DbTestCase): mock_tuple.save.side_effect = Exception('regular test failure') self.assertRaises(freezer_api_exc.StorageEngineError, api.add_tuple, mock_tuple) + + @patch('oslo_db.sqlalchemy.utils.model_query') + def test_raises_update_tuple(self, mock_model_query): + mock_tuple_values = mock.MagicMock() + mock_model_query.side_effect = Exception('regular test failure') + self.assertRaises(freezer_api_exc.StorageEngineError, + api.update_tuple, models.Job, self.fake_user_id, + self.fake_job_id, mock_tuple_values) + + def test_raises_update_tuple_notfound(self): + mock_tuple_values = mock.MagicMock() + self.assertRaises(freezer_api_exc.DocumentNotFound, + api.update_tuple, models.Job, self.fake_user_id, + self.fake_job_id, mock_tuple_values) + + @patch('oslo_db.sqlalchemy.utils.model_query') + def test_raises_replace_tuple(self, mock_model_query): + mock_tuple_values = mock.MagicMock() + mock_model_query.side_effect = Exception('regular test failure') + self.assertRaises(freezer_api_exc.StorageEngineError, + api.replace_tuple, models.Job, self.fake_user_id, + self.fake_job_id, mock_tuple_values) diff --git a/freezer_api/tests/unit/sqlalchemy/v2/test_api_common.py b/freezer_api/tests/unit/sqlalchemy/v2/test_api_common.py index 9c78fc6a..29bbcf9f 100644 --- a/freezer_api/tests/unit/sqlalchemy/v2/test_api_common.py +++ b/freezer_api/tests/unit/sqlalchemy/v2/test_api_common.py @@ -154,3 +154,28 @@ class ApiTestCase(base.DbTestCase): mock_tuple.save.side_effect = Exception('regular test failure') self.assertRaises(freezer_api_exc.StorageEngineError, api.add_tuple, mock_tuple) + + @patch('oslo_db.sqlalchemy.utils.model_query') + def test_raises_update_tuple(self, mock_model_query): + mock_tuple_values = mock.MagicMock() + mock_model_query.side_effect = Exception('regular test failure') + self.assertRaises(freezer_api_exc.StorageEngineError, + api.update_tuple, models.Job, self.fake_user_id, + self.fake_job_id, mock_tuple_values, + project_id=self.fake_project_id) + + def test_raises_update_tuple_notfound(self): + mock_tuple_values = mock.MagicMock() + self.assertRaises(freezer_api_exc.DocumentNotFound, + api.update_tuple, models.Job, self.fake_user_id, + self.fake_job_id, mock_tuple_values, + project_id=self.fake_project_id) + + @patch('oslo_db.sqlalchemy.utils.model_query') + def test_raises_replace_tuple(self, mock_model_query): + mock_tuple_values = mock.MagicMock() + mock_model_query.side_effect = Exception('regular test failure') + self.assertRaises(freezer_api_exc.StorageEngineError, + api.replace_tuple, models.Job, self.fake_user_id, + self.fake_job_id, mock_tuple_values, + project_id=self.fake_project_id)