1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-24 06:59:52 +01:00

tests: add basic test for rewriterapp

This commit is contained in:
Ilya Kreymer 2016-04-25 14:29:28 -07:00
parent 3b6cab1730
commit a82e2785c7
6 changed files with 104 additions and 2 deletions

View File

@ -14,7 +14,7 @@ class PyTest(TestCommand):
import pytest import pytest
import sys import sys
import os 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) errcode = pytest.main(cmdline)
sys.exit(errcode) sys.exit(errcode)

View File

@ -13,7 +13,6 @@ from pywb.cdx.cdxobject import CDXObject
from pywb.warc.recordloader import ArcWarcRecordLoader from pywb.warc.recordloader import ArcWarcRecordLoader
from pywb.framework.wbrequestresponse import WbResponse from pywb.framework.wbrequestresponse import WbResponse
from urlrewrite.rewriteinputreq import RewriteInputRequest from urlrewrite.rewriteinputreq import RewriteInputRequest
from urlrewrite.templateview import JinjaEnv, HeadInsertView, TopFrameView, BaseInsertView from urlrewrite.templateview import JinjaEnv, HeadInsertView, TopFrameView, BaseInsertView

View File

View 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)

View 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
View 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