summaryrefslogtreecommitdiffstats
path: root/deluge/tests/test_web_api.py
diff options
context:
space:
mode:
Diffstat (limited to 'deluge/tests/test_web_api.py')
-rw-r--r--deluge/tests/test_web_api.py115
1 files changed, 54 insertions, 61 deletions
diff --git a/deluge/tests/test_web_api.py b/deluge/tests/test_web_api.py
index 0180e0bda..56f86aa56 100644
--- a/deluge/tests/test_web_api.py
+++ b/deluge/tests/test_web_api.py
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
#
# Copyright (C) 2016 bendikro <bro.devel+deluge@gmail.com>
#
@@ -7,19 +6,17 @@
# See LICENSE for more details.
#
-from __future__ import unicode_literals
-
import json
from io import BytesIO
+import pytest
+import pytest_twisted
from twisted.internet import defer, reactor
-from twisted.python.failure import Failure
from twisted.web.client import Agent, FileBodyProducer
from twisted.web.http_headers import Headers
from twisted.web.static import File
import deluge.component as component
-from deluge.ui.client import client
from . import common
from .common_web import WebServerTestBase
@@ -27,20 +24,19 @@ from .common_web import WebServerTestBase
common.disable_new_release_check()
-class WebAPITestCase(WebServerTestBase):
- def test_connect_invalid_host(self):
- d = self.deluge_web.web_api.connect('id')
- d.addCallback(self.fail)
- d.addErrback(self.assertIsInstance, Failure)
- return d
+class TestWebAPI(WebServerTestBase):
+ @pytest.mark.xfail(reason='This just logs an error at the moment.')
+ @pytest_twisted.ensureDeferred
+ async def test_connect_invalid_host(self):
+ with pytest.raises(Exception):
+ await self.deluge_web.web_api.connect('id')
- def test_connect(self):
+ def test_connect(self, client):
d = self.deluge_web.web_api.connect(self.host_id)
def on_connect(result):
- self.assertEqual(type(result), tuple)
- self.assertTrue(len(result) > 0)
- self.addCleanup(client.disconnect)
+ assert type(result) == tuple
+ assert len(result) > 0
return result
d.addCallback(on_connect)
@@ -52,9 +48,9 @@ class WebAPITestCase(WebServerTestBase):
@defer.inlineCallbacks
def on_connect(result):
- self.assertTrue(self.deluge_web.web_api.connected())
+ assert self.deluge_web.web_api.connected()
yield self.deluge_web.web_api.disconnect()
- self.assertFalse(self.deluge_web.web_api.connected())
+ assert not self.deluge_web.web_api.connected()
d.addCallback(on_connect)
d.addErrback(self.fail)
@@ -62,7 +58,7 @@ class WebAPITestCase(WebServerTestBase):
def test_get_config(self):
config = self.deluge_web.web_api.get_config()
- self.assertEqual(self.webserver_listen_port, config['port'])
+ assert self.webserver_listen_port == config['port']
def test_set_config(self):
config = self.deluge_web.web_api.get_config()
@@ -77,9 +73,9 @@ class WebAPITestCase(WebServerTestBase):
}
self.deluge_web.web_api.set_config(config)
web_config = component.get('DelugeWeb').config.config
- self.assertNotEquals(config['pwd_salt'], web_config['pwd_salt'])
- self.assertNotEquals(config['pwd_sha1'], web_config['pwd_sha1'])
- self.assertNotEquals(config['sessions'], web_config['sessions'])
+ assert config['pwd_salt'] != web_config['pwd_salt']
+ assert config['pwd_sha1'] != web_config['pwd_sha1']
+ assert config['sessions'] != web_config['sessions']
@defer.inlineCallbacks
def get_host_status(self):
@@ -87,49 +83,49 @@ class WebAPITestCase(WebServerTestBase):
host[3] = 'Online'
host[4] = '2.0.0.dev562'
status = yield self.deluge_web.web_api.get_host_status(self.host_id)
- self.assertEqual(status, tuple(status))
+ assert status == tuple(status)
def test_get_host(self):
- self.assertFalse(self.deluge_web.web_api._get_host('invalid_id'))
+ assert not self.deluge_web.web_api._get_host('invalid_id')
conn = list(self.deluge_web.web_api.hostlist.get_hosts_info()[0])
- self.assertEqual(self.deluge_web.web_api._get_host(conn[0]), conn[0:4])
+ assert self.deluge_web.web_api._get_host(conn[0]) == conn[0:4]
def test_add_host(self):
conn = ['abcdef', '10.0.0.1', 0, 'user123', 'pass123']
- self.assertFalse(self.deluge_web.web_api._get_host(conn[0]))
+ assert not self.deluge_web.web_api._get_host(conn[0])
# Add valid host
result, host_id = self.deluge_web.web_api.add_host(
conn[1], conn[2], conn[3], conn[4]
)
- self.assertEqual(result, True)
+ assert result
conn[0] = host_id
- self.assertEqual(self.deluge_web.web_api._get_host(conn[0]), conn[0:4])
+ assert self.deluge_web.web_api._get_host(conn[0]) == conn[0:4]
# Add already existing host
ret = self.deluge_web.web_api.add_host(conn[1], conn[2], conn[3], conn[4])
- self.assertEqual(ret, (False, 'Host details already in hostlist'))
+ assert ret == (False, 'Host details already in hostlist')
# Add invalid port
conn[2] = 'bad port'
ret = self.deluge_web.web_api.add_host(conn[1], conn[2], conn[3], conn[4])
- self.assertEqual(ret, (False, 'Invalid port. Must be an integer'))
+ assert ret == (False, 'Invalid port. Must be an integer')
def test_remove_host(self):
conn = ['connection_id', '', 0, '', '']
self.deluge_web.web_api.hostlist.config['hosts'].append(conn)
- self.assertEqual(self.deluge_web.web_api._get_host(conn[0]), conn[0:4])
+ assert self.deluge_web.web_api._get_host(conn[0]) == conn[0:4]
# Remove valid host
- self.assertTrue(self.deluge_web.web_api.remove_host(conn[0]))
- self.assertFalse(self.deluge_web.web_api._get_host(conn[0]))
+ assert self.deluge_web.web_api.remove_host(conn[0])
+ assert not self.deluge_web.web_api._get_host(conn[0])
# Remove non-existing host
- self.assertFalse(self.deluge_web.web_api.remove_host(conn[0]))
+ assert not self.deluge_web.web_api.remove_host(conn[0])
def test_get_torrent_info(self):
filename = common.get_test_data_file('test.torrent')
ret = self.deluge_web.web_api.get_torrent_info(filename)
- self.assertEqual(ret['name'], 'azcvsupdater_2.6.2.jar')
- self.assertEqual(ret['info_hash'], 'ab570cdd5a17ea1b61e970bb72047de141bce173')
- self.assertTrue('files_tree' in ret)
+ assert ret['name'] == 'azcvsupdater_2.6.2.jar'
+ assert ret['info_hash'] == 'ab570cdd5a17ea1b61e970bb72047de141bce173'
+ assert 'files_tree' in ret
def test_get_torrent_info_with_md5(self):
filename = common.get_test_data_file('md5sum.torrent')
@@ -137,19 +133,19 @@ class WebAPITestCase(WebServerTestBase):
# JSON dumping happens during response creation in normal usage
# JSON serialization may fail if any of the dictionary items are byte arrays rather than strings
ret = json.loads(json.dumps(ret))
- self.assertEqual(ret['name'], 'test')
- self.assertEqual(ret['info_hash'], 'f6408ba9944cf9fe01b547b28f336b3ee6ec32c5')
- self.assertTrue('files_tree' in ret)
+ assert ret['name'] == 'test'
+ assert ret['info_hash'] == 'f6408ba9944cf9fe01b547b28f336b3ee6ec32c5'
+ assert 'files_tree' in ret
def test_get_magnet_info(self):
ret = self.deluge_web.web_api.get_magnet_info(
'magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN'
)
- self.assertEqual(ret['name'], '953bad769164e8482c7785a21d12166f94b9e14d')
- self.assertEqual(ret['info_hash'], '953bad769164e8482c7785a21d12166f94b9e14d')
- self.assertTrue('files_tree' in ret)
+ assert ret['name'] == '953bad769164e8482c7785a21d12166f94b9e14d'
+ assert ret['info_hash'] == '953bad769164e8482c7785a21d12166f94b9e14d'
+ assert 'files_tree' in ret
- @defer.inlineCallbacks
+ @pytest_twisted.inlineCallbacks
def test_get_torrent_files(self):
yield self.deluge_web.web_api.connect(self.host_id)
filename = common.get_test_data_file('test.torrent')
@@ -160,23 +156,20 @@ class WebAPITestCase(WebServerTestBase):
ret = yield self.deluge_web.web_api.get_torrent_files(
'ab570cdd5a17ea1b61e970bb72047de141bce173'
)
- self.assertEqual(ret['type'], 'dir')
- self.assertEqual(
- ret['contents'],
- {
- 'azcvsupdater_2.6.2.jar': {
- 'priority': 4,
- 'index': 0,
- 'offset': 0,
- 'progress': 0.0,
- 'path': 'azcvsupdater_2.6.2.jar',
- 'type': 'file',
- 'size': 307949,
- }
- },
- )
+ assert ret['type'] == 'dir'
+ assert ret['contents'] == {
+ 'azcvsupdater_2.6.2.jar': {
+ 'priority': 4,
+ 'index': 0,
+ 'offset': 0,
+ 'progress': 0.0,
+ 'path': 'azcvsupdater_2.6.2.jar',
+ 'type': 'file',
+ 'size': 307949,
+ }
+ }
- @defer.inlineCallbacks
+ @pytest_twisted.inlineCallbacks
def test_download_torrent_from_url(self):
filename = 'ubuntu-9.04-desktop-i386.iso.torrent'
self.deluge_web.top_level.putChild(
@@ -184,9 +177,9 @@ class WebAPITestCase(WebServerTestBase):
)
url = 'http://localhost:%d/%s' % (self.webserver_listen_port, filename)
res = yield self.deluge_web.web_api.download_torrent_from_url(url)
- self.assertTrue(res.endswith(filename))
+ assert res.endswith(filename)
- @defer.inlineCallbacks
+ @pytest_twisted.inlineCallbacks
def test_invalid_json(self):
"""
If json_api._send_response does not return server.NOT_DONE_YET