107
107
backed by regular disk files.
110
# This can be overriden or parametrized by daughter clasess if needed, but
111
# it must exist so that the create_transport_readonly_server() method can
110
# These attributes can be overriden or parametrized by daughter clasess if
111
# needed, but must exist so that the create_transport_readonly_server()
112
# method (or any method creating an http(s) server can propagate it.
113
113
_protocol_version = None
114
_url_protocol = 'http'
116
117
super(TestCaseWithWebserver, self).setUp()
117
118
self.transport_readonly_server = http_server.HttpServer
119
120
def create_transport_readonly_server(self):
120
return self.transport_readonly_server(
121
server = self.transport_readonly_server(
121
122
protocol_version=self._protocol_version)
123
server._url_protocol = self._url_protocol
124
127
class TestCaseWithTwoWebservers(TestCaseWithWebserver):
138
141
This is mostly a hook for daughter classes.
140
return self.transport_secondary_server(
143
server = self.transport_secondary_server(
141
144
protocol_version=self._protocol_version)
145
server._url_protocol = self._url_protocol
143
148
def get_secondary_server(self):
144
149
"""Get the server instance for the secondary transport."""
147
152
self.start_server(self.__secondary_server)
148
153
return self.__secondary_server
155
def get_secondary_url(self, relpath=None):
156
base = self.get_secondary_server().get_url()
157
return self._adjust_url(base, relpath)
159
def get_secondary_transport(self, relpath=None):
160
t = get_transport(self.get_secondary_url(relpath))
161
self.assertTrue(t.is_readonly())
151
165
class ProxyServer(http_server.HttpServer):
152
166
"""A proxy test server for http transports."""
226
240
The 'old' server is redirected to the 'new' server.
244
super(TestCaseWithRedirectedWebserver, self).setUp()
245
# The redirections will point to the new server
246
self.new_server = self.get_readonly_server()
247
# The requests to the old server will be redirected to the new server
248
self.old_server = self.get_secondary_server()
229
250
def create_transport_secondary_server(self):
230
251
"""Create the secondary server redirecting to the primary server"""
231
252
new = self.get_readonly_server()
232
253
redirecting = HTTPServerRedirecting(
233
254
protocol_version=self._protocol_version)
234
255
redirecting.redirect_to(new.host, new.port)
256
redirecting._url_protocol = self._url_protocol
235
257
return redirecting
238
super(TestCaseWithRedirectedWebserver, self).setUp()
239
# The redirections will point to the new server
240
self.new_server = self.get_readonly_server()
241
# The requests to the old server will be redirected
242
self.old_server = self.get_secondary_server()
259
def get_old_url(self, relpath=None):
260
base = self.old_server.get_url()
261
return self._adjust_url(base, relpath)
263
def get_old_transport(self, relpath=None):
264
t = get_transport(self.get_old_url(relpath))
265
self.assertTrue(t.is_readonly())
268
def get_new_url(self, relpath=None):
269
base = self.new_server.get_url()
270
return self._adjust_url(base, relpath)
272
def get_new_transport(self, relpath=None):
273
t = get_transport(self.get_new_url(relpath))
274
self.assertTrue(t.is_readonly())
245
278
class AuthRequestHandler(http_server.TestingHTTPRequestHandler):