mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 08:04:49 +01:00
tests: add basic test for rewriterapp
This commit is contained in:
parent
3b6cab1730
commit
a82e2785c7
2
setup.py
2
setup.py
@ -14,7 +14,7 @@ class PyTest(TestCommand):
|
||||
import pytest
|
||||
import sys
|
||||
import os
|
||||
cmdline = ' --cov-config .coveragerc --cov ./ -vv webagg/test/ recorder/test/'
|
||||
cmdline = ' --cov-config .coveragerc --cov ./ -vv webagg/test/ recorder/test/ urlrewrite/test/'
|
||||
errcode = pytest.main(cmdline)
|
||||
sys.exit(errcode)
|
||||
|
||||
|
@ -13,7 +13,6 @@ from pywb.cdx.cdxobject import CDXObject
|
||||
from pywb.warc.recordloader import ArcWarcRecordLoader
|
||||
from pywb.framework.wbrequestresponse import WbResponse
|
||||
|
||||
|
||||
from urlrewrite.rewriteinputreq import RewriteInputRequest
|
||||
from urlrewrite.templateview import JinjaEnv, HeadInsertView, TopFrameView, BaseInsertView
|
||||
|
||||
|
0
urlrewrite/test/__init__.py
Normal file
0
urlrewrite/test/__init__.py
Normal file
46
urlrewrite/test/simpleapp.py
Normal file
46
urlrewrite/test/simpleapp.py
Normal file
@ -0,0 +1,46 @@
|
||||
from gevent.monkey import patch_all; patch_all()
|
||||
|
||||
from bottle import run, Bottle, request, response
|
||||
|
||||
from six.moves.urllib.parse import quote
|
||||
|
||||
from pywb.utils.loaders import LocalFileLoader
|
||||
import mimetypes
|
||||
|
||||
from urlrewrite.rewriterapp import RewriterApp
|
||||
|
||||
|
||||
# ============================================================================
|
||||
class RWApp(RewriterApp):
|
||||
def __init__(self, upstream_url):
|
||||
self.upstream_url = upstream_url
|
||||
self.app = Bottle()
|
||||
self.block_loader = LocalFileLoader()
|
||||
self.init_routes()
|
||||
super(RWApp, self).__init__(True)
|
||||
|
||||
def get_upstream_url(self, url, wb_url, closest, kwargs):
|
||||
return self.upstream_url.format(url=quote(url),
|
||||
closest=closest,
|
||||
type=kwargs.get('type'))
|
||||
|
||||
def init_routes(self):
|
||||
@self.app.get('/static/__pywb/<filepath:path>')
|
||||
def server_static(filepath):
|
||||
data = self.block_loader.load('pywb/static/' + filepath)
|
||||
guessed = mimetypes.guess_type(filepath)
|
||||
if guessed[0]:
|
||||
response.headers['Content-Type'] = guessed[0]
|
||||
|
||||
return data
|
||||
|
||||
self.app.mount('/live/', self.call_with_params(type='live'))
|
||||
self.app.mount('/replay/', self.call_with_params(type='replay-testdata'))
|
||||
|
||||
|
||||
# ============================================================================
|
||||
if __name__ == "__main__":
|
||||
rwapp = RWApp('http://localhost:8080/{type}/resource/postreq?url={url}&closest={closest}')
|
||||
rwapp.app.run(port=8090)
|
||||
|
||||
|
39
urlrewrite/test/test_rewriter.py
Normal file
39
urlrewrite/test/test_rewriter.py
Normal file
@ -0,0 +1,39 @@
|
||||
|
||||
from webagg.test.testutils import LiveServerTests, BaseTestClass
|
||||
|
||||
from .simpleapp import RWApp
|
||||
|
||||
import os
|
||||
import webtest
|
||||
|
||||
|
||||
class TestRewriter(LiveServerTests, BaseTestClass):
|
||||
@classmethod
|
||||
def setup_class(cls):
|
||||
super(TestRewriter, cls).setup_class()
|
||||
cls.upstream_url = 'http://localhost:{0}'.format(cls.server.port)
|
||||
cls.upstream_url += '/{type}/resource/postreq?url={url}&closest={closest}'
|
||||
|
||||
cls.app = RWApp(cls.upstream_url)
|
||||
cls.testapp = webtest.TestApp(cls.app.app)
|
||||
|
||||
def test_replay(self):
|
||||
resp = self.testapp.get('/live/mp_/http://example.com/')
|
||||
resp.charset = 'utf-8'
|
||||
|
||||
assert '"http://localhost:80/live/mp_/http://www.iana.org/domains/example"' in resp.text
|
||||
|
||||
assert 'wbinfo.url = "http://example.com/"'
|
||||
|
||||
def test_top_frame(self):
|
||||
resp = self.testapp.get('/live/http://example.com/')
|
||||
resp.charset = 'utf-8'
|
||||
|
||||
assert '"http://localhost:80/live/mp_/http://example.com/"' in resp.text
|
||||
|
||||
assert 'wbinfo.capture_url = "http://example.com/"' in resp.text
|
||||
|
||||
|
||||
|
||||
|
||||
|
18
urlrewrite/test/uwsgi.ini
Normal file
18
urlrewrite/test/uwsgi.ini
Normal file
@ -0,0 +1,18 @@
|
||||
[uwsgi]
|
||||
if-not-env = PORT
|
||||
http-socket = :8090
|
||||
endif =
|
||||
|
||||
master = true
|
||||
buffer-size = 65536
|
||||
die-on-term = true
|
||||
|
||||
if-env = VIRTUAL_ENV
|
||||
venv = $(VIRTUAL_ENV)
|
||||
endif =
|
||||
|
||||
gevent = 100
|
||||
|
||||
wsgi = testapp
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user