|
2 | 2 | import os |
3 | 3 | from unittest import TestCase, mock |
4 | 4 | from telesign.score import ScoreClient |
| 5 | +from urllib.parse import quote |
| 6 | + |
5 | 7 |
|
6 | 8 | class TestScoreClient(TestCase): |
7 | 9 | def setUp(self): |
8 | | - self.customer_id = os.getenv('CUSTOMER_ID', 'FFFFFFFF-EEEE-DDDD-1234-AB1234567890') |
9 | | - self.api_key = os.getenv('API_KEY', 'ABC12345yusumoN6BYsBVkh+yRJ5czgsnCehZaOYldPJdmFh6NeX8kunZ2zU1YWaUw/0wV6xfw==') |
10 | | - self.phone_number_test = os.getenv('PHONE_NUMBER', 'phone_number') |
| 10 | + self.customer_id = os.getenv( |
| 11 | + "CUSTOMER_ID", "FFFFFFFF-EEEE-DDDD-1234-AB1234567890" |
| 12 | + ) |
| 13 | + self.api_key = os.getenv( |
| 14 | + "API_KEY", |
| 15 | + "ABC12345yusumoN6BYsBVkh+yRJ5czgsnCehZaOYldPJdmFh6NeX8kunZ2zU1YWaUw/0wV6xfw==", |
| 16 | + ) |
| 17 | + self.phone_number_test = os.getenv("PHONE_NUMBER", "11234567890") |
11 | 18 | self.account_lifecycle_event = "create" |
| 19 | + self.email_address_test = os.getenv("EMAIL_ADDRESS", "support@vero-finto.com") |
12 | 20 |
|
13 | | - @mock.patch('telesign.rest.requests.Session.post') |
| 21 | + @mock.patch("telesign.rest.requests.Session.post") |
14 | 22 | def test_score_method(self, mock_post): |
15 | 23 | mock_response = mock.Mock() |
16 | 24 | mock_response.ok = True |
17 | 25 | mock_response.status_code = 200 |
18 | | - mock_response.headers = {'Content-Type': 'application/json'} |
| 26 | + mock_response.headers = {"Content-Type": "application/json"} |
19 | 27 | mock_response.json.return_value = { |
20 | | - "risk": { |
21 | | - "level": "LOW", |
22 | | - "recommendation": "allow" |
23 | | - } |
| 28 | + "risk": {"level": "LOW", "recommendation": "allow"} |
24 | 29 | } |
25 | 30 | mock_post.return_value = mock_response |
26 | 31 |
|
27 | 32 | client = ScoreClient(self.customer_id, self.api_key) |
28 | 33 | response = client.score(self.phone_number_test, self.account_lifecycle_event) |
29 | 34 |
|
30 | 35 | called_url = mock_post.call_args[0][0] |
31 | | - self.assertIn('/intelligence/phone', called_url) |
| 36 | + self.assertIn("/intelligence/phone", called_url) |
| 37 | + |
| 38 | + called_kwargs = mock_post.call_args[1] if mock_post.call_args else {} |
| 39 | + called_data = called_kwargs.get("data", "") |
| 40 | + |
| 41 | + self.assertTrue(called_data, "POST data is empty, expected form parameters") |
| 42 | + self.assertIn(f"phone_number={self.phone_number_test}", called_data) |
| 43 | + self.assertIn( |
| 44 | + f"account_lifecycle_event={self.account_lifecycle_event}", called_data |
| 45 | + ) |
| 46 | + |
| 47 | + self.assertEqual(response.status_code, 200) |
| 48 | + self.assertTrue(response.ok) |
| 49 | + self.assertEqual(response.headers.get("Content-Type"), "application/json") |
| 50 | + self.assertIn("risk", response.json) |
| 51 | + self.assertEqual(response.json["risk"]["level"], "LOW") |
| 52 | + self.assertEqual(response.json["risk"]["recommendation"], "allow") |
| 53 | + |
| 54 | + @mock.patch("telesign.rest.requests.Session.post") |
| 55 | + def test_email_intelligence_method(self, mock_post): |
| 56 | + mock_response = mock.Mock() |
| 57 | + mock_response.ok = True |
| 58 | + mock_response.status_code = 200 |
| 59 | + mock_response.headers = {"Content-Type": "application/json"} |
| 60 | + mock_response.json.return_value = { |
| 61 | + "risk": {"level": "LOW", "recommendation": "allow"} |
| 62 | + } |
| 63 | + mock_post.return_value = mock_response |
| 64 | + |
| 65 | + client = ScoreClient(self.customer_id, self.api_key) |
| 66 | + response = client.email_intelligence( |
| 67 | + self.email_address_test, self.account_lifecycle_event |
| 68 | + ) |
| 69 | + |
| 70 | + called_url = mock_post.call_args[0][0] |
| 71 | + self.assertIn("/intelligence/email", called_url) |
32 | 72 |
|
33 | 73 | called_kwargs = mock_post.call_args[1] if mock_post.call_args else {} |
34 | | - called_data = called_kwargs.get('data', '') |
| 74 | + called_data = called_kwargs.get("data", "") |
35 | 75 |
|
36 | 76 | self.assertTrue(called_data, "POST data is empty, expected form parameters") |
37 | | - self.assertIn(f'phone_number={self.phone_number_test}', called_data) |
38 | | - self.assertIn(f'account_lifecycle_event={self.account_lifecycle_event}', called_data) |
| 77 | + self.assertIn(f"email_address={quote(self.email_address_test)}", called_data) |
| 78 | + self.assertIn( |
| 79 | + f"account_lifecycle_event={self.account_lifecycle_event}", called_data |
| 80 | + ) |
39 | 81 |
|
40 | 82 | self.assertEqual(response.status_code, 200) |
41 | 83 | self.assertTrue(response.ok) |
42 | | - self.assertEqual(response.headers.get('Content-Type'), 'application/json') |
43 | | - self.assertIn('risk', response.json) |
44 | | - self.assertEqual(response.json['risk']['level'], 'LOW') |
45 | | - self.assertEqual(response.json['risk']['recommendation'], 'allow') |
| 84 | + self.assertEqual(response.headers.get("Content-Type"), "application/json") |
| 85 | + self.assertIn("risk", response.json) |
| 86 | + self.assertEqual(response.json["risk"]["level"], "LOW") |
| 87 | + self.assertEqual(response.json["risk"]["recommendation"], "allow") |
0 commit comments