Saminul commited on
Commit
9a69d6b
·
1 Parent(s): 5a8d2be

added payload check in LibreTranslator.translate and added tests in test_libre.py

Browse files
Files changed (2) hide show
  1. deep_translator/libre.py +13 -4
  2. tests/test_libre.py +49 -0
deep_translator/libre.py CHANGED
@@ -10,7 +10,8 @@ from .constants import BASE_URLS,LIBRE_LANGUAGES_TO_CODES, LIBRE_CODES_TO_LANGUA
10
  from .exceptions import (ServerException,
11
  TranslationNotFound,
12
  LanguageNotSupportedException,
13
- AuthorizationException)
 
14
 
15
 
16
  class LibreTranslator(BaseTranslator):
@@ -31,7 +32,10 @@ class LibreTranslator(BaseTranslator):
31
  raise ServerException(401)
32
  self.__base_url = base_url
33
  self.api_key = api_key
34
- self.source = self._map_language_to_code(source)
 
 
 
35
  self.target = self._map_language_to_code(target)
36
 
37
 
@@ -62,7 +66,10 @@ class LibreTranslator(BaseTranslator):
62
  @param language: a string for 1 language
63
  @return: bool or raise an Exception
64
  """
65
- return language == 'auto' or language in self._languages.keys() or language in self._languages.values()
 
 
 
66
 
67
  def translate(self, text, **kwargs):
68
  """
@@ -71,6 +78,9 @@ class LibreTranslator(BaseTranslator):
71
  @return: str: translated text
72
  """
73
  # Create the request parameters.
 
 
 
74
  translate_endpoint = 'translate'
75
  params = {
76
  "q": text,
@@ -95,4 +105,3 @@ class LibreTranslator(BaseTranslator):
95
  raise TranslationNotFound(text)
96
  # Process and return the response.
97
  return res['translatedText']
98
-
 
10
  from .exceptions import (ServerException,
11
  TranslationNotFound,
12
  LanguageNotSupportedException,
13
+ AuthorizationException,
14
+ NotValidPayload)
15
 
16
 
17
  class LibreTranslator(BaseTranslator):
 
32
  raise ServerException(401)
33
  self.__base_url = base_url
34
  self.api_key = api_key
35
+ if source == "auto":
36
+ self.source = "auto"
37
+ else:
38
+ self.source = self._map_language_to_code(source)
39
  self.target = self._map_language_to_code(target)
40
 
41
 
 
66
  @param language: a string for 1 language
67
  @return: bool or raise an Exception
68
  """
69
+ if language == 'auto' or language in self._languages.keys() or language in self._languages.values():
70
+ return True
71
+ else:
72
+ raise LanguageNotSupportedException(language)
73
 
74
  def translate(self, text, **kwargs):
75
  """
 
78
  @return: str: translated text
79
  """
80
  # Create the request parameters.
81
+ if type(text) != str or text == "":
82
+ raise NotValidPayload(text)
83
+
84
  translate_endpoint = 'translate'
85
  params = {
86
  "q": text,
 
105
  raise TranslationNotFound(text)
106
  # Process and return the response.
107
  return res['translatedText']
 
tests/test_libre.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python
2
+
3
+ """Tests for `deep_translator` package."""
4
+
5
+ import pytest
6
+ from deep_translator import exceptions, LibreTranslator
7
+
8
+
9
+ @pytest.fixture
10
+ def libre():
11
+ return LibreTranslator(source="en", target='fr')
12
+
13
+
14
+ def test_content(libre):
15
+ """Sample pytest test function with the pytest fixture as an argument."""
16
+ # from bs4 import BeautifulSoup
17
+ # assert 'GitHub' in BeautifulSoup(response.content).title.string
18
+ assert libre.translate(text='good') is not None
19
+
20
+
21
+ def test_inputs():
22
+ with pytest.raises(exceptions.LanguageNotSupportedException):
23
+ LibreTranslator(source="", target="")
24
+
25
+ with pytest.raises(exceptions.LanguageNotSupportedException):
26
+ LibreTranslator(source="auto", target="nothing")
27
+
28
+ l1 = LibreTranslator("en", "fr")
29
+ l2 = LibreTranslator("english", "french")
30
+ assert l1.source == l2.source
31
+ assert l1.target == l2.target
32
+
33
+
34
+ def test_payload(libre):
35
+ with pytest.raises(exceptions.NotValidPayload):
36
+ libre.translate("")
37
+
38
+ with pytest.raises(exceptions.NotValidPayload):
39
+ libre.translate(123)
40
+
41
+ with pytest.raises(exceptions.NotValidPayload):
42
+ libre.translate({})
43
+
44
+ with pytest.raises(exceptions.NotValidPayload):
45
+ libre.translate([])
46
+
47
+
48
+ def test_one_character_words():
49
+ assert LibreTranslator(source='es', target='en').translate('y') == 'and'