예제 #1
0
    def test_login_bad_request(self):
        settings_manager = SettingsManager()
        settings_manager.get_password = MagicMock(return_value='monitorrent')
        settings_authentication_resource = Login(settings_manager)
        self.api.add_route(self.test_route, settings_authentication_resource)

        self.simulate_request(self.test_route, method='POST', body=json.dumps({}))

        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST)
예제 #2
0
    def test_login_unauthorized(self):
        settings_manager = SettingsManager()
        settings_manager.get_password = MagicMock(return_value='monitorrent')
        settings_authentication_resource = Login(settings_manager)
        self.api.add_route(self.test_route, settings_authentication_resource)

        self.simulate_request(self.test_route, method='POST', body=json.dumps({'password': '******'}))

        self.assertEqual(self.srmock.status, falcon.HTTP_UNAUTHORIZED)
    def test_set_is_authentication_enabled_bad_request(self, body):
        settings_manager = SettingsManager()
        settings_manager.get_password = MagicMock(return_value='monitorrent')
        settings_manager.set_is_authentication_enabled = MagicMock()
        settings_authentication_resource = SettingsAuthentication(settings_manager)
        self.api.add_route('/api/settings/authentication', settings_authentication_resource)

        self.simulate_request("/api/settings/authentication", method="PUT", body=json.dumps(body) if body else None)

        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST)
예제 #4
0
    def test_login_unauthorized(self):
        settings_manager = SettingsManager()
        settings_manager.get_password = MagicMock(return_value='monitorrent')
        settings_authentication_resource = Login(settings_manager)
        self.api.add_route(self.test_route, settings_authentication_resource)

        self.simulate_request(self.test_route,
                              method='POST',
                              body=json.dumps({'password': '******'}))

        self.assertEqual(self.srmock.status, falcon.HTTP_UNAUTHORIZED)
예제 #5
0
    def test_login_bad_request(self):
        settings_manager = SettingsManager()
        settings_manager.get_password = MagicMock(return_value='monitorrent')
        settings_authentication_resource = Login(settings_manager)
        self.api.add_route(self.test_route, settings_authentication_resource)

        self.simulate_request(self.test_route,
                              method='POST',
                              body=json.dumps({}))

        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST)
    def test_set_is_authentication_enabled_wrong_password(self, value):
        settings_manager = SettingsManager()
        settings_manager.get_password = MagicMock(return_value='monitorrent')
        settings_manager.set_is_authentication_enabled = MagicMock()
        settings_authentication_resource = SettingsAuthentication(settings_manager)
        self.api.add_route('/api/settings/authentication', settings_authentication_resource)

        request = {'password': '******', 'is_authentication_enabled': value}
        self.simulate_request("/api/settings/authentication", method="PUT", body=json.dumps(request))

        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST)
예제 #7
0
    def test_set_is_authentication_enabled_bad_request(self, body):
        settings_manager = SettingsManager()
        settings_manager.get_password = MagicMock(return_value='monitorrent')
        settings_manager.set_is_authentication_enabled = MagicMock()
        settings_authentication_resource = SettingsAuthentication(
            settings_manager)
        self.api.add_route('/api/settings/authentication',
                           settings_authentication_resource)

        self.simulate_request("/api/settings/authentication",
                              method="PUT",
                              body=json.dumps(body) if body else None)

        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST)
예제 #8
0
    def test_login_success(self, password):
        settings_manager = SettingsManager()
        settings_manager.get_password = MagicMock(return_value=password)
        settings_authentication_resource = Login(settings_manager)
        self.api.add_route(self.test_route, settings_authentication_resource)

        self.simulate_request(self.test_route, method='POST', body=json.dumps({'password': password}))

        self.assertEqual(self.srmock.status, falcon.HTTP_200)
        set_cookie = self.srmock.headers_dict['set-cookie']
        cookie = http.cookies.SimpleCookie()
        cookie.load(set_cookie)
        self.assertEqual(1, len(cookie))
        jwt_morsel = list(cookie.values())[0]
        self.assertEqual(AuthMiddleware.cookie_name, jwt_morsel.key)
        self.assertEqual(self.auth_token_verified, jwt_morsel.value)
