def setUp(self, stack, HSSPeerListener, HSSAppListener): unittest.TestCase.setUp(self) self.dstack = mock.MagicMock() stack.Stack.return_value = self.dstack self.peer_listener = mock.MagicMock() HSSPeerListener.return_value = self.peer_listener self.app_listener = mock.MagicMock() HSSAppListener.return_value = self.app_listener settings.PASSWORD_ENCRYPTION_KEY = "TOPSECRET" settings.HSS_ENABLED = True settings.HSS_IP = "example.com" settings.HSS_PORT = 3868 self.gateway = HSSGateway()
class TestHSSGateway(unittest.TestCase): """ Detailed, isolated unit tests of the HSSGateway class. """ @mock.patch("metaswitch.crest.api.homestead.hss.gateway.HSSAppListener") @mock.patch("metaswitch.crest.api.homestead.hss.gateway.HSSPeerListener") @mock.patch("diameter.stack") def setUp(self, stack, HSSPeerListener, HSSAppListener): unittest.TestCase.setUp(self) self.dstack = mock.MagicMock() stack.Stack.return_value = self.dstack self.peer_listener = mock.MagicMock() HSSPeerListener.return_value = self.peer_listener self.app_listener = mock.MagicMock() HSSAppListener.return_value = self.app_listener settings.PASSWORD_ENCRYPTION_KEY = "TOPSECRET" settings.HSS_ENABLED = True settings.HSS_IP = "example.com" settings.HSS_PORT = 3868 self.gateway = HSSGateway() def test_hss_enabled(self): settings.HSS_ENABLED = False self.assertRaises(HSSNotEnabled, HSSGateway) # There is a fair amount of code here, for testing what is essentially a # pretty simple function. The verbosity comes from correctly mocking out # the deferred inlineCallbacks decorated functions, which are inherently # more complex than standard functions - even if they appear similar. # These tests also act as a good example of testing inlineCallback functions, # with the same techniques applied to more complicated functions later def test_get_digest(self): self.peer_listener.fetch_multimedia_auth.return_value = defer.Deferred() get_deferred = self.gateway.get_digest("priv", "pub") self.peer_listener.fetch_multimedia_auth.assert_called_once_with("priv", "pub") get_callback = mock.MagicMock() get_deferred.addCallback(get_callback) self.peer_listener.fetch_multimedia_auth.return_value.callback("digest") self.assertEquals(get_callback.call_args[0][0], "digest") def test_get_digest_not_found(self): self.peer_listener.fetch_multimedia_auth.return_value = defer.Deferred() get_deferred = self.gateway.get_digest("priv", "pub") self.peer_listener.fetch_multimedia_auth.assert_called_once_with("priv", "pub") get_errback = mock.MagicMock() get_deferred.addErrback(get_errback) self.peer_listener.fetch_multimedia_auth.return_value.errback(HSSNotFound()) self.assertEquals(get_errback.call_args[0][0].type, HSSNotFound) def test_get_ifc(self): self.peer_listener.fetch_server_assignment.return_value = defer.Deferred() get_deferred = self.gateway.get_ifc("priv", "pub") self.peer_listener.fetch_server_assignment.assert_called_once_with("priv", "pub") get_callback = mock.MagicMock() get_deferred.addCallback(get_callback) # server_assignmetn returns both the public ids and the iFC. We only care about the iFC self.peer_listener.fetch_server_assignment.return_value.callback(([], "ifc")) self.assertEquals(get_callback.call_args[0][0], "ifc") def test_get_ifc_not_found(self): self.peer_listener.fetch_server_assignment.return_value = defer.Deferred() get_deferred = self.gateway.get_ifc("priv", "pub") self.peer_listener.fetch_server_assignment.assert_called_once_with("priv", "pub") get_errback = mock.MagicMock() get_deferred.addErrback(get_errback) self.peer_listener.fetch_server_assignment.return_value.errback(HSSNotFound()) self.assertEquals(get_errback.call_args[0][0].type, HSSNotFound) def test_get_public_ids(self): self.peer_listener.fetch_server_assignment.return_value = defer.Deferred() get_deferred = self.gateway.get_public_ids("priv", "pub") self.peer_listener.fetch_server_assignment.assert_called_once_with("priv", "pub") get_callback = mock.MagicMock() get_deferred.addCallback(get_callback) # server_assignmetn returns both the public ids and the iFC. We only care about the ids self.peer_listener.fetch_server_assignment.return_value.callback((["pub1", "pub2"], "ifc")) self.assertEquals(get_callback.call_args[0][0], ["pub1", "pub2"]) def test_get_public_ids_not_found(self): self.peer_listener.fetch_server_assignment.return_value = defer.Deferred() get_deferred = self.gateway.get_public_ids("priv", "pub") self.peer_listener.fetch_server_assignment.assert_called_once_with("priv", "pub") get_errback = mock.MagicMock() get_deferred.addErrback(get_errback) self.peer_listener.fetch_server_assignment.return_value.errback(HSSNotFound()) self.assertEquals(get_errback.call_args[0][0].type, HSSNotFound)
class TestHSSGateway(unittest.TestCase): """ Detailed, isolated unit tests of the HSSGateway class. """ @mock.patch("metaswitch.crest.api.homestead.hss.gateway.HSSAppListener") @mock.patch("metaswitch.crest.api.homestead.hss.gateway.HSSPeerListener") @mock.patch("diameter.stack") def setUp(self, stack, HSSPeerListener, HSSAppListener): unittest.TestCase.setUp(self) self.dstack = mock.MagicMock() stack.Stack.return_value = self.dstack self.peer_listener = mock.MagicMock() HSSPeerListener.return_value = self.peer_listener self.app_listener = mock.MagicMock() HSSAppListener.return_value = self.app_listener settings.PASSWORD_ENCRYPTION_KEY = "TOPSECRET" settings.HSS_ENABLED = True settings.HSS_IP = "example.com" settings.HSS_PORT = 3868 self.gateway = HSSGateway() def test_hss_enabled(self): settings.HSS_ENABLED = False self.assertRaises(HSSNotEnabled, HSSGateway) # There is a fair amount of code here, for testing what is essentially a # pretty simple function. The verbosity comes from correctly mocking out # the deferred inlineCallbacks decorated functions, which are inherently # more complex than standard functions - even if they appear similar. # These tests also act as a good example of testing inlineCallback functions, # with the same techniques applied to more complicated functions later def test_get_digest(self): self.peer_listener.fetch_multimedia_auth.return_value = defer.Deferred( ) get_deferred = self.gateway.get_digest("priv", "pub") self.peer_listener.fetch_multimedia_auth.assert_called_once_with( "priv", "pub") get_callback = mock.MagicMock() get_deferred.addCallback(get_callback) self.peer_listener.fetch_multimedia_auth.return_value.callback( "digest") self.assertEquals(get_callback.call_args[0][0], "digest") def test_get_digest_not_found(self): self.peer_listener.fetch_multimedia_auth.return_value = defer.Deferred( ) get_deferred = self.gateway.get_digest("priv", "pub") self.peer_listener.fetch_multimedia_auth.assert_called_once_with( "priv", "pub") get_errback = mock.MagicMock() get_deferred.addErrback(get_errback) self.peer_listener.fetch_multimedia_auth.return_value.errback( HSSNotFound()) self.assertEquals(get_errback.call_args[0][0].type, HSSNotFound) def test_get_ifc(self): self.peer_listener.fetch_server_assignment.return_value = defer.Deferred( ) get_deferred = self.gateway.get_ifc("priv", "pub") self.peer_listener.fetch_server_assignment.assert_called_once_with( "priv", "pub") get_callback = mock.MagicMock() get_deferred.addCallback(get_callback) # server_assignmetn returns both the public ids and the iFC. We only care about the iFC self.peer_listener.fetch_server_assignment.return_value.callback( ([], "ifc")) self.assertEquals(get_callback.call_args[0][0], "ifc") def test_get_ifc_not_found(self): self.peer_listener.fetch_server_assignment.return_value = defer.Deferred( ) get_deferred = self.gateway.get_ifc("priv", "pub") self.peer_listener.fetch_server_assignment.assert_called_once_with( "priv", "pub") get_errback = mock.MagicMock() get_deferred.addErrback(get_errback) self.peer_listener.fetch_server_assignment.return_value.errback( HSSNotFound()) self.assertEquals(get_errback.call_args[0][0].type, HSSNotFound) def test_get_public_ids(self): self.peer_listener.fetch_server_assignment.return_value = defer.Deferred( ) get_deferred = self.gateway.get_public_ids("priv", "pub") self.peer_listener.fetch_server_assignment.assert_called_once_with( "priv", "pub") get_callback = mock.MagicMock() get_deferred.addCallback(get_callback) # server_assignmetn returns both the public ids and the iFC. We only care about the ids self.peer_listener.fetch_server_assignment.return_value.callback( (["pub1", "pub2"], "ifc")) self.assertEquals(get_callback.call_args[0][0], ["pub1", "pub2"]) def test_get_public_ids_not_found(self): self.peer_listener.fetch_server_assignment.return_value = defer.Deferred( ) get_deferred = self.gateway.get_public_ids("priv", "pub") self.peer_listener.fetch_server_assignment.assert_called_once_with( "priv", "pub") get_errback = mock.MagicMock() get_deferred.addErrback(get_errback) self.peer_listener.fetch_server_assignment.return_value.errback( HSSNotFound()) self.assertEquals(get_errback.call_args[0][0].type, HSSNotFound)