~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_smtp_connection.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-03-16 16:58:03 UTC
  • mfrom: (3224.3.1 news-typo)
  • Revision ID: pqm@pqm.ubuntu.com-20080316165803-tisoc9mpob9z544o
(Matt Nordhoff) Trivial NEWS typo fix

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007, 2009, 2010, 2011 Canonical Ltd
 
1
# Copyright (C) 2005, 2007 Canonical Ltd
2
2
#
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
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
 
17
from cStringIO import StringIO
17
18
from email.Message import Message
18
19
import errno
19
20
import smtplib
20
21
import socket
 
22
import sys
21
23
 
22
24
from bzrlib import (
23
25
    config,
84
86
    """A fake smtp server that implements login by accepting anybody."""
85
87
 
86
88
    def login(self, user, password):
87
 
        self._calls.append(('login', user, password))
 
89
        pass
88
90
 
89
91
 
90
92
class TestSMTPConnection(tests.TestCaseInTempDir):
91
93
 
92
94
    def get_connection(self, text, smtp_factory=None):
93
 
        my_config = config.GlobalConfig.from_string(text)
 
95
        my_config = config.GlobalConfig()
 
96
        config_file = StringIO(text)
 
97
        my_config._get_parser(config_file)
94
98
        return smtp_connection.SMTPConnection(my_config,
95
99
                                              _smtp_factory=smtp_factory)
96
100
 
133
137
                                   smtp_factory=factory)
134
138
        self.assertIs(None, conn._smtp_password)
135
139
 
136
 
        ui.ui_factory = ui.CannedInputUIFactory([password])
 
140
        ui.ui_factory = tests.TestUIFactory(stdin=password + '\n',
 
141
                                            stdout=tests.StringIOWrapper())
137
142
        conn._connect()
138
143
        self.assertEqual(password, conn._smtp_password)
 
144
        # stdin should be empty (the provided password have been consumed)
 
145
        self.assertEqual('', ui.ui_factory.stdin.readline())
139
146
 
140
147
    def test_smtp_password_from_auth_config(self):
141
148
        user = 'joe'
155
162
        conn._connect()
156
163
        self.assertEqual(password, conn._smtp_password)
157
164
 
158
 
    def test_authenticate_with_byte_strings(self):
159
 
        user = 'joe'
160
 
        unicode_pass = u'h\xECspass'
161
 
        utf8_pass = unicode_pass.encode('utf-8')
162
 
        factory = WideOpenSMTPFactory()
163
 
        conn = self.get_connection(
164
 
            u'[DEFAULT]\nsmtp_username=%s\nsmtp_password=%s\n'
165
 
            % (user, unicode_pass), smtp_factory=factory)
166
 
        self.assertEqual(unicode_pass, conn._smtp_password)
167
 
        conn._connect()
168
 
        self.assertEqual([('connect', 'localhost'),
169
 
                          ('ehlo',),
170
 
                          ('has_extn', 'starttls'),
171
 
                          ('login', user, utf8_pass)], factory._calls)
172
 
        smtp_username, smtp_password = factory._calls[-1][1:]
173
 
        self.assertIsInstance(smtp_username, str)
174
 
        self.assertIsInstance(smtp_password, str)
175
 
 
176
165
    def test_create_connection(self):
177
166
        factory = StubSMTPFactory()
178
167
        conn = self.get_connection('', smtp_factory=factory)