예제 #9
0
    def test_login_success(self, password):
        settings_manager = SettingsManager()
        settings_manager.get_password = MagicMock(return_value=password)
        settings_authentication_resource = Login(settings_manager)
        self.api.add_route(self.test_route, settings_authentication_resource)

        self.simulate_request(self.test_route,
                              method='POST',
                              body=json.dumps({'password': password}))

        self.assertEqual(self.srmock.status, falcon.HTTP_200)
        set_cookie = self.srmock.headers_dict['set-cookie']
        cookie = http.cookies.SimpleCookie()
        cookie.load(set_cookie)
        self.assertEqual(1, len(cookie))
        jwt_morsel = list(cookie.values())[0]
        self.assertEqual(AuthMiddleware.cookie_name, jwt_morsel.key)
        self.assertEqual(self.auth_token_verified, jwt_morsel.value)
예제 #10
0
    def test_set_is_authentication_enabled_wrong_password(self, value):
        settings_manager = SettingsManager()
        settings_manager.get_password = MagicMock(return_value='monitorrent')
        settings_manager.set_is_authentication_enabled = MagicMock()
        settings_authentication_resource = SettingsAuthentication(
            settings_manager)
        self.api.add_route('/api/settings/authentication',
                           settings_authentication_resource)

        request = {
            'password': '******',
            'is_authentication_enabled': value
        }
        self.simulate_request("/api/settings/authentication",
                              method="PUT",
                              body=json.dumps(request))

        self.assertEqual(self.srmock.status, falcon.HTTP_BAD_REQUEST)
 def _get_settings_manager(password):
     settings_manager = SettingsManager()
     settings_manager.get_password = MagicMock(return_value=password)
     settings_manager.set_password = MagicMock()
     return settings_manager
예제 #12
0
 def _get_settings_manager(password):
     settings_manager = SettingsManager()
     settings_manager.get_password = MagicMock(return_value=password)
     settings_manager.set_password = MagicMock()
     return settings_manager
