Use oslo_messaging conf fixture

Oslo_messaging mocking in audit tests is a bit odd because middleware
creation must be run multiple times so that the oslo_messaging opts are
registered before the config fixture tries to set it.

If we use the oslo_messaging conf fixture then it handles all the option
registration for us correctly and removes the need for us to manually
patch get_transport.

Change-Id: Iaea2e66e9418a0426d73e1c4554c56be262a7779
This commit is contained in:
Jamie Lennox 2016-07-04 11:33:42 +10:00 committed by Steve Martinelli
parent 23808e1bae
commit 98b639aeb7
2 changed files with 5 additions and 16 deletions

View File

@ -12,6 +12,7 @@
from oslo_config import fixture as cfg_fixture
from oslo_messaging import conffixture as msg_fixture
from oslotest import createfile
from keystonemiddleware import audit
@ -60,6 +61,8 @@ class BaseAuditMiddlewareTest(utils.BaseTestCase):
createfile.CreateFileWithContent('audit', audit_map_content))
self.cfg = self.useFixture(cfg_fixture.Config())
self.msg = self.useFixture(msg_fixture.ConfFixture(self.cfg.conf))
self.cfg.conf([], project=self.PROJECT_NAME)
self.middleware = audit.AuditMiddleware(

View File

@ -10,7 +10,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import fixtures
import mock
import webob
@ -20,19 +19,6 @@ from keystonemiddleware.tests.unit.audit import base
class AuditNotifierConfigTest(base.BaseAuditMiddlewareTest):
def setUp(self):
super(AuditNotifierConfigTest, self).setUp()
f = fixtures.MockPatch('oslo_messaging.get_transport',
side_effect=self._get_transport)
self.transport_fixture = self.useFixture(f)
def _get_transport(self, conf, aliases=None, url=None):
transport = mock.MagicMock()
transport.conf = conf
conf.register_opts = mock.MagicMock()
return transport
def test_conf_middleware_log_and_default_as_messaging(self):
self.cfg.config(driver='log', group='audit_middleware_notifications')
middleware = audit.AuditMiddleware(
@ -108,7 +94,8 @@ class AuditNotifierConfigTest(base.BaseAuditMiddlewareTest):
middleware._process_request(req)
self.assertTrue(driver.called)
def test_conf_middleware_messaging_and_transport_set(self):
@mock.patch('oslo_messaging.get_transport')
def test_conf_middleware_messaging_and_transport_set(self, m):
transport_url = 'rabbit://me:passwd@host:5672/virtual_host'
self.cfg.config(driver='messaging',
transport_url=transport_url,
@ -118,7 +105,6 @@ class AuditNotifierConfigTest(base.BaseAuditMiddlewareTest):
base.FakeApp(),
audit_map_file=self.audit_map,
service_name='pycadf')
m = self.transport_fixture.mock
self.assertTrue(m.called)
# make sure first call kwarg 'url' is same as provided transport_url
self.assertEqual(transport_url, m.call_args_list[0][1]['url'])