Skip to content

Commit d293126

Browse files
committed
Add remote proxy test, which is not truly remote, but exercises that
class.
1 parent 20fd3b4 commit d293126

File tree

3 files changed

+57
-2
lines changed

3 files changed

+57
-2
lines changed

tests/resources/jupyter_server_config.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,8 @@
1111
'port': 54321,
1212
},
1313
}
14+
15+
import sys
16+
sys.path.append('./tests/resources')
17+
c.NotebookApp.nbserver_extensions = { 'proxyextension': True }
1418
#c.Application.log_level = 'DEBUG'

tests/resources/proxyextension.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from jupyter_server_proxy.handlers import ProxyHandler
2+
from notebook.utils import url_path_join
3+
4+
class NewHandler(ProxyHandler):
5+
async def http_get(self):
6+
return await self.proxy()
7+
8+
async def open(self):
9+
host = '127.0.0.1'
10+
port = 54321
11+
return await super().proxy_open(host, port)
12+
13+
def post(self):
14+
return self.proxy()
15+
16+
def put(self):
17+
return self.proxy()
18+
19+
def delete(self):
20+
return self.proxy()
21+
22+
def head(self):
23+
return self.proxy()
24+
25+
def patch(self):
26+
return self.proxy()
27+
28+
def options(self):
29+
return self.proxy()
30+
31+
def proxy(self):
32+
host = '127.0.0.1'
33+
port = 54321
34+
proxied_path = ''
35+
return super().proxy(host, port, proxied_path)
36+
37+
38+
def _jupyter_server_extension_paths():
39+
return [{"module": "dask_labextension"}]
40+
41+
42+
def load_jupyter_server_extension(nb_server_app):
43+
web_app = nb_server_app.web_app
44+
base_url = web_app.settings["base_url"]
45+
proxy_path = url_path_join(base_url, "newproxy/" + "?")
46+
handlers = [(proxy_path, NewHandler)]
47+
web_app.add_handlers(".*$", handlers)

tests/test_proxies.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
TOKEN = os.getenv('JUPYTER_TOKEN', 'secret')
66

77

8-
def request_get(port, path, token):
9-
h = HTTPConnection('localhost', port, 10)
8+
def request_get(port, path, token, host='localhost'):
9+
h = HTTPConnection(host, port, 10)
1010
h.request('GET', '{}?token={}'.format(path, token))
1111
return h.getresponse()
1212

@@ -57,3 +57,7 @@ def test_server_proxy_port_absolute():
5757
assert s.startswith('GET /proxy/absolute/54321/nmo?token=')
5858
assert 'X-Forwarded-Context' not in s
5959
assert 'X-Proxycontextpath' not in s
60+
61+
def test_server_proxy_remote():
62+
r = request_get(PORT, '/newproxy', TOKEN, host='127.0.0.1')
63+
assert r.code == 200

0 commit comments

Comments
 (0)