Example #1
0
    def test_try_make_request(self, mock_make_request, mock_wait,
                              mock_get_proxy, mock_get_headers):
        translator = GoogleTranslator(simulate=True)

        # Test simulate case
        # make_request should return None when in simulate mode
        mock_make_request.return_value = None

        self.assertIsNone(
            translator._try_make_request("https://www.google.com"))
        mock_make_request.assert_called_once_with(
            "https://www.google.com", mock_get_headers.return_value,
            mock_get_proxy.return_value, 10.0, True)
        mock_get_proxy.assert_called_once()
        mock_get_headers.assert_called_once()
        mock_wait.assert_not_called()

        mock_make_request.reset_mock()
        mock_get_proxy.reset_mock()
        mock_get_headers.reset_mock()

        timeout = 50.0
        retries = 10

        translator = GoogleTranslator(timeout=timeout, retries=retries)

        # Test raise URLError
        mock_make_request.side_effect = URLError("invalid url")

        make_request_calls = [
            mock.call("https://www.google.com", mock_get_headers.return_value,
                      mock_get_proxy.return_value, timeout, False)
        ] * retries

        self.assertIsNone(
            translator._try_make_request("https://www.google.com"))
        mock_make_request.assert_has_calls(make_request_calls)
        self.assertEqual(mock_wait.call_count, retries - 1)
        self.assertEqual(mock_get_proxy.call_count, retries)
        self.assertEqual(mock_get_headers.call_count, retries)

        mock_make_request.reset_mock()
        mock_wait.reset_mock()
        mock_get_proxy.reset_mock()
        mock_get_headers.reset_mock()

        # Test normal use case
        mock_make_request.side_effect = None

        self.assertEqual(
            translator._try_make_request("https://www.google.com"),
            mock_make_request.return_value)
        mock_make_request.assert_called_once_with(
            "https://www.google.com", mock_get_headers.return_value,
            mock_get_proxy.return_value, timeout, False)
        mock_wait.assert_not_called()
        mock_get_proxy.assert_called_once()
        mock_get_headers.assert_called_once()
Example #2
0
    def test_try_make_request_remove_proxy(self, mock_make_request, mock_wait,
                                           mock_get_proxy):
        mock_proxy_selector = mock.MagicMock()
        translator = GoogleTranslator(mock_proxy_selector)

        mock_get_proxy.side_effect = ["127.0.0.1:8080"
                                      ] + [None] * (translator._retries - 1)

        mock_make_request.side_effect = URLError("invalid url")

        self.assertIsNone(translator._try_make_request("https://test.com"))
        mock_proxy_selector.remove_proxy.assert_called_once_with(
            "127.0.0.1:8080")
        self.assertEqual(mock_wait.call_count, translator._retries - 1)