~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_smtp_connection.py

  • Committer: Vincent Ladeuil
  • Date: 2010-02-10 15:46:03 UTC
  • mfrom: (4985.3.21 update)
  • mto: This revision was merged to the branch mainline in revision 5021.
  • Revision ID: v.ladeuil+lp@free.fr-20100210154603-k4no1gvfuqpzrw7p
Update performs two merges in a more logical order but stop on conflicts

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2007 Canonical Ltd
 
1
# Copyright (C) 2005, 2007, 2009 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
from cStringIO import StringIO
18
18
from email.Message import Message
19
19
import errno
20
20
import smtplib
21
21
import socket
22
 
import sys
23
22
 
24
23
from bzrlib import (
25
24
    config,
86
85
    """A fake smtp server that implements login by accepting anybody."""
87
86
 
88
87
    def login(self, user, password):
89
 
        pass
 
88
        self._calls.append(('login', user, password))
90
89
 
91
90
 
92
91
class TestSMTPConnection(tests.TestCaseInTempDir):
137
136
                                   smtp_factory=factory)
138
137
        self.assertIs(None, conn._smtp_password)
139
138
 
140
 
        ui.ui_factory = tests.TestUIFactory(stdin=password + '\n',
141
 
                                            stdout=tests.StringIOWrapper())
 
139
        ui.ui_factory = ui.CannedInputUIFactory([password])
142
140
        conn._connect()
143
141
        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())
146
142
 
147
143
    def test_smtp_password_from_auth_config(self):
148
144
        user = 'joe'
162
158
        conn._connect()
163
159
        self.assertEqual(password, conn._smtp_password)
164
160
 
 
161
    def test_authenticate_with_byte_strings(self):
 
162
        user = 'joe'
 
163
        password = 'h\xC3\xACspass'
 
164
        factory = WideOpenSMTPFactory()
 
165
        conn = self.get_connection(
 
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
        conn._connect()
 
170
        self.assertEqual([('connect', 'localhost'),
 
171
                          ('ehlo',),
 
172
                          ('has_extn', 'starttls'),
 
173
                          ('login', user, password)], factory._calls)
 
174
        smtp_username, smtp_password = factory._calls[-1][1:]
 
175
        self.assertIsInstance(smtp_username, str)
 
176
        self.assertIsInstance(smtp_password, str)
 
177
 
165
178
    def test_create_connection(self):
166
179
        factory = StubSMTPFactory()
167
180
        conn = self.get_connection('', smtp_factory=factory)