From afa4b499936ab0c24c764b5e0b9ac6e157dfc932 Mon Sep 17 00:00:00 2001 From: Vilobh Meshram Date: Mon, 24 Aug 2015 18:59:36 -0700 Subject: [PATCH] Fix unit test for replication controller Replication Controller is missing unit test for getting the replication controller object by name. This patch adds the needed test. This patch also adds the missing tenant filter that was missing initially. Change-Id: I28bb71f9fba4a335f67324d264bea06d0313d58d Closes-Bug: #1488295 --- magnum/db/api.py | 3 ++- magnum/db/sqlalchemy/api.py | 7 ++++--- magnum/objects/replicationcontroller.py | 2 +- magnum/tests/unit/db/test_replicationcontroller.py | 6 +++--- .../tests/unit/objects/test_replicationcontroller.py | 10 ++++++++++ 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/magnum/db/api.py b/magnum/db/api.py index c418e1f8c8..fddd12253f 100644 --- a/magnum/db/api.py +++ b/magnum/db/api.py @@ -638,9 +638,10 @@ class Connection(object): """ @abc.abstractmethod - def get_rc_by_name(self, rc_name): + def get_rc_by_name(self, context, rc_name): """Return a ReplicationController. + :param context: The security context :param rc_name: The name of a ReplicationController. :returns: A ReplicationController. """ diff --git a/magnum/db/sqlalchemy/api.py b/magnum/db/sqlalchemy/api.py index 106748f12e..772de9551b 100644 --- a/magnum/db/sqlalchemy/api.py +++ b/magnum/db/sqlalchemy/api.py @@ -894,9 +894,10 @@ class Connection(api.Connection): except NoResultFound: raise exception.ReplicationControllerNotFound(bay=bay_uuid) - def get_rc_by_name(self, rc_name): - query = model_query(models.ReplicationController).filter_by( - name=rc_name) + def get_rc_by_name(self, context, rc_name): + query = model_query(models.ReplicationController) + query = self._add_tenant_filters(context, query) + query = query.filter_by(name=rc_name) try: return query.one() except MultipleResultsFound: diff --git a/magnum/objects/replicationcontroller.py b/magnum/objects/replicationcontroller.py index f95d215f7c..84fae81393 100644 --- a/magnum/objects/replicationcontroller.py +++ b/magnum/objects/replicationcontroller.py @@ -95,7 +95,7 @@ class ReplicationController(base.MagnumPersistentObject, base.MagnumObject, :param context: Security context :returns: a :class:`ReplicationController` object. """ - db_rc = cls.dbapi.get_rc_by_name(name) + db_rc = cls.dbapi.get_rc_by_name(context, name) rc = ReplicationController._from_db_object(cls(context), db_rc) return rc diff --git a/magnum/tests/unit/db/test_replicationcontroller.py b/magnum/tests/unit/db/test_replicationcontroller.py index e079d0d1e9..8ce41da550 100644 --- a/magnum/tests/unit/db/test_replicationcontroller.py +++ b/magnum/tests/unit/db/test_replicationcontroller.py @@ -49,7 +49,7 @@ class DbRCTestCase(base.DbTestCase): self.assertEqual(self.rc.uuid, rc.uuid) def test_get_rc_by_name(self): - res = self.dbapi.get_rc_by_name(self.rc.name) + res = self.dbapi.get_rc_by_name(self.context, self.rc.name) self.assertEqual(self.rc.name, res.name) self.assertEqual(self.rc.uuid, res.uuid) @@ -57,11 +57,11 @@ class DbRCTestCase(base.DbTestCase): utils.create_test_rc(bay_uuid=self.bay.uuid, uuid=magnum_utils.generate_uuid()) self.assertRaises(exception.Conflict, self.dbapi.get_rc_by_name, - self.rc.name) + self.context, self.rc.name) def test_get_rc_by_name_not_found(self): self.assertRaises(exception.ReplicationControllerNotFound, - self.dbapi.get_rc_by_name, + self.dbapi.get_rc_by_name, self.context, 'not_found') def test_get_rc_that_does_not_exist(self): diff --git a/magnum/tests/unit/objects/test_replicationcontroller.py b/magnum/tests/unit/objects/test_replicationcontroller.py index 658b0629f0..51ac3e7a78 100644 --- a/magnum/tests/unit/objects/test_replicationcontroller.py +++ b/magnum/tests/unit/objects/test_replicationcontroller.py @@ -48,6 +48,16 @@ class TestReplicationControllerObject(base.DbTestCase): mock_get_rc.assert_called_once_with(self.context, uuid) self.assertEqual(self.context, rc._context) + def test_get_by_name(self): + name = self.fake_rc['name'] + with mock.patch.object(self.dbapi, 'get_rc_by_name', + autospec=True) as mock_get_rc: + mock_get_rc.return_value = self.fake_rc + rc = objects.ReplicationController.get_by_name(self.context, + name) + mock_get_rc.assert_called_once_with(self.context, name) + self.assertEqual(self.context, rc._context) + def test_list(self): with mock.patch.object(self.dbapi, 'get_rc_list', autospec=True) as mock_get_list: