# # Copyright (c) 2014 ThoughtWorks, Inc. # # Pixelated is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pixelated is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see . import os from mock import MagicMock, patch from test_abstract_leap import AbstractLeapTest from pixelated.bitmask_libraries.smtp import LeapSmtp, LeapSMTPConfig class LeapSmtpTest(AbstractLeapTest): keymanager = MagicMock() def setUp(self): super(LeapSmtpTest, self).setUp() self.config.timeout_in_s = 15 self._smtp_config = LeapSMTPConfig('test_user@some-server.test', self._client_cert_path(), 'smtp.some-server.test', 1234) def _client_cert_path(self): return os.path.join(self.leap_home, 'providers', 'some-server.test', 'keys', 'client', 'smtp.pem') @patch('pixelated.bitmask_libraries.smtp.setup_smtp_gateway') def test_that_start_calls_setup_smtp_gateway(self, gateway_mock): smtp = LeapSmtp(self._smtp_config, self.keymanager) port = 500 smtp.local_smtp_port_number = port gateway_mock.return_value = (None, None) smtp.ensure_running() cert_path = self._client_cert_path() gateway_mock.assert_called_with(smtp_cert=cert_path, userid='test_user@some-server.test', smtp_port=1234, smtp_key=cert_path, keymanager=self.keymanager, encrypted_only=False, smtp_host='smtp.some-server.test', port=port) def test_that_client_stop_does_nothing_if_not_started(self): smtp = LeapSmtp(self._smtp_config, self.keymanager) smtp.stop() @patch('pixelated.bitmask_libraries.smtp.setup_smtp_gateway') def test_that_running_smtp_sevice_is_stopped(self, gateway_mock): smtp = LeapSmtp(self._smtp_config, self.keymanager) smtp_service = MagicMock() smtp_port = MagicMock() gateway_mock.return_value = (smtp_service, smtp_port) smtp.ensure_running() smtp.stop() smtp_port.stopListening.assert_called_with() smtp_service.doStop.assert_called_with()