From 26b85d8e523f2b6aafbe18132efcd617ae892228 Mon Sep 17 00:00:00 2001 From: Duda Dornelles Date: Tue, 27 Jan 2015 16:08:03 -0200 Subject: #237 #232 #196 syncing user data once before starting the UA. Displaying a loading screen in the meantime. The initial sync will make sure the user has a single key pair --- service/test/unit/config/test_app_factory.py | 13 ++++-- service/test/unit/config/test_dispatcher.py | 59 ++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 service/test/unit/config/test_dispatcher.py (limited to 'service/test/unit/config') diff --git a/service/test/unit/config/test_app_factory.py b/service/test/unit/config/test_app_factory.py index a42c7c83..b09ffd4c 100644 --- a/service/test/unit/config/test_app_factory.py +++ b/service/test/unit/config/test_app_factory.py @@ -13,20 +13,25 @@ class AppFactoryTest(unittest.TestCase): self.host = host self.sslkey = sslkey self.sslcert = sslcert + self.home = 'leap_home' + @patch('pixelated.config.app_factory.init_app') @patch('pixelated.config.app_factory.reactor') - def test_that_create_app_binds_to_tcp_port_if_no_ssl_options(self, reactor_mock): + def test_that_create_app_binds_to_tcp_port_if_no_ssl_options(self, reactor_mock, init_app_mock): app_mock = MagicMock() + leap_session = MagicMock() - create_app(app_mock, AppFactoryTest.MockConfig(12345, '127.0.0.1')) + create_app(app_mock, AppFactoryTest.MockConfig(12345, '127.0.0.1'), leap_session) reactor_mock.listenTCP.assert_called_once_with(12345, ANY, interface='127.0.0.1') + @patch('pixelated.config.app_factory.init_app') @patch('pixelated.config.app_factory.reactor') - def test_that_create_app_binds_to_ssl_if_ssl_options(self, reactor_mock): + def test_that_create_app_binds_to_ssl_if_ssl_options(self, reactor_mock, init_app_mock): app_mock = MagicMock() + leap_session = MagicMock() pixelated.config.app_factory._ssl_options = lambda _: 'options' - create_app(app_mock, AppFactoryTest.MockConfig(12345, '127.0.0.1', sslkey="sslkey", sslcert="sslcert")) + create_app(app_mock, AppFactoryTest.MockConfig(12345, '127.0.0.1', sslkey="sslkey", sslcert="sslcert"), leap_session) reactor_mock.listenSSL.assert_called_once_with(12345, ANY, 'options', interface='127.0.0.1') diff --git a/service/test/unit/config/test_dispatcher.py b/service/test/unit/config/test_dispatcher.py new file mode 100644 index 00000000..ad85a63c --- /dev/null +++ b/service/test/unit/config/test_dispatcher.py @@ -0,0 +1,59 @@ +import json +import unittest +import thread +import sys +from mockito import mock, when +import os +from pixelated.config import App +from pixelated.config.args import parse as parse_args + +from pixelated.config.dispatcher import config_dispatcher + + +class TestConfigDispatcher(unittest.TestCase): + + def setUp(self): + self.app = App() + self.test_data = {'leap_provider_hostname': 'test_provider', 'user': 'test_user', 'password': 'test_password'} + + def test_that_organization_switch_reads_the_credentials_from_pipe(self): + fifo_path = '/tmp/credentials-pipe' + + sys.argv = ['tmp/does_not_exist', '--dispatcher', fifo_path] + args = parse_args() + + self._mkfifo(fifo_path) + + config_dispatcher(self.app, args) + + self.assertEquals('test_provider', self.app['LEAP_SERVER_NAME']) + self.assertEquals('test_user', self.app['LEAP_USERNAME']) + self.assertEquals('test_password', self.app['LEAP_PASSWORD']) + + def test_that_organization_switch_reads_the_credentials_from_stdin(self): + data = json.dumps({'leap_provider_hostname': 'test_provider', 'user': 'test_user', 'password': 'test_password'}) + orig_stdin = sys.stdin + sys.stdin = mock() + when(sys.stdin).read().thenReturn(data) + + try: + sys.argv = ['tmp/does_not_exist', '--dispatcher-stdin'] + args = parse_args() + + config_dispatcher(self.app, args) + + self.assertEquals('test_provider', self.app['LEAP_SERVER_NAME']) + self.assertEquals('test_user', self.app['LEAP_USERNAME']) + self.assertEquals('test_password', self.app['LEAP_PASSWORD']) + finally: + sys.stdin = orig_stdin + + def _spin_up_fifo(self, test_fifo): + with open(test_fifo, 'w') as fifo: + fifo.write(json.dumps(self.test_data)) + + def _mkfifo(self, fifo_path): + if os.path.exists(fifo_path): + os.remove(fifo_path) + os.mkfifo('/tmp/credentials-pipe') + thread.start_new_thread(self._spin_up_fifo, (fifo_path,)) -- cgit v1.2.3