def test_accepts_headers(self): response = pretend.stub() app = pretend.call_recorder(lambda e, s: response) environ = { "HTTP_WAREHOUSE_TOKEN": "1234", "HTTP_WAREHOUSE_PROTO": "http", "HTTP_WAREHOUSE_IP": "1.2.3.4", "HTTP_WAREHOUSE_HOST": "example.com", } start_response = pretend.stub() resp = wsgi.ProxyFixer(app, token="1234")(environ, start_response) assert resp is response assert app.calls == [ pretend.call( { "REMOTE_ADDR": "1.2.3.4", "HTTP_HOST": "example.com", "wsgi.url_scheme": "http", }, start_response, ), ]
def test_accepts_x_forwarded_headers(self): response = pretend.stub() app = pretend.call_recorder(lambda e, s: response) environ = { "HTTP_X_FORWARDED_PROTO": "http", "HTTP_X_FORWARDED_FOR": "1.2.3.4", "HTTP_X_FORWARDED_HOST": "example.com", "HTTP_SOME_OTHER_HEADER": "woop", } start_response = pretend.stub() resp = wsgi.ProxyFixer(app, token=None)(environ, start_response) assert resp is response assert app.calls == [ pretend.call( { "HTTP_SOME_OTHER_HEADER": "woop", "REMOTE_ADDR": "1.2.3.4", "HTTP_HOST": "example.com", "wsgi.url_scheme": "http", }, start_response, ), ]
def test_missing_headers(self): response = pretend.stub() app = pretend.call_recorder(lambda e, s: response) environ = {"HTTP_WAREHOUSE_TOKEN": "1234"} start_response = pretend.stub() resp = wsgi.ProxyFixer(app, token="1234")(environ, start_response) assert resp is response assert app.calls == [pretend.call({}, start_response)]
def test_skips_x_forwarded_when_not_enough(self): response = pretend.stub() app = pretend.call_recorder(lambda e, s: response) environ = { "HTTP_X_FORWARDED_FOR": "1.2.3.4", "HTTP_SOME_OTHER_HEADER": "woop" } start_response = pretend.stub() resp = wsgi.ProxyFixer(app, token=None, num_proxies=2)(environ, start_response) assert resp is response assert app.calls == [ pretend.call({"HTTP_SOME_OTHER_HEADER": "woop"}, start_response) ]
def test_cleans_environ_forwarded(self): response = pretend.stub() app = pretend.call_recorder(lambda e, s: response) environ = { "HTTP_X_FORWARDED_PROTO": "http", "HTTP_X_FORWARDED_FOR": "1.2.3.4", "HTTP_X_FORWARDED_HOST": "example.com", "HTTP_SOME_OTHER_HEADER": "woop", } start_response = pretend.stub() resp = wsgi.ProxyFixer(app, token=None)(environ, start_response) assert resp is response assert app.calls == [ pretend.call({"HTTP_SOME_OTHER_HEADER": "woop"}, start_response), ]
def test_accepts_x_forwarded_port(self): response = pretend.stub() app = pretend.call_recorder(lambda e, s: response) environ = { "HTTP_X_FORWARDED_PROTO": "http", "HTTP_X_FORWARDED_PORT": "443", "HTTP_SOME_OTHER_HEADER": "woop", } start_response = pretend.stub() resp = wsgi.ProxyFixer(app, token=None)(environ, start_response) assert resp is response assert app.calls == [ pretend.call( { "HTTP_SOME_OTHER_HEADER": "woop", "wsgi.url_scheme": "https", }, start_response, ), ]