~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/plugins/launchpad/test_register.py

  • Committer: Patch Queue Manager
  • Date: 2016-01-31 13:36:59 UTC
  • mfrom: (6613.1.5 1538480-match-hostname)
  • Revision ID: pqm@pqm.ubuntu.com-20160131133659-ouy92ee2wlv9xz8m
(vila) Use ssl.match_hostname instead of our own. (Vincent Ladeuil)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 Canonical Ltd
 
1
# Copyright (C) 2006-2011 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
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
import base64
18
 
import os
19
18
from StringIO import StringIO
20
19
import urlparse
21
20
import xmlrpclib
22
21
 
23
22
from bzrlib import (
24
23
    config,
25
 
    osutils,
26
24
    tests,
27
25
    ui,
28
26
    )
29
 
from bzrlib.tests import TestCaseWithTransport, TestSkipped
 
27
from bzrlib.tests import TestCaseWithTransport
30
28
 
31
29
# local import
32
30
from bzrlib.plugins.launchpad.lp_registration import (
61
59
        """
62
60
        return (200, 'OK', [])
63
61
 
 
62
    def getresponse(self, buffering=True):
 
63
        """Fake the http reply.
 
64
 
 
65
        This is used when running on Python 2.7, where xmlrpclib uses
 
66
        httplib.HTTPConnection in a different way than before.
 
67
        """
 
68
        class FakeHttpResponse(object):
 
69
 
 
70
            def __init__(self, status, reason, body):
 
71
                self.status = status
 
72
                self.reason = reason
 
73
                self.body = body
 
74
 
 
75
            def read(self, size=-1):
 
76
                return self.body.read(size)
 
77
 
 
78
            def getheader(self, name, default):
 
79
                # We don't have headers
 
80
                return default
 
81
 
 
82
        return FakeHttpResponse(200, 'OK', self.getfile())
 
83
 
64
84
    def getfile(self):
65
85
        """Return a fake file containing the response content."""
66
86
        return StringIO('''\
85
105
    def __init__(self, testcase, expect_auth):
86
106
        self.testcase = testcase
87
107
        self.expect_auth = expect_auth
 
108
        self._connection = (None, None)
88
109
 
89
110
    def make_connection(self, host):
90
111
        host, http_headers, x509 = self.get_host_info(host)
133
154
 
134
155
 
135
156
class TestBranchRegistration(TestCaseWithTransport):
136
 
    SAMPLE_URL = 'http://bazaar-vcs.org/bzr/bzr.dev/'
137
 
    SAMPLE_OWNER = 'jhacker@foo.com'
138
 
    SAMPLE_BRANCH_ID = 'bzr.dev'
139
157
 
140
158
    def setUp(self):
141
159
        super(TestBranchRegistration, self).setUp()
142
160
        # make sure we have a reproducible standard environment
143
 
        self._captureVar('BZR_LP_XMLRPC_URL', None)
 
161
        self.overrideEnv('BZR_LP_XMLRPC_URL', None)
144
162
 
145
163
    def test_register_help(self):
146
164
        """register-branch accepts --help"""
175
193
        self.assertEquals(out, 'Branch registered.\n')
176
194
 
177
195
    def test_onto_transport(self):
178
 
        """Test how the request is sent by transmitting across a mock Transport"""
 
196
        """How the request is sent by transmitting across a mock Transport"""
179
197
        # use a real transport, but intercept at the http/xml layer
180
198
        transport = InstrumentedXMLRPCTransport(self, expect_auth=True)
181
199
        service = LaunchpadService(transport)
200
218
        self.assertTrue(transport.got_request)
201
219
 
202
220
    def test_onto_transport_unauthenticated(self):
203
 
        """Test how an unauthenticated request is transmitted across a mock Transport"""
 
221
        """An unauthenticated request is transmitted across a mock Transport"""
204
222
        transport = InstrumentedXMLRPCTransport(self, expect_auth=False)
205
223
        service = LaunchpadService(transport)
206
224
        resolve = ResolveLaunchpadPathRequest('bzr')
299
317
    def setUp(self):
300
318
        super(TestGatherUserCredentials, self).setUp()
301
319
        # make sure we have a reproducible standard environment
302
 
        self._captureVar('BZR_LP_XMLRPC_URL', None)
 
320
        self.overrideEnv('BZR_LP_XMLRPC_URL', None)
303
321
 
304
322
    def test_gather_user_credentials_has_password(self):
305
323
        service = LaunchpadService()
311
329
    def test_gather_user_credentials_from_auth_conf(self):
312
330
        auth_path = config.authentication_config_filename()
313
331
        service = LaunchpadService()
314
 
        g_conf = config.GlobalConfig()
315
 
        g_conf.set_user_option('email', 'Test User <test@user.com>')
 
332
        g_conf = config.GlobalStack()
 
333
        g_conf.set('email', 'Test User <test@user.com>')
 
334
        g_conf.store.save()
 
335
        # FIXME: auth_path base dir exists only because bazaar.conf has just
 
336
        # been saved, brittle... -- vila 20120731
316
337
        f = open(auth_path, 'wb')
317
338
        try:
318
339
            scheme, hostinfo = urlparse.urlsplit(service.service_url)[:2]
332
353
    def test_gather_user_credentials_prompts(self):
333
354
        service = LaunchpadService()
334
355
        self.assertIs(None, service.registrant_password)
335
 
        g_conf = config.GlobalConfig()
336
 
        g_conf.set_user_option('email', 'Test User <test@user.com>')
 
356
        g_conf = config.GlobalStack()
 
357
        g_conf.set('email', 'Test User <test@user.com>')
 
358
        g_conf.store.save()
337
359
        stdout = tests.StringIOWrapper()
338
360
        stderr = tests.StringIOWrapper()
339
361
        ui.ui_factory = tests.TestUIFactory(stdin='userpass\n',