def test_redirect_resets_timeout(self):
     prober = RedirectAwareProberFactory('http://foo.bar')
     prober.timeoutCall = FakeTimeOutCall()
     prober.connect = lambda: None
     self.failIf(prober.timeoutCall.resetCalled)
     prober.redirect('http://bar.foo')
     self.failUnless(prober.timeoutCall.resetCalled)
    def _createFactoryAndStubConnectAndTimeoutCall(self, url=None):
        if url is None:
            url = 'http://foo.bar'
        prober = RedirectAwareProberFactory(url)
        prober.timeoutCall = FakeTimeOutCall()
        prober.connectCalled = False

        def connect():
            prober.connectCalled = True

        prober.connect = connect
        return prober
    def _createFactoryAndStubConnectAndTimeoutCall(self, url=None):
        if url is None:
            url = 'http://foo.bar'
        prober = RedirectAwareProberFactory(url)
        prober.timeoutCall = FakeTimeOutCall()
        prober.connectCalled = False

        def connect():
            prober.connectCalled = True

        prober.connect = connect
        return prober
    def test_RedirectAwareProber_follows_http_redirect(self):
        url = 'http://localhost:%s/redirect-to-valid-mirror/file' % self.port
        prober = RedirectAwareProberFactory(url)
        self.failUnless(prober.redirection_count == 0)
        self.failUnless(prober.url == url)
        deferred = prober.probe()

        def got_result(result):
            self.failUnless(prober.redirection_count == 1)
            new_url = 'http://localhost:%s/valid-mirror/file' % self.port
            self.failUnless(prober.url == new_url)
            self.failUnless(result == str(httplib.OK))

        return deferred.addCallback(got_result)
    def test_RedirectAwareProber_follows_http_redirect(self):
        url = 'http://localhost:%s/redirect-to-valid-mirror/file' % self.port
        prober = RedirectAwareProberFactory(url)
        self.failUnless(prober.redirection_count == 0)
        self.failUnless(prober.url == url)
        deferred = prober.probe()

        def got_result(result):
            self.failUnless(prober.redirection_count == 1)
            new_url = 'http://localhost:%s/valid-mirror/file' % self.port
            self.failUnless(prober.url == new_url)
            self.failUnless(result == str(httplib.OK))

        return deferred.addCallback(got_result)
 def test_redirect_resets_timeout(self):
     prober = RedirectAwareProberFactory('http://foo.bar')
     prober.timeoutCall = FakeTimeOutCall()
     prober.connect = lambda: None
     self.failIf(prober.timeoutCall.resetCalled)
     prober.redirect('http://bar.foo')
     self.failUnless(prober.timeoutCall.resetCalled)
 def test_redirectawareprober_fail_on_unknown_scheme(self):
     prober = RedirectAwareProberFactory(
         'http://localhost:%s/redirect-unknown-url-scheme' % self.port)
     deferred = prober.probe()
     return self.assertFailure(deferred, UnknownURLSchemeAfterRedirect)
 def test_redirectawareprober_detects_infinite_loop(self):
     prober = RedirectAwareProberFactory(
         'http://localhost:%s/redirect-infinite-loop' % self.port)
     deferred = prober.probe()
     return self.assertFailure(deferred, InfiniteLoopDetected)
 def test_redirectawareprober_fail_on_unknown_scheme(self):
     prober = RedirectAwareProberFactory(
         'http://localhost:%s/redirect-unknown-url-scheme' % self.port)
     deferred = prober.probe()
     return self.assertFailure(deferred, UnknownURLSchemeAfterRedirect)
 def test_redirectawareprober_detects_infinite_loop(self):
     prober = RedirectAwareProberFactory(
         'http://localhost:%s/redirect-infinite-loop' % self.port)
     deferred = prober.probe()
     return self.assertFailure(deferred, InfiniteLoopDetected)