~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,
29
30
from bzrlib.directory_service import directories
30
31
from bzrlib.tests import (
31
32
    features,
 
33
    ssl_certs,
32
34
    TestCaseInTempDir,
33
35
    TestCaseWithMemoryTransport
34
36
)
121
123
        self.assertResolve('bzr+ssh://bazaar.launchpad.net/+branch/ubuntu',
122
124
                           'lp:ubuntu')
123
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
 
124
137
    def test_ubuntu_apt(self):
125
138
        self.assertResolve('bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/apt',
126
139
                           'lp:ubuntu/apt')
216
229
            self, 'apt', dict(urls=[
217
230
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
218
231
        directory = LaunchpadDirectory()
219
 
        self.assertEquals('http://bazaar.launchpad.net/~apt/apt/devel',
 
232
        self.assertEqual('http://bazaar.launchpad.net/~apt/apt/devel',
220
233
                          directory._resolve('lp:apt', factory))
221
234
        # Make sure that resolve went to the production server.
222
 
        self.assertEquals('https://xmlrpc.launchpad.net/bazaar/',
 
235
        self.assertEqual('https://xmlrpc.launchpad.net/bazaar/',
223
236
                          factory._service_url)
224
237
 
225
238
    def test_qastaging(self):
229
242
                    'http://bazaar.qastaging.launchpad.net/~apt/apt/devel']))
230
243
        url = 'lp://qastaging/apt'
231
244
        directory = LaunchpadDirectory()
232
 
        self.assertEquals('http://bazaar.qastaging.launchpad.net/~apt/apt/devel',
 
245
        self.assertEqual('http://bazaar.qastaging.launchpad.net/~apt/apt/devel',
233
246
                          directory._resolve(url, factory))
234
247
        # Make sure that resolve went to the qastaging server.
235
 
        self.assertEquals('https://xmlrpc.qastaging.launchpad.net/bazaar/',
 
248
        self.assertEqual('https://xmlrpc.qastaging.launchpad.net/bazaar/',
236
249
                          factory._service_url)
237
250
 
238
251
    def test_staging(self):
242
255
                    'http://bazaar.staging.launchpad.net/~apt/apt/devel']))
243
256
        url = 'lp://staging/apt'
244
257
        directory = LaunchpadDirectory()
245
 
        self.assertEquals('http://bazaar.staging.launchpad.net/~apt/apt/devel',
 
258
        self.assertEqual('http://bazaar.staging.launchpad.net/~apt/apt/devel',
246
259
                          directory._resolve(url, factory))
247
260
        # Make sure that resolve went to the staging server.
248
 
        self.assertEquals('https://xmlrpc.staging.launchpad.net/bazaar/',
 
261
        self.assertEqual('https://xmlrpc.staging.launchpad.net/bazaar/',
249
262
                          factory._service_url)
250
263
 
251
264
    def test_url_from_directory(self):
254
267
            self, 'apt', dict(urls=[
255
268
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
256
269
        directory = LaunchpadDirectory()
257
 
        self.assertEquals('http://bazaar.launchpad.net/~apt/apt/devel',
 
270
        self.assertEqual('http://bazaar.launchpad.net/~apt/apt/devel',
258
271
                          directory._resolve('lp:///apt', factory))
259
272
 
260
273
    def test_directory_skip_bad_schemes(self):
264
277
                    'http://bazaar.launchpad.net/~apt/apt/devel',
265
278
                    'http://another/location']))
266
279
        directory = LaunchpadDirectory()
267
 
        self.assertEquals('http://bazaar.launchpad.net/~apt/apt/devel',
 
280
        self.assertEqual('http://bazaar.launchpad.net/~apt/apt/devel',
268
281
                          directory._resolve('lp:///apt', factory))
269
282
 
270
283
    def test_directory_no_matching_schemes(self):
296
309
                    'bzr+ssh://bazaar.launchpad.net/~apt/apt/devel',
297
310
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
298
311
        directory = LaunchpadDirectory()
299
 
        self.assertEquals('http://bazaar.launchpad.net/~apt/apt/devel',
 
312
        self.assertEqual('http://bazaar.launchpad.net/~apt/apt/devel',
300
313
                          directory._resolve('lp:///apt', factory))
301
314
 
302
315
    def test_skip_sftp_launchpad_net_when_anonymous(self):
308
321
                    'sftp://bazaar.launchpad.net/~apt/apt/devel',
309
322
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
310
323
        directory = LaunchpadDirectory()
311
 
        self.assertEquals('http://bazaar.launchpad.net/~apt/apt/devel',
 
324
        self.assertEqual('http://bazaar.launchpad.net/~apt/apt/devel',
312
325
                          directory._resolve('lp:///apt', factory))
313
326
 
314
327
    def test_with_login_avoid_resolve_factory(self):
319
332
                    'bzr+ssh://my-super-custom/special/devel',
320
333
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
321
334
        directory = LaunchpadDirectory()
322
 
        self.assertEquals(
 
335
        self.assertEqual(
323
336
            'bzr+ssh://bazaar.launchpad.net/+branch/apt',
324
337
            directory._resolve('lp:///apt', factory, _lp_login='username'))
325
338
 
331
344
                    'bzr+ssh://example.com/~apt/apt/devel',
332
345
                    'http://bazaar.launchpad.net/~apt/apt/devel']))
333
346
        directory = LaunchpadDirectory()
334
 
        self.assertEquals('bzr+ssh://example.com/~apt/apt/devel',
 
347
        self.assertEqual('bzr+ssh://example.com/~apt/apt/devel',
335
348
                          directory._resolve('lp:///apt', factory))
336
349
 
337
350
    # TODO: check we get an error if the url is unreasonable
345
358
            self, '~username/apt/test', dict(urls=[
346
359
                'bzr+ssh://bazaar.launchpad.net/~username/apt/test']))
347
360
        directory = LaunchpadDirectory()
348
 
        self.assertEquals(
 
361
        self.assertEqual(
349
362
            'bzr+ssh://bazaar.launchpad.net/~username/apt/test',
350
363
            directory._resolve('lp:~/apt/test', factory, _lp_login='username'))
351
364
        # Should also happen when the login is just set by config
352
365
        set_lp_login('username')
353
 
        self.assertEquals(
 
366
        self.assertEqual(
354
367
            'bzr+ssh://bazaar.launchpad.net/~username/apt/test',
355
368
            directory._resolve('lp:~/apt/test', factory))
356
369
 
438
451
    server_class = None
439
452
 
440
453
    def setUp(self):
441
 
        tests.TestCase.setUp(self)
 
454
        super(TestXMLRPCTransport, self).setUp()
442
455
        self.server = self.server_class()
443
456
        self.server.start_server()
 
457
        self.addCleanup(self.server.stop_server)
444
458
        # Ensure we don't clobber env
445
459
        self.overrideEnv('BZR_LP_XMLRPC_URL', None)
446
 
 
447
 
    def tearDown(self):
448
 
        self.server.stop_server()
449
 
        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')])
450
466
 
451
467
    def set_canned_response(self, server, path):
452
468
        response_format = '''HTTP/1.1 200 OK\r
492
508
        result = self.do_request(self.server.get_url())
493
509
        urls = result.get('urls', None)
494
510
        self.assertIsNot(None, urls)
495
 
        self.assertEquals(
 
511
        self.assertEqual(
496
512
            ['bzr+ssh://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev',
497
513
             'http://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev'],
498
514
            urls)