예제 #13
0
class SettingsManagerTest(DbTestCase):
    def setUp(self):
        super(SettingsManagerTest, self).setUp()
        self.settings_manager = SettingsManager() 

    def test_get_default_password(self):
        self.assertEqual('monitorrent', self.settings_manager.get_password())

    def test_set_password(self):
        value = 'p@$$w0rd!'
        self.settings_manager.set_password(value)

        self.assertEqual(value, self.settings_manager.get_password())

    def test_get_default_is_authentication_enabled(self):
        self.assertTrue(self.settings_manager.get_is_authentication_enabled())

    def test_set_is_authentication_enabled(self):
        value = False
        self.settings_manager.set_is_authentication_enabled(value)

        self.assertEqual(value, self.settings_manager.get_is_authentication_enabled())

    def test_enable_disable_authentication(self):
        self.settings_manager.disable_authentication()

        self.assertFalse(self.settings_manager.get_is_authentication_enabled())

        self.settings_manager.enable_authentication()

        self.assertTrue(self.settings_manager.get_is_authentication_enabled())

    def test_default_client(self):
        self.assertIsNone(self.settings_manager.get_default_client())

        client = 'transmission'
        self.settings_manager.set_default_client(client)

        self.assertEqual(client, self.settings_manager.get_default_client())

    def test_get_is_developer_mode(self):
        self.assertFalse(self.settings_manager.get_is_developer_mode())

    @data(True, False)
    def test_set_is_developer_mode(self, value):
        self.settings_manager.set_is_developer_mode(value)

        self.assertEqual(value, self.settings_manager.get_is_developer_mode())

    def test_get_default_requests_timeout(self):
        self.assertEqual(10, self.settings_manager.requests_timeout)

    def test_set_requests_timeout(self):
        self.assertEqual(10, self.settings_manager.requests_timeout)

        self.settings_manager.requests_timeout = 20

        self.assertEqual(20, self.settings_manager.requests_timeout)

    def test_set_float_requests_timeout(self):
        self.assertEqual(10, self.settings_manager.requests_timeout)

        self.settings_manager.requests_timeout = 20.7

        self.assertEqual(20.7, self.settings_manager.requests_timeout)

    def test_get_default_plugin_settings(self):
        self.assertEqual(10, self.settings_manager.tracker_settings.requests_timeout)

    def test_set_plugin_settings(self):
        plugin_settings = self.settings_manager.tracker_settings
        self.assertEqual(10, plugin_settings.requests_timeout)

        plugin_settings.requests_timeout = 20
        self.settings_manager.tracker_settings = plugin_settings

        self.assertEqual(20, self.settings_manager.tracker_settings.requests_timeout)

    def test_set_float_plugin_settings(self):
        plugin_settings = self.settings_manager.tracker_settings
        self.assertEqual(10, plugin_settings.requests_timeout)

        plugin_settings.requests_timeout = 20.3
        self.settings_manager.tracker_settings = plugin_settings

        self.assertEqual(20.3, self.settings_manager.tracker_settings.requests_timeout)

    def test_get_remove_logs_interval(self):
        self.assertEqual(10, self.settings_manager.remove_logs_interval)

    def test_set_remove_logs_interval(self):
        self.assertEqual(10, self.settings_manager.remove_logs_interval)

        self.settings_manager.remove_logs_interval = 20

        self.assertEqual(20, self.settings_manager.remove_logs_interval)

    def test_get_is_proxy_enabled(self):
        self.assertFalse(self.settings_manager.get_is_proxy_enabled())

    @data(True, False)
    def test_set_is_proxy_enabled(self, value):
        self.settings_manager.set_is_proxy_enabled(value)

        self.assertEqual(self.settings_manager.get_is_proxy_enabled(), value)

    def test_get_proxy(self):
        self.assertEqual(self.settings_manager.get_proxy('http'), None)
        self.assertEqual(self.settings_manager.get_proxy('https'), None)

    def test_set_proxy(self):
        self.assertEqual(self.settings_manager.get_proxy('http'), None)
        self.assertEqual(self.settings_manager.get_proxy('https'), None)

        self.settings_manager.set_proxy('http', 'http://1.1.1.1:8888')

        self.assertEqual(self.settings_manager.get_proxy('http'), 'http://1.1.1.1:8888')
        self.assertEqual(self.settings_manager.get_proxy('https'), None)
        expected = {
            'http': 'http://1.1.1.1:8888'
        }
        self.assertEqual(self.settings_manager.get_proxies(), expected)

        self.settings_manager.set_proxy('https', 'http://2.2.2.2:8888')

        self.assertEqual(self.settings_manager.get_proxy('http'), 'http://1.1.1.1:8888')
        self.assertEqual(self.settings_manager.get_proxy('https'), 'http://2.2.2.2:8888')
        expected = {
            'http': 'http://1.1.1.1:8888',
            'https': 'http://2.2.2.2:8888'
        }
        self.assertEqual(self.settings_manager.get_proxies(), expected)

    def test_unset_proxy(self):
        self.settings_manager.set_proxy('http', 'http://1.1.1.1:8888')
        self.settings_manager.set_proxy('https', 'http://2.2.2.2:8888')
        expected = {
            'http': 'http://1.1.1.1:8888',
            'https': 'http://2.2.2.2:8888'
        }
        self.assertEqual(self.settings_manager.get_proxies(), expected)

        self.settings_manager.set_proxy('https', None)
        self.settings_manager.set_proxy('http://rutor.org', None)
        expected = {
            'http': 'http://1.1.1.1:8888'
        }
        self.assertEqual(self.settings_manager.get_proxies(), expected)

    @data(True, False)
    def test_set_is_new_version_check_enabled(self, value):
        self.settings_manager.set_is_new_version_checker_enabled(value)

        self.assertEqual(self.settings_manager.get_is_new_version_checker_enabled(), value)

    def test_get_new_version_check_include_prerelease(self):
        self.assertFalse(self.settings_manager.get_new_version_check_include_prerelease())

    @data(True, False)
    def test_set_new_version_check_include_prerelease(self, value):
        self.settings_manager.set_new_version_check_include_prerelease(value)

        self.assertEqual(self.settings_manager.get_new_version_check_include_prerelease(), value)

    def test_get_new_version_check_interval_default_value(self):
        self.assertEqual(3600, self.settings_manager.new_version_check_interval)

    def test_get_new_version_check_interval_set_value(self):
        self.assertEqual(3600, self.settings_manager.new_version_check_interval)

        self.settings_manager.new_version_check_interval = 7200

        self.assertEqual(7200, self.settings_manager.new_version_check_interval)
