From ad92b2b9b25c415a5fa93c545dd01f5c13fed47e Mon Sep 17 00:00:00 2001 From: Brian Warner <warner@lothar.com> Date: Tue, 21 Feb 2017 16:06:14 -0800 Subject: [PATCH] test_web: replace HEAD/PUT/DELETE with treq --- src/allmydata/test/web/test_web.py | 34 ++++++++++++++++-------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/allmydata/test/web/test_web.py b/src/allmydata/test/web/test_web.py index 460a9f54c..730845a25 100644 --- a/src/allmydata/test/web/test_web.py +++ b/src/allmydata/test/web/test_web.py @@ -1,9 +1,11 @@ import os.path, re, urllib, time, cgi import json +import treq from twisted.application import service from twisted.trial import unittest from twisted.internet import defer, reactor +from twisted.internet.defer import inlineCallbacks, returnValue from twisted.internet.task import Clock from twisted.web import client, error, http from twisted.python import failure, log @@ -27,7 +29,7 @@ from ..common import FakeCHKFileNode, FakeMutableFileNode, \ from allmydata.interfaces import IMutableFileNode, SDMF_VERSION, MDMF_VERSION from allmydata.mutable import servermap, publish, retrieve from .. import common_util as testutil -from ..common_web import HTTPClientGETFactory, HTTPClientHEADFactory +from ..common_web import HTTPClientGETFactory, do_http, Error from allmydata.client import Client, SecretHolder from .common import unknown_rwcap, unknown_rocap, unknown_immcap, FAVICON_MARKUP # create a fake uploader/downloader, and a couple of fake dirnodes, then @@ -489,25 +491,25 @@ class WebMixin(testutil.TimezoneMixin): d.addCallback(_got_data) return factory.deferred - def HEAD(self, urlpath, return_response=False, **kwargs): - # this requires some surgery, because twisted.web.client doesn't want - # to give us back the response headers. - factory = HTTPClientHEADFactory(urlpath, method="HEAD", **kwargs) - reactor.connectTCP("localhost", self.webish_port, factory) - d = factory.deferred - def _got_data(data): - return (data, factory.status, factory.response_headers) - if return_response: - d.addCallback(_got_data) - return factory.deferred - - def PUT(self, urlpath, data, **kwargs): + @inlineCallbacks + def HEAD(self, urlpath, return_response=False, headers={}): url = self.webish_url + urlpath - return client.getPage(url, method="PUT", postdata=data, **kwargs) + response = yield treq.request("head", url, persistent=False, + headers=headers) + if 400 <= response.code < 600: + raise Error(response.code, response="") + resp_headers = {} + for (key, values) in response.headers.getAllRawHeaders(): + resp_headers[key.lower()] = values + returnValue( ("", response.code, resp_headers) ) + + def PUT(self, urlpath, data, headers={}): + url = self.webish_url + urlpath + return do_http("put", url, data=data, headers=headers) def DELETE(self, urlpath): url = self.webish_url + urlpath - return client.getPage(url, method="DELETE") + return do_http("delete", url) def POST(self, urlpath, followRedirect=False, **fields): sepbase = "boogabooga"