diff options
Diffstat (limited to 'deluge/tests/test_web_api.py')
-rw-r--r-- | deluge/tests/test_web_api.py | 115 |
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 |