1
0
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:
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 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)

View File

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

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