# SPDX-License-Identifier: AGPL-3.0-or-later
# pylint: disable=missing-module-docstring,disable=missing-class-docstring,invalid-name

from parameterized import parameterized
from tests import SearxTestCase
import searx.exceptions
from searx import get_setting


class TestExceptions(SearxTestCase):

    @parameterized.expand(
        [
            searx.exceptions.SearxEngineAccessDeniedException,
            searx.exceptions.SearxEngineCaptchaException,
            searx.exceptions.SearxEngineTooManyRequestsException,
        ]
    )
    def test_default_suspend_time(self, exception):
        with self.assertRaises(exception) as e:
            raise exception()
        self.assertEqual(
            e.exception.suspended_time,
            get_setting(exception.SUSPEND_TIME_SETTING),
        )

    @parameterized.expand(
        [
            searx.exceptions.SearxEngineAccessDeniedException,
            searx.exceptions.SearxEngineCaptchaException,
            searx.exceptions.SearxEngineTooManyRequestsException,
        ]
    )
    def test_custom_suspend_time(self, exception):
        with self.assertRaises(exception) as e:
            raise exception(suspended_time=1337)
        self.assertEqual(e.exception.suspended_time, 1337)