1
# Copyright (C) 2007, 2009, 2010 Canonical Ltd
1
# Copyright (C) 2005, 2007, 2009 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
91
91
class TestSMTPConnection(tests.TestCaseInTempDir):
93
93
def get_connection(self, text, smtp_factory=None):
94
my_config = config.GlobalConfig.from_string(text)
94
my_config = config.GlobalConfig()
95
config_file = StringIO(text)
96
my_config._get_parser(config_file)
95
97
return smtp_connection.SMTPConnection(my_config,
96
98
_smtp_factory=smtp_factory)
159
161
def test_authenticate_with_byte_strings(self):
161
unicode_pass = u'h\xECspass'
162
utf8_pass = unicode_pass.encode('utf-8')
163
password = 'h\xC3\xACspass'
163
164
factory = WideOpenSMTPFactory()
164
165
conn = self.get_connection(
165
u'[DEFAULT]\nsmtp_username=%s\nsmtp_password=%s\n'
166
% (user, unicode_pass), smtp_factory=factory)
167
self.assertEqual(unicode_pass, conn._smtp_password)
166
'[DEFAULT]\nsmtp_username=%s\nsmtp_password=%s\n'
167
% (user, password), smtp_factory=factory)
168
self.assertEqual(u'h\xECspass', conn._smtp_password)
169
170
self.assertEqual([('connect', 'localhost'),
171
172
('has_extn', 'starttls'),
172
('login', user, utf8_pass)], factory._calls)
173
('login', user, password)], factory._calls)
173
174
smtp_username, smtp_password = factory._calls[-1][1:]
174
175
self.assertIsInstance(smtp_username, str)
175
176
self.assertIsInstance(smtp_password, str)