class SettingsManagerTest(DbTestCase):
    def setUp(self):
        super(SettingsManagerTest, self).setUp()
        self.settings_manager = SettingsManager() 

    def test_get_default_password(self):
        self.assertEqual('monitorrent', self.settings_manager.get_password())

    def test_set_password(self):
        value = 'p@$$w0rd!'
        self.settings_manager.set_password(value)

        self.assertEqual(value, self.settings_manager.get_password())

    def test_get_default_is_authentication_enabled(self):
        self.assertTrue(self.settings_manager.get_is_authentication_enabled())

    def test_set_is_authentication_enabled(self):
        value = False
        self.settings_manager.set_is_authentication_enabled(value)

        self.assertEqual(value, self.settings_manager.get_is_authentication_enabled())

    def test_enable_disable_authentication(self):
        self.settings_manager.disable_authentication()

        self.assertFalse(self.settings_manager.get_is_authentication_enabled())

        self.settings_manager.enable_authentication()

        self.assertTrue(self.settings_manager.get_is_authentication_enabled())

    def test_default_client(self):
        self.assertIsNone(self.settings_manager.get_default_client())

        client = 'transmission'
        self.settings_manager.set_default_client(client)

        self.assertEqual(client, self.settings_manager.get_default_client())

    def test_get_is_developer_mode(self):
        self.assertFalse(self.settings_manager.get_is_developer_mode())

    @data(True, False)
    def test_set_is_developer_mode(self, value):
        self.settings_manager.set_is_developer_mode(value)

        self.assertEqual(value, self.settings_manager.get_is_developer_mode())

    def test_get_default_requests_timeout(self):
        self.assertEqual(10, self.settings_manager.requests_timeout)

    def test_set_requests_timeout(self):
        self.assertEqual(10, self.settings_manager.requests_timeout)

        self.settings_manager.requests_timeout = 20

        self.assertEqual(20, self.settings_manager.requests_timeout)

    def test_set_float_requests_timeout(self):
        self.assertEqual(10, self.settings_manager.requests_timeout)

        self.settings_manager.requests_timeout = 20.7

        self.assertEqual(20.7, self.settings_manager.requests_timeout)

    def test_get_default_plugin_settings(self):
        self.assertEqual(10, self.settings_manager.tracker_settings.requests_timeout)

    def test_set_plugin_settings(self):
        plugin_settings = self.settings_manager.tracker_settings
        self.assertEqual(10, plugin_settings.requests_timeout)

        plugin_settings.requests_timeout = 20
        self.settings_manager.tracker_settings = plugin_settings

        self.assertEqual(20, self.settings_manager.tracker_settings.requests_timeout)

    def test_set_float_plugin_settings(self):
        plugin_settings = self.settings_manager.tracker_settings
        self.assertEqual(10, plugin_settings.requests_timeout)

        plugin_settings.requests_timeout = 20.3
        self.settings_manager.tracker_settings = plugin_settings

        self.assertEqual(20.3, self.settings_manager.tracker_settings.requests_timeout)

    def test_get_remove_logs_interval(self):
        self.assertEqual(10, self.settings_manager.remove_logs_interval)

    def test_set_remove_logs_interval(self):
        self.assertEqual(10, self.settings_manager.remove_logs_interval)

        self.settings_manager.remove_logs_interval = 20

        self.assertEqual(20, self.settings_manager.remove_logs_interval)
