diff --git a/setup.py b/setup.py index fa3083d8..b2829f78 100755 --- a/setup.py +++ b/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) diff --git a/urlrewrite/rewriterapp.py b/urlrewrite/rewriterapp.py index fc630d8f..9ccc13ad 100644 --- a/urlrewrite/rewriterapp.py +++ b/urlrewrite/rewriterapp.py @@ -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 diff --git a/urlrewrite/test/__init__.py b/urlrewrite/test/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/urlrewrite/test/simpleapp.py b/urlrewrite/test/simpleapp.py new file mode 100644 index 00000000..046691ea --- /dev/null +++ b/urlrewrite/test/simpleapp.py @@ -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/') + 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) + + diff --git a/urlrewrite/test/test_rewriter.py b/urlrewrite/test/test_rewriter.py new file mode 100644 index 00000000..66cbffc6 --- /dev/null +++ b/urlrewrite/test/test_rewriter.py @@ -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 + + + + + diff --git a/urlrewrite/test/uwsgi.ini b/urlrewrite/test/uwsgi.ini new file mode 100644 index 00000000..ea3a22c3 --- /dev/null +++ b/urlrewrite/test/uwsgi.ini @@ -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 + +