~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Tarmac
  • Author(s): Vincent Ladeuil
  • Date: 2017-01-30 14:42:05 UTC
  • mfrom: (6620.1.1 trunk)
  • Revision ID: tarmac-20170130144205-r8fh2xpmiuxyozpv
Merge  2.7 into trunk including fix for bug #1657238 [r=vila]

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007-2011 Canonical Ltd
 
1
# Copyright (C) 2007-2012, 2016 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
19
19
import os
20
20
import xmlrpclib
21
21
 
 
22
import bzrlib
22
23
from bzrlib import (
23
24
    debug,
24
25
    errors,
28
29
from bzrlib.branch import Branch
29
30
from bzrlib.directory_service import directories
30
31
from bzrlib.tests import (
 
32
    features,
 
33
    ssl_certs,
31
34
    TestCaseInTempDir,
32
35
    TestCaseWithMemoryTransport
33
36
)
50
53
    transport_scenarios = [
51
54
        ('http', dict(server_class=PreCannedHTTPServer,)),
52
55
        ]
53
 
    if tests.HTTPSServerFeature.available():
 
56
    if features.HTTPSServerFeature.available():
54
57
        transport_scenarios.append(
55
58
            ('https', dict(server_class=PreCannedHTTPSServer,)),
56
59
            )
120
123
        self.assertResolve('bzr+ssh://bazaar.launchpad.net/+branch/ubuntu',
121
124
                           'lp:ubuntu')
122
125
 
 
126
    def test_ubuntu_invalid(self):
 
127
        """Invalid ubuntu urls don't crash.
 
128
 
 
129
        :seealso: http://pad.lv/843900
 
130
        """
 
131
        # This ought to be natty-updates.
 
132
        self.assertRaises(errors.InvalidURL,
 
133
            self.assertResolve,
 
134
            '',
 
135
            'ubuntu:natty/updates/smartpm')
 
136
 
123
137
    def test_ubuntu_apt(self):
124
138
        self.assertResolve('bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/apt',
125
139
                           'lp:ubuntu/apt')
215
229
            self, 'apt', dict(urls=[
216
230
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
217
231
        directory = LaunchpadDirectory()
218
 
        self.assertEquals('http://bazaar.launchpad.net/~apt/apt/devel',
 
232
        self.assertEqual('http://bazaar.launchpad.net/~apt/apt/devel',
219
233
                          directory._resolve('lp:apt', factory))
220
234
        # Make sure that resolve went to the production server.
221
 
        self.assertEquals('https://xmlrpc.launchpad.net/bazaar/',
 
235
        self.assertEqual('https://xmlrpc.launchpad.net/bazaar/',
222
236
                          factory._service_url)
223
237
 
224
238
    def test_qastaging(self):
228
242
                    'http://bazaar.qastaging.launchpad.net/~apt/apt/devel']))
229
243
        url = 'lp://qastaging/apt'
230
244
        directory = LaunchpadDirectory()
231
 
        self.assertEquals('http://bazaar.qastaging.launchpad.net/~apt/apt/devel',
 
245
        self.assertEqual('http://bazaar.qastaging.launchpad.net/~apt/apt/devel',
232
246
                          directory._resolve(url, factory))
233
247
        # Make sure that resolve went to the qastaging server.
234
 
        self.assertEquals('https://xmlrpc.qastaging.launchpad.net/bazaar/',
 
248
        self.assertEqual('https://xmlrpc.qastaging.launchpad.net/bazaar/',
235
249
                          factory._service_url)
236
250
 
237
251
    def test_staging(self):
241
255
                    'http://bazaar.staging.launchpad.net/~apt/apt/devel']))
242
256
        url = 'lp://staging/apt'
243
257
        directory = LaunchpadDirectory()
244
 
        self.assertEquals('http://bazaar.staging.launchpad.net/~apt/apt/devel',
 
258
        self.assertEqual('http://bazaar.staging.launchpad.net/~apt/apt/devel',
245
259
                          directory._resolve(url, factory))
246
260
        # Make sure that resolve went to the staging server.
247
 
        self.assertEquals('https://xmlrpc.staging.launchpad.net/bazaar/',
 
261
        self.assertEqual('https://xmlrpc.staging.launchpad.net/bazaar/',
248
262
                          factory._service_url)
249
263
 
250
264
    def test_url_from_directory(self):
253
267
            self, 'apt', dict(urls=[
254
268
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
255
269
        directory = LaunchpadDirectory()
256
 
        self.assertEquals('http://bazaar.launchpad.net/~apt/apt/devel',
 
270
        self.assertEqual('http://bazaar.launchpad.net/~apt/apt/devel',
257
271
                          directory._resolve('lp:///apt', factory))
258
272
 
259
273
    def test_directory_skip_bad_schemes(self):
263
277
                    'http://bazaar.launchpad.net/~apt/apt/devel',
264
278
                    'http://another/location']))
265
279
        directory = LaunchpadDirectory()
266
 
        self.assertEquals('http://bazaar.launchpad.net/~apt/apt/devel',
 
280
        self.assertEqual('http://bazaar.launchpad.net/~apt/apt/devel',
267
281
                          directory._resolve('lp:///apt', factory))
268
282
 
269
283
    def test_directory_no_matching_schemes(self):
295
309
                    'bzr+ssh://bazaar.launchpad.net/~apt/apt/devel',
296
310
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
297
311
        directory = LaunchpadDirectory()
298
 
        self.assertEquals('http://bazaar.launchpad.net/~apt/apt/devel',
 
312
        self.assertEqual('http://bazaar.launchpad.net/~apt/apt/devel',
299
313
                          directory._resolve('lp:///apt', factory))
300
314
 
301
315
    def test_skip_sftp_launchpad_net_when_anonymous(self):
307
321
                    'sftp://bazaar.launchpad.net/~apt/apt/devel',
308
322
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
309
323
        directory = LaunchpadDirectory()
310
 
        self.assertEquals('http://bazaar.launchpad.net/~apt/apt/devel',
 
324
        self.assertEqual('http://bazaar.launchpad.net/~apt/apt/devel',
311
325
                          directory._resolve('lp:///apt', factory))
312
326
 
313
327
    def test_with_login_avoid_resolve_factory(self):
318
332
                    'bzr+ssh://my-super-custom/special/devel',
319
333
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
320
334
        directory = LaunchpadDirectory()
321
 
        self.assertEquals(
 
335
        self.assertEqual(
322
336
            'bzr+ssh://bazaar.launchpad.net/+branch/apt',
323
337
            directory._resolve('lp:///apt', factory, _lp_login='username'))
324
338
 
330
344
                    'bzr+ssh://example.com/~apt/apt/devel',
331
345
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
332
346
        directory = LaunchpadDirectory()
333
 
        self.assertEquals('bzr+ssh://example.com/~apt/apt/devel',
 
347
        self.assertEqual('bzr+ssh://example.com/~apt/apt/devel',
334
348
                          directory._resolve('lp:///apt', factory))
335
349
 
336
350
    # TODO: check we get an error if the url is unreasonable
344
358
            self, '~username/apt/test', dict(urls=[
345
359
                'bzr+ssh://bazaar.launchpad.net/~username/apt/test']))
346
360
        directory = LaunchpadDirectory()
347
 
        self.assertEquals(
 
361
        self.assertEqual(
348
362
            'bzr+ssh://bazaar.launchpad.net/~username/apt/test',
349
363
            directory._resolve('lp:~/apt/test', factory, _lp_login='username'))
350
364
        # Should also happen when the login is just set by config
351
365
        set_lp_login('username')
352
 
        self.assertEquals(
 
366
        self.assertEqual(
353
367
            'bzr+ssh://bazaar.launchpad.net/~username/apt/test',
354
368
            directory._resolve('lp:~/apt/test', factory))
355
369
 
425
439
    pass
426
440
 
427
441
 
428
 
if tests.HTTPSServerFeature.available():
 
442
if features.HTTPSServerFeature.available():
429
443
    from bzrlib.tests import https_server
430
444
    class PreCannedHTTPSServer(PreCannedServerMixin, https_server.HTTPSServer):
431
445
        pass
437
451
    server_class = None
438
452
 
439
453
    def setUp(self):
440
 
        tests.TestCase.setUp(self)
 
454
        super(TestXMLRPCTransport, self).setUp()
441
455
        self.server = self.server_class()
442
456
        self.server.start_server()
 
457
        self.addCleanup(self.server.stop_server)
443
458
        # Ensure we don't clobber env
444
459
        self.overrideEnv('BZR_LP_XMLRPC_URL', None)
445
 
 
446
 
    def tearDown(self):
447
 
        self.server.stop_server()
448
 
        tests.TestCase.tearDown(self)
 
460
        # Ensure we use the right certificates for https.
 
461
        # FIXME: There should be a better way but the only alternative I can
 
462
        # think of involves carrying the ca_certs through the lp_registration
 
463
        # infrastructure to _urllib2_wrappers... -- vila 2012-01-20
 
464
        bzrlib.global_state.cmdline_overrides._from_cmdline(
 
465
            ['ssl.ca_certs=%s' % ssl_certs.build_path('ca.crt')])
449
466
 
450
467
    def set_canned_response(self, server, path):
451
468
        response_format = '''HTTP/1.1 200 OK\r
491
508
        result = self.do_request(self.server.get_url())
492
509
        urls = result.get('urls', None)
493
510
        self.assertIsNot(None, urls)
494
 
        self.assertEquals(
 
511
        self.assertEqual(
495
512
            ['bzr+ssh://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev',
496
513
             'http://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev'],
497
514
            urls)