예제 #15
0
class SettingsManagerTest(DbTestCase):
    def setUp(self):
        super(SettingsManagerTest, self).setUp()
        self.settings_manager = SettingsManager()

    def test_get_default_password(self):
        self.assertEqual('monitorrent', self.settings_manager.get_password())

    def test_set_password(self):
        value = 'p@$$w0rd!'
        self.settings_manager.set_password(value)

        self.assertEqual(value, self.settings_manager.get_password())

    def test_get_default_is_authentication_enabled(self):
        self.assertTrue(self.settings_manager.get_is_authentication_enabled())

    def test_set_is_authentication_enabled(self):
        value = False
        self.settings_manager.set_is_authentication_enabled(value)

        self.assertEqual(value, self.settings_manager.get_is_authentication_enabled())

    def test_enable_disable_authentication(self):
        self.settings_manager.disable_authentication()

        self.assertFalse(self.settings_manager.get_is_authentication_enabled())

        self.settings_manager.enable_authentication()

        self.assertTrue(self.settings_manager.get_is_authentication_enabled())

    def test_default_client(self):
        self.assertIsNone(self.settings_manager.get_default_client())

        client = 'transmission'
        self.settings_manager.set_default_client(client)

        self.assertEqual(client, self.settings_manager.get_default_client())

    def test_get_is_developer_mode(self):
        self.assertFalse(self.settings_manager.get_is_developer_mode())

    @data(True, False)
    def test_set_is_developer_mode(self, value):
        self.settings_manager.set_is_developer_mode(value)

        self.assertEqual(value, self.settings_manager.get_is_developer_mode())

    def test_get_default_requests_timeout(self):
        self.assertEqual(10, self.settings_manager.requests_timeout)

    def test_set_requests_timeout(self):
        self.assertEqual(10, self.settings_manager.requests_timeout)

        self.settings_manager.requests_timeout = 20

        self.assertEqual(20, self.settings_manager.requests_timeout)

    def test_set_float_requests_timeout(self):
        self.assertEqual(10, self.settings_manager.requests_timeout)

        self.settings_manager.requests_timeout = 20.7

        self.assertEqual(20.7, self.settings_manager.requests_timeout)

    def test_get_default_plugin_settings(self):
        self.assertEqual(10, self.settings_manager.tracker_settings.requests_timeout)

    def test_set_plugin_settings(self):
        plugin_settings = self.settings_manager.tracker_settings
        self.assertEqual(10, plugin_settings.requests_timeout)

        plugin_settings.requests_timeout = 20
        self.settings_manager.tracker_settings = plugin_settings

        self.assertEqual(20, self.settings_manager.tracker_settings.requests_timeout)

    def test_set_float_plugin_settings(self):
        plugin_settings = self.settings_manager.tracker_settings
        self.assertEqual(10, plugin_settings.requests_timeout)

        plugin_settings.requests_timeout = 20.3
        self.settings_manager.tracker_settings = plugin_settings

        self.assertEqual(20.3, self.settings_manager.tracker_settings.requests_timeout)

    def test_get_remove_logs_interval(self):
        self.assertEqual(10, self.settings_manager.remove_logs_interval)

    def test_set_remove_logs_interval(self):
        self.assertEqual(10, self.settings_manager.remove_logs_interval)

        self.settings_manager.remove_logs_interval = 20

        self.assertEqual(20, self.settings_manager.remove_logs_interval)

    def test_get_is_proxy_enabled(self):
        self.assertFalse(self.settings_manager.get_is_proxy_enabled())

    @data(True, False)
    def test_set_is_proxy_enabled(self, value):
        self.settings_manager.set_is_proxy_enabled(value)

        self.assertEqual(self.settings_manager.get_is_proxy_enabled(), value)

    def test_get_proxy(self):
        self.assertEqual(self.settings_manager.get_proxy('http'), None)
        self.assertEqual(self.settings_manager.get_proxy('https'), None)

    def test_set_proxy(self):
        self.assertEqual(self.settings_manager.get_proxy('http'), None)
        self.assertEqual(self.settings_manager.get_proxy('https'), None)

        self.settings_manager.set_proxy('http', 'http://1.1.1.1:8888')

        self.assertEqual(self.settings_manager.get_proxy('http'), 'http://1.1.1.1:8888')
        self.assertEqual(self.settings_manager.get_proxy('https'), None)
        expected = {
            'http': 'http://1.1.1.1:8888'
        }
        self.assertEqual(self.settings_manager.get_proxies(), expected)

        self.settings_manager.set_proxy('https', 'http://2.2.2.2:8888')

        self.assertEqual(self.settings_manager.get_proxy('http'), 'http://1.1.1.1:8888')
        self.assertEqual(self.settings_manager.get_proxy('https'), 'http://2.2.2.2:8888')
        expected = {
            'http': 'http://1.1.1.1:8888',
            'https': 'http://2.2.2.2:8888'
        }
        self.assertEqual(self.settings_manager.get_proxies(), expected)

    def test_unset_proxy(self):
        self.settings_manager.set_proxy('http', 'http://1.1.1.1:8888')
        self.settings_manager.set_proxy('https', 'http://2.2.2.2:8888')
        expected = {
            'http': 'http://1.1.1.1:8888',
            'https': 'http://2.2.2.2:8888'
        }
        self.assertEqual(self.settings_manager.get_proxies(), expected)

        self.settings_manager.set_proxy('https', None)
        self.settings_manager.set_proxy('http://rutor.org', None)
        expected = {
            'http': 'http://1.1.1.1:8888'
        }
        self.assertEqual(self.settings_manager.get_proxies(), expected)

    @data(True, False)
    def test_set_is_new_version_check_enabled(self, value):
        self.settings_manager.set_is_new_version_checker_enabled(value)

        self.assertEqual(self.settings_manager.get_is_new_version_checker_enabled(), value)

    def test_get_new_version_check_include_prerelease(self):
        self.assertFalse(self.settings_manager.get_new_version_check_include_prerelease())

    @data(True, False)
    def test_set_new_version_check_include_prerelease(self, value):
        self.settings_manager.set_new_version_check_include_prerelease(value)

        self.assertEqual(self.settings_manager.get_new_version_check_include_prerelease(), value)

    def test_get_new_version_check_interval_default_value(self):
        self.assertEqual(3600, self.settings_manager.new_version_check_interval)

    def test_get_new_version_check_interval_set_value(self):
        self.assertEqual(3600, self.settings_manager.new_version_check_interval)

        self.settings_manager.new_version_check_interval = 7200

        self.assertEqual(7200, self.settings_manager.new_version_check_interval)

    def test_get_external_notifications_levels(self):
        self.assertEqual(self.settings_manager.get_external_notifications_levels(),
                         ['DOWNLOAD', 'ERROR', 'STATUS_CHANGED'])

        self.settings_manager.set_external_notifications_levels(['DOWNLOAD', 'ERROR'])

        self.assertEqual(self.settings_manager.get_external_notifications_levels(), ['DOWNLOAD', 'ERROR'])

        self.settings_manager.set_external_notifications_levels(None)

        self.assertEqual(self.settings_manager.get_external_notifications_levels(),
                         ['DOWNLOAD', 'ERROR', 'STATUS_CHANGED'])

        self.settings_manager.set_external_notifications_levels([])

        self.assertEqual(self.settings_manager.get_external_notifications_levels(), [])

    def test_set_unknown_notification_levels_levels(self):
        self.assertEqual(self.settings_manager.get_external_notifications_levels(),
                         ['DOWNLOAD', 'ERROR', 'STATUS_CHANGED'])

        self.settings_manager.set_external_notifications_levels(['DOWNLOAD', 'WRONG'])
        self.assertEqual(self.settings_manager.get_external_notifications_levels(), ['DOWNLOAD'])

        self.settings_manager.set_external_notifications_levels(['UNKNOWN', 'WRONG'])
        self.assertEqual(self.settings_manager.get_external_notifications_levels(), [])

        self.settings_manager.set_external_notifications_levels(None)
        self.assertEqual(self.settings_manager.get_external_notifications_levels(),
                         ['DOWNLOAD', 'ERROR', 'STATUS_CHANGED'])

    def test_remove_not_existing_settings_success(self):
        self.settings_manager.set_external_notifications_levels(None)

        self.assertEqual(self.settings_manager.get_external_notifications_levels(),
                         ['DOWNLOAD', 'ERROR', 'STATUS_CHANGED'])

    def test_get_existing_external_notifications_levels_success(self):
        self.assertEqual(self.settings_manager.get_existing_external_notifications_levels(),
                         ['DOWNLOAD', 'ERROR', 'STATUS_CHANGED'])