1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-14 15:53:28 +01:00
pywb/tests_disabled/test_proxy_http_ip_redis.py
Ilya Kreymer a4b770d34e new-pywb refactor!
frontendapp compatibility
- add support for separate not found page for 404s (not_found.html)
- support for exception handling with error template (error.html)
- support for home page (index.html)
- add memento headers for replay
- add referrer fallback check
- tests: port integration tests for front-end replay, cdx server
- not included: proxy mode, exact redirect mode, non-framed replay
- move unused tests to tests_disabled
- cli: add optional werkzeug profiler with --profile flag
2017-02-27 19:07:51 -08:00

99 lines
3.8 KiB
Python

from pytest import raises
import webtest
import base64
from pywb.webapp.pywb_init import create_wb_router
from pywb.framework.wsgi_wrappers import init_app
from pywb.cdx.cdxobject import CDXObject
from six.moves.urllib.parse import urlsplit
from .server_mock import make_setup_module, BaseIntegration
setup_module = make_setup_module('tests/test_config_proxy_ip_redis.yaml')
from fakeredis import FakeStrictRedis
import pywb.framework.cache
pywb.framework.cache.StrictRedis = FakeStrictRedis
class TestProxyIPRedisResolver(BaseIntegration):
def _assert_basic_html(self, resp):
assert resp.status_int == 200
assert resp.content_type == 'text/html'
assert resp.content_length > 0
def _assert_basic_text(self, resp):
assert resp.status_int == 200
assert resp.content_type == 'text/plain'
assert resp.content_length > 0
def get_url(self, uri, addr='127.0.0.1'):
parts = urlsplit(uri)
env = dict(REQUEST_URI=uri, QUERY_STRING=parts.query, SCRIPT_NAME='', REMOTE_ADDR=addr)
# 'Simulating' proxy by settings REQUEST_URI explicitly to full url with empty SCRIPT_NAME
return self.testapp.get('/x-ignore-this-x', extra_environ=env)
def test_proxy_ip_default_ts(self):
resp = self.get_url('http://www.iana.org/')
self._assert_basic_html(resp)
assert '"20140127171238"' in resp.text
assert 'wb.js' in resp.text
def test_proxy_ip_get_defaults(self):
resp = self.get_url('http://info.pywb.proxy/')
assert resp.content_type == 'application/json'
assert resp.json == {'ip': '127.0.0.1', 'coll': None, 'ts': None}
def test_proxy_ip_set_ts(self):
resp = self.get_url('http://info.pywb.proxy/set?ts=1996')
assert resp.content_type == 'application/json'
assert resp.json == {'ip': '127.0.0.1', 'coll': None, 'ts': '1996'}
def test_proxy_ip_set_ts_coll(self):
resp = self.get_url('http://info.pywb.proxy/set?ts=1996&coll=all')
assert resp.content_type == 'application/json'
assert resp.json == {'ip': '127.0.0.1', 'coll': 'all', 'ts': '1996'}
def test_proxy_ip_set_ts_coll_diff_ip(self):
resp = self.get_url('http://info.pywb.proxy/set?ts=2006&coll=all', '127.0.0.2')
assert resp.content_type == 'application/json'
assert resp.json == {'ip': '127.0.0.2', 'coll': 'all', 'ts': '2006'}
# from previous response
resp = self.get_url('http://info.pywb.proxy/')
assert resp.json == {'ip': '127.0.0.1', 'coll': 'all', 'ts': '1996'}
resp = self.get_url('http://info.pywb.proxy/set?ip=127.0.0.2&ts=2005')
assert resp.json == {'ip': '127.0.0.2', 'coll': 'all', 'ts': '2005'}
resp = self.get_url('http://info.pywb.proxy/', '127.0.0.2')
assert resp.json == {'ip': '127.0.0.2', 'coll': 'all', 'ts': '2005'}
def test_proxy_ip_change_ts_for_ip(self):
resp = self.get_url('http://info.pywb.proxy/set?ip=1.2.3.4&ts=20140126200624')
assert resp.json == {'ip': '1.2.3.4', 'coll': None, 'ts': '20140126200624'}
# different ts for this ip
resp = self.get_url('http://www.iana.org/', '1.2.3.4')
self._assert_basic_html(resp)
assert '"20140126200624"' in resp.text
# defaults for any other ip
resp = self.get_url('http://www.iana.org/', '127.0.0.3')
self._assert_basic_html(resp)
assert '"20140127171238"' in resp.text
def test_proxy_ip_delete_ip(self):
resp = self.get_url('http://info.pywb.proxy/')
assert resp.json == {'ip': '127.0.0.1', 'coll': 'all', 'ts': '1996'}
resp = self.get_url('http://info.pywb.proxy/set?delete=true')
assert resp.json == {'ip': '127.0.0.1', 'coll': None, 'ts': None}
resp = self.get_url('http://info.pywb.proxy/')
assert resp.json == {'ip': '127.0.0.1', 'coll': None, 'ts': None}