summaryrefslogtreecommitdiffstats
path: root/deluge/tests/test_webserver.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-06-24 17:38:33 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-06-24 17:38:33 +0000
commitf702b50b6ac6cb2e1e0e848a629a623f323c9de2 (patch)
tree67d787608695391e5edc2eb245b3943302ba1734 /deluge/tests/test_webserver.py
parentReleasing debian version 2.1.1-5. (diff)
downloaddeluge-f702b50b6ac6cb2e1e0e848a629a623f323c9de2.tar.xz
deluge-f702b50b6ac6cb2e1e0e848a629a623f323c9de2.zip
Merging upstream version 2.1.2~dev0+20230529.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'deluge/tests/test_webserver.py')
-rw-r--r--deluge/tests/test_webserver.py66
1 files changed, 57 insertions, 9 deletions
diff --git a/deluge/tests/test_webserver.py b/deluge/tests/test_webserver.py
index e1588fd..9503f50 100644
--- a/deluge/tests/test_webserver.py
+++ b/deluge/tests/test_webserver.py
@@ -9,7 +9,7 @@
import json as json_lib
from io import BytesIO
-import pytest_twisted
+import pytest
import twisted.web.client
from twisted.internet import reactor
from twisted.web.client import Agent, FileBodyProducer
@@ -23,9 +23,7 @@ common.disable_new_release_check()
class TestWebServer(WebServerTestBase, WebServerMockBase):
- @pytest_twisted.inlineCallbacks
- def test_get_torrent_info(self):
-
+ async def test_get_torrent_info(self):
agent = Agent(reactor)
self.mock_authentication_ignore(self.deluge_web.auth)
@@ -42,15 +40,15 @@ class TestWebServer(WebServerTestBase, WebServerMockBase):
b'User-Agent': ['Twisted Web Client Example'],
b'Content-Type': ['application/json'],
}
- url = 'http://127.0.0.1:%s/json' % self.webserver_listen_port
+ url = 'http://127.0.0.1:%s/json' % self.deluge_web.port
- d = yield agent.request(
+ response = await agent.request(
b'POST',
- url.encode('utf-8'),
+ url.encode(),
Headers(headers),
- FileBodyProducer(BytesIO(input_file.encode('utf-8'))),
+ FileBodyProducer(BytesIO(input_file.encode())),
)
- body = yield twisted.web.client.readBody(d)
+ body = await twisted.web.client.readBody(response)
try:
json = json_lib.loads(body.decode())
@@ -58,3 +56,53 @@ class TestWebServer(WebServerTestBase, WebServerMockBase):
print('aoeu')
assert json['error'] is None
assert 'torrent_filehash' == json['result']['name']
+
+ @pytest.mark.parametrize('base', ['', '/', 'deluge'])
+ async def test_base_with_config(self, base):
+ agent = Agent(reactor)
+ root_url = f'http://127.0.0.1:{self.deluge_web.port}'
+ base_url = f'{root_url}/{base}'
+
+ self.deluge_web.base = base
+
+ response = await agent.request(b'GET', root_url.encode())
+ assert response.code == 200
+ body = await twisted.web.client.readBody(response)
+ assert 'Deluge WebUI' in body.decode()
+
+ response = await agent.request(b'GET', base_url.encode())
+ assert response.code == 200
+
+ @pytest.mark.parametrize('base', ['/', 'deluge'])
+ async def test_base_with_config_recurring_basepath(self, base):
+ agent = Agent(reactor)
+ base_url = f'http://127.0.0.1:{self.deluge_web.port}/{base}'
+
+ self.deluge_web.base = base
+
+ response = await agent.request(b'GET', base_url.encode())
+ assert response.code == 200
+
+ recursive_url = f'{base_url}/{base}'
+ response = await agent.request(b'GET', recursive_url.encode())
+ assert response.code == 404 if base.strip('/') else 200
+
+ recursive_url = f'{recursive_url}/{base}'
+ response = await agent.request(b'GET', recursive_url.encode())
+ assert response.code == 404 if base.strip('/') else 200
+
+ async def test_base_with_deluge_header(self):
+ """Ensure base path is set and HTML contains path"""
+ agent = Agent(reactor)
+ base = 'deluge'
+ url = f'http://127.0.0.1:{self.deluge_web.port}'
+ headers = Headers({'X-Deluge-Base': [base]})
+
+ response = await agent.request(b'GET', url.encode(), headers)
+ body = await twisted.web.client.readBody(response)
+ assert f'href="/{base}/' in body.decode()
+
+ # Header only changes HTML base path so ensure no resource at server path
+ url = f'{url}/{base}'
+ response = await agent.request(b'GET', url.encode(), headers)
+ assert response.code == 404