Beispiel #1
0
 def test_redirect_to_same_host(self):
     finished = self.fetcher.fetch_title('http://foo.test/',
                                         hostname_tag=True)
     request, result = self.protocol.requests.pop()
     redirect_headers = Headers()
     redirect_headers.addRawHeader('Location', 'http://foo.test/bar')
     response = Response._construct(('HTTP', 1, 1), 301,
                                    'Moved Permanently', redirect_headers,
                                    AbortableStringTransport(), request)
     result.callback(response)
     request, result = self.protocol.requests.pop()
     response = Response._construct(('HTTP', 1, 1), 200, 'OK', Headers(),
                                    AbortableStringTransport(), request)
     result.callback(response)
     finished.addCallback(self.assertEqual, u'[foo.test] Unknown document')
     return finished
Beispiel #2
0
 def test_no_redirect(self):
     finished = self.fetcher.fetch_title('http://foo.test/',
                                         hostname_tag=True)
     request, result = self.protocol.requests.pop()
     response = Response._construct(('HTTP', 1, 1), 200, 'OK', Headers(),
                                    AbortableStringTransport(), request)
     result.callback(response)
     finished.addCallback(self.assertEqual, u'[foo.test] Unknown document')
     return finished
Beispiel #3
0
 def test_tag_iri_to_uri(self):
     finished = self.fetcher.fetch_title(u'http://ドメイン名例.test/',
                                         hostname_tag=True)
     request, result = self.protocol.requests.pop()
     response = Response._construct(('HTTP', 1, 1), 200, 'OK', Headers(),
                                    AbortableStringTransport(), request)
     result.callback(response)
     finished.addCallback(
         self.assertEqual, u'[ドメイン名例.test → xn--eckwd4c7cu47r2wf.test] '
         u'Unknown document')
     return finished
Beispiel #4
0
 def test_soft_redirect(self):
     self.fetcher.extractors = {
         'text/html': SoftRedirectExtractor(u'http://bar.test/')
     }
     finished = self.fetcher.fetch_title('http://foo.test/',
                                         hostname_tag=True)
     request, result = self.protocol.requests.pop()
     redirect_headers = Headers()
     redirect_headers.addRawHeader('Content-Type', 'text/html')
     response = Response._construct(('HTTP', 1, 1), 200, 'OK',
                                    redirect_headers,
                                    AbortableStringTransport(), request)
     result.callback(response)
     request, result = self.protocol.requests.pop()
     response = Response._construct(('HTTP', 1, 1), 200, 'OK', Headers(),
                                    AbortableStringTransport(), request)
     result.callback(response)
     finished.addCallback(self.assertEqual,
                          u'[foo.test → bar.test] Unknown document')
     return finished
Beispiel #5
0
 def assert_delivery(self, data, expected):
     finished = Deferred()
     finished.addCallback(self.assertEqual, expected)
     response = Response(('HTTP', 1, 1), 200, 'OK', Headers(),
                         AbortableStringTransport())
     protocol = TruncatingReadBodyProtocol(response.code,
                                           response.phrase,
                                           finished,
                                           max_bytes=8)
     response.deliverBody(protocol)
     response._bodyDataReceived(data)
     response._bodyDataFinished()
     return finished
Beispiel #6
0
 def test_infinite_hard_redirection(self):
     finished = self.fetcher.fetch_title(u'http://foo.test/',
                                         hostname_tag=True,
                                         friendly_errors=True)
     while self.protocol.requests:
         request, result = self.protocol.requests.pop()
         redirect_headers = Headers()
         redirect_headers.addRawHeader('Location', 'http://foo.test/')
         response = Response._construct(
             ('HTTP', 1, 1), 301, 'Moved Permanently', redirect_headers,
             AbortableStringTransport(), request)
         result.callback(response)
     finished.addCallback(self.assertEqual,
                          u'[foo.test] Encountered too many redirects.')
     return finished
Beispiel #7
0
 def test_infinite_soft_redirection(self):
     self.fetcher.extractors = {
         'text/html': SoftRedirectExtractor(u'http://foo.test/')
     }
     finished = self.fetcher.fetch_title(u'http://foo.test/',
                                         hostname_tag=True,
                                         friendly_errors=True)
     while self.protocol.requests:
         request, result = self.protocol.requests.pop()
         redirect_headers = Headers()
         redirect_headers.addRawHeader('Content-Type', 'text/html')
         response = Response._construct(('HTTP', 1, 1), 200, 'OK',
                                        redirect_headers,
                                        AbortableStringTransport(), request)
         result.callback(response)
     finished.addCallback(self.assertEqual,
                          u'[foo.test] Encountered too many redirects.')
     return finished