305
316
set(TrackingProber.seen_urls), {b.base, a.base})
319
class TestRedirects(TestCaseWithTransport):
322
super(TestRedirects, self).setUp()
323
BranchOpener.install_hook()
325
def setup_redirect(self, target_url):
326
class RedirectingTransport(Transport):
329
raise RedirectRequested(self.base, target_url)
331
def _redirected_to(self, source, target):
332
return get_transport(target)
334
register_transport_proto(
335
'redirecting://', help="Test transport that redirects.")
336
register_transport('redirecting://', RedirectingTransport)
337
self.addCleanup(unregister_transport, 'redirecting://', RedirectingTransport)
339
def make_branch_opener(self, allowed_urls, probers=None):
340
policy = WhitelistPolicy(True, allowed_urls, True)
341
return BranchOpener(policy, probers)
343
def test_redirect_forbidden(self):
344
b = self.make_branch('b')
345
self.setup_redirect(b.base)
346
class TrackingProber(BzrProber):
350
def probe_transport(klass, transport):
351
klass.seen_urls.append(transport.base)
352
return BzrProber.probe_transport(transport)
354
opener = self.make_branch_opener(['redirecting:///'], probers=[TrackingProber])
355
self.assertRaises(BadUrl, opener.open, 'redirecting:///')
357
opener = self.make_branch_opener(['redirecting:///', b.base], probers=[TrackingProber])
358
opener.open('redirecting:///')
308
361
class TestOpenOnlyScheme(TestCaseWithTransport):
309
362
"""Tests for `open_only_scheme`."""