Tesis 1.0.0
Loading...
Searching...
No Matches
test_cart_service.py
Go to the documentation of this file.
1from django.test import TestCase
2from unittest.mock import patch, MagicMock
3from payment_service.services import CartService
4from django.conf import settings
5
6class CartServiceTests(TestCase):
7 """
8 Pruebas para el servicio CartService que interactúa con el backend principal
9 """
10
11 def setUp(self):
12 self.test_token = "test_token_1234567890"
14 "productos": [
15 {
16 "id": 1,
17 "nombre": "Hamburguesa Clásica",
18 "descripcion": "Hamburguesa con queso y lechuga",
19 "precio": 500.0,
20 "cantidad": 2
21 }
22 ],
23 "total": 1000.0
24 }
25
26 @patch('payment_service.services.requests.get')
27 def test_get_cart_success(self, mock_get):
28 # Configurar el mock para simular una respuesta exitosa
29 mock_response = MagicMock()
30 mock_response.status_code = 200
31 mock_response.json.return_value = self.test_cart_data
32 mock_get.return_value = mock_response
33
34 # Llamar al método que queremos probar
35 result = CartService.get_cart(self.test_token)
36
37 # Verificar que se llamó a requests.get con los parámetros correctos
38 expected_url = f"{settings.MAIN_BACKEND_URL}/appCART/ver/"
39 mock_get.assert_called_once()
40 args, kwargs = mock_get.call_args
41 self.assertEqual(args[0], expected_url)
42
43 # Verificar el formato del token en el header
44 self.assertIn('Authorization', kwargs['headers'])
45 self.assertTrue(kwargs['headers']['Authorization'].startswith('Token '))
46
47 # Verificar que se devolvió el carrito correctamente
48 self.assertEqual(result, self.test_cart_data)
49
50 @patch('payment_service.services.requests.get')
51 def test_get_cart_with_jwt_token(self, mock_get):
52 # Configurar un token JWT (comienza con "ey")
53 jwt_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test.token"
54
55 # Configurar el mock para simular una respuesta exitosa
56 mock_response = MagicMock()
57 mock_response.status_code = 200
58 mock_response.json.return_value = self.test_cart_data
59 mock_get.return_value = mock_response
60
61 # Llamar al método que queremos probar
62 result = CartService.get_cart(jwt_token)
63
64 # Verificar que se usó el formato correcto de encabezado para JWT
65 args, kwargs = mock_get.call_args
66 self.assertIn('Authorization', kwargs['headers'])
67 self.assertTrue(kwargs['headers']['Authorization'].startswith('Bearer '))
68
69 # Verificar que se devolvió el carrito correctamente
70 self.assertEqual(result, self.test_cart_data)
71
72 @patch('payment_service.services.requests.get')
73 def test_get_cart_error(self, mock_get):
74 # Configurar el mock para simular un error
75 mock_response = MagicMock()
76 mock_response.status_code = 404
77 mock_response.text = "Carrito no encontrado"
78 mock_get.return_value = mock_response
79
80 # Llamar al método que queremos probar
81 result = CartService.get_cart(self.test_token)
82
83 # Verificar que se devuelve None cuando hay un error
84 self.assertIsNone(result)