/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/test_url_policy_open.py

  • Committer: Jelmer Vernooij
  • Date: 2019-06-16 02:23:42 UTC
  • mfrom: (7340 work)
  • mto: This revision was merged to the branch mainline in revision 7350.
  • Revision ID: jelmer@jelmer.uk-20190616022342-ihxzayq04x5culzd
merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
    ControlDir,
31
31
    ControlDirFormat,
32
32
    )
33
 
from ..errors import NotBranchError
 
33
from ..errors import (
 
34
    NotBranchError,
 
35
    RedirectRequested,
 
36
    )
34
37
from ..url_policy_open import (
35
38
    BadUrl,
36
39
    _BlacklistPolicy,
44
47
    TestCase,
45
48
    TestCaseWithTransport,
46
49
    )
47
 
from ..transport import chroot
 
50
from ..transport import (
 
51
    chroot,
 
52
    get_transport,
 
53
    register_transport_proto,
 
54
    register_transport,
 
55
    unregister_transport,
 
56
    transport_list_registry,
 
57
    Transport,
 
58
    )
48
59
 
49
60
 
50
61
class TestBranchOpenerCheckAndFollowBranchReference(TestCase):
305
316
            set(TrackingProber.seen_urls), {b.base, a.base})
306
317
 
307
318
 
 
319
class TestRedirects(TestCaseWithTransport):
 
320
 
 
321
    def setUp(self):
 
322
        super(TestRedirects, self).setUp()
 
323
        BranchOpener.install_hook()
 
324
 
 
325
    def setup_redirect(self, target_url):
 
326
        class RedirectingTransport(Transport):
 
327
 
 
328
            def get(self, name):
 
329
                raise RedirectRequested(self.base, target_url)
 
330
 
 
331
            def _redirected_to(self, source, target):
 
332
                return get_transport(target)
 
333
 
 
334
        register_transport_proto(
 
335
            'redirecting://', help="Test transport that redirects.")
 
336
        register_transport('redirecting://', RedirectingTransport)
 
337
        self.addCleanup(unregister_transport, 'redirecting://', RedirectingTransport)
 
338
 
 
339
    def make_branch_opener(self, allowed_urls, probers=None):
 
340
        policy = WhitelistPolicy(True, allowed_urls, True)
 
341
        return BranchOpener(policy, probers)
 
342
 
 
343
    def test_redirect_forbidden(self):
 
344
        b = self.make_branch('b')
 
345
        self.setup_redirect(b.base)
 
346
        class TrackingProber(BzrProber):
 
347
            seen_urls = []
 
348
 
 
349
            @classmethod
 
350
            def probe_transport(klass, transport):
 
351
                klass.seen_urls.append(transport.base)
 
352
                return BzrProber.probe_transport(transport)
 
353
 
 
354
        opener = self.make_branch_opener(['redirecting:///'], probers=[TrackingProber])
 
355
        self.assertRaises(BadUrl, opener.open, 'redirecting:///')
 
356
 
 
357
        opener = self.make_branch_opener(['redirecting:///', b.base], probers=[TrackingProber])
 
358
        opener.open('redirecting:///')
 
359
 
 
360
 
308
361
class TestOpenOnlyScheme(TestCaseWithTransport):
309
362
    """Tests for `open_only_scheme`."""
310
363