You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
El script `test_code.sh` es una herramienta automatizada para procesar archivos que contienen bloques de código fuente en diferentes lenguajes de programación (Java, Node.js, Python, ...), extraer esos bloques de código por lenguaje de programación y caso de uso especifico. Una vez extraido y formateado, se testean y/o se ejecutan herramientas linter, para chequear su corrección y funcionamiento en la medida de lo posible.
4
+
El directorio `test` contiene una suite completa de testing automatizado para todas las APIs de OpenGateway. Incluye:
5
+
6
+
1.**Extractor de código de muestra**: El script `test_code.sh` procesa archivos que contienen bloques de código fuente en diferentes lenguajes de programación (Java, Node.js, Python), los extrae, formatea y valida automáticamente.
7
+
8
+
2.**Suite de tests completa**:
9
+
-**Tests de Python** (`python_test.py`): 9 tests unitarios con mocks para todas las APIs
10
+
-**Tests de Node.js** (`nodeSandbox.test.js`): 9 tests de integración con el SDK oficial
11
+
-**Tests de validación HTML** (`htmlForm.test.js`): Validación de configuraciones de formularios
12
+
13
+
3.**SDK Mock personalizado** (`mock_aggregator_sdk.py`): Implementación mock completa para testing sin dependencias externas.
14
+
15
+
## APIs Soportadas
16
+
17
+
El sistema de testing tiene cobertura completa para las siguientes 9 APIs de OpenGateway:
18
+
19
+
1.**AgeVerification** - Verificación de edad de usuarios
20
+
2.**DeviceLocation** - Verificación de ubicación de dispositivos
21
+
3.**DeviceStatus** - Estado de conectividad y roaming
22
+
4.**DeviceSwap** - Detección de cambios de dispositivo
23
+
5.**KnowYourCustomer** - Verificación de datos de cliente (KYC)
24
+
6.**NumberVerification** - Verificación de números de teléfono
25
+
7.**QualityOnDemand** - Gestión de calidad de servicio (QoD)
26
+
8.**Simswap** - Detección de intercambio de SIM
27
+
9.**Tenure** - Verificación de antigüedad de cliente
28
+
29
+
## Archivos de Testing
30
+
31
+
### Archivos principales:
32
+
-`test_code.sh` - Script principal de orquestación
33
+
-`python_test.py` - Suite de tests de Python (9 tests)
34
+
-`nodeSandbox.test.js` - Suite de tests de Node.js (9 tests)
35
+
-`htmlForm.test.js` - Tests de validación HTML (4 tests)
36
+
-`mock_aggregator_sdk.py` - SDK mock para testing Python
37
+
-`package.json` - Configuración de dependencias Node.js
38
+
39
+
### Configuración:
40
+
-`babel.config.js` - Configuración de Babel para ES6
41
+
-`eslint.config.mjs` - Configuración de ESLint
42
+
-`.gitignore` - Exclusiones de archivos temporales
5
43
6
44
## Premisas
7
-
El script sólo analiza los archivos ubicados en el directorio `../catalog`, cuyo nombre coincide con el formato `samplecode_<nombre_api>.md`.
45
+
El extractor de código analiza archivos ubicados en el directorio `../catalog`, cuyo nombre coincide con el formato `samplecode_<nombre_api>.md`.
8
46
9
47
Para que el script funcione correctamente, los archivos `samplecode_*.md` deben seguir el template actual para los bloques de código, es decir, cumplir las siguientes reglas:
10
48
- Los archivos deben estar ubicados en el directorio `../catalog`.
@@ -16,20 +54,49 @@ Para que el script funcione correctamente, los archivos `samplecode_*.md` deben
16
54
17
55
## Funcionamiento
18
56
19
-
El script realiza las siguientes tareas o pasos:
57
+
### Script Principal (`test_code.sh`)
58
+
El script de orquestación realiza las siguientes tareas:
59
+
60
+
1.**Extracción de código**: Procesa archivos `samplecode_*.md` y extrae bloques de código por lenguaje
61
+
2.**Corrección automática**: Aplica fixes automáticos para imports y sintaxis de Python
62
+
3.**Generación de SDKs simplificados**: Crea versiones mock para APIs problemáticas
63
+
4.**Ejecución de tests**: Ejecuta la suite completa de Python y Node.js
64
+
5.**Linting**: Valida código con ESLint (JavaScript) y flake8 (Python)
20
65
21
-
1. Elimina datos de ejecuciones anteriores y crea una carpeta temporal para almacenar archivos procesados.
22
-
2. Recorre archivos `samplecode_*.md` en el directorio `../catalog` y extrae bloques de código, organizándolos en carpetas temporales según el lenguaje de programación.
23
-
3. Reorganiza el código en los archivos Node.js y Python extraídos cuyo nombre empieza por Auth_code, para colocar el código de "uso de API" en la posición correcta en el código, ya que inicialmente la primera parte del script, solo agrupa el código de los bloques secuencialmente.
24
-
4. Ejecuta pruebas y linters para los archivos procesados.
66
+
### Tests de Python (`python_test.py`)
67
+
-**Framework**: unittest con mock
68
+
-**Cobertura**: 9 APIs con tests individuales
69
+
-**Mock SDK**: Utiliza `mock_aggregator_sdk.py` para simular respuestas
70
+
-**Validación**: Verifica llamadas correctas y respuestas esperadas
71
+
72
+
### Tests de Node.js (`nodeSandbox.test.js`)
73
+
-**Framework**: Jest con mocks del SDK oficial
74
+
-**Cobertura**: 9 APIs con configuraciones específicas
-**Validación**: Tests de instanciación y métodos principales
77
+
78
+
### Tests HTML (`htmlForm.test.js`)
79
+
-**Propósito**: Valida configuraciones de formularios web
80
+
-**Cobertura**: Scope y redirect URLs para todas las APIs
81
+
-**Framework**: Jest con JSDOM para manipulación DOM
25
82
26
83
## Requisitos
27
84
28
-
Para ejecutar este script, necesitas tener instalados los siguientes programas y herramientas:
85
+
### Sistema base:
86
+
-**Bash**: Shell compatible con Bash (zsh también funciona)
87
+
-**Git**: Para gestión de versiones
88
+
89
+
### Node.js:
90
+
-**Node.js** (v14+): Runtime de JavaScript
91
+
-**npm**: Gestor de paquetes (incluido con Node.js)
92
+
-**jest**: Framework de testing para JavaScript
93
+
-**eslint**: Linter para JavaScript/TypeScript
29
94
30
-
-**Bash**: Un shell compatible con Bash.
31
-
-**Node.js**: Incluyendo `npx` y `jest` para ejecutar pruebas y linters.
32
-
-**Python**: Incluyendo `flake8` para ejecutar linters.
95
+
### Python:
96
+
-**Python** (v3.7+): Intérprete de Python
97
+
-**pip**: Gestor de paquetes de Python
98
+
-**flake8**: Linter para Python
99
+
-**unittest**: Framework de testing (incluido en Python)
33
100
34
101
## Instalación
35
102
@@ -56,19 +123,79 @@ Para ejecutar este script, necesitas tener instalados los siguientes programas y
56
123
57
124
## Ejecución
58
125
59
-
Para ejecutar el script `test_code.sh`, sigue estos pasos:
60
-
61
-
1. Asegúrate de que los requisitos estén instalados.
62
-
2. Navega al directorio `test` donde se encuentra el script `test_code.sh`.
63
-
3. Ejecuta el script con el siguiente comando:
64
-
```bash
65
-
./test_code.sh
66
-
```
67
-
El script procesará los archivos de código fuente, reorganizará los bloques de código y ejecutará las pruebas y linters correspondientes. Los resultados se mostrarán en la terminal.
68
-
69
-
Notas:
70
-
* Asegúrate de tener permisos de ejecución para el script. Si no los tienes, puedes otorgarlos con el siguiente comando:
71
-
```bash
72
-
chmod +x test_code.sh
73
-
```
74
-
* Analiza la salida del script y ten encuenta que algunos de los warnings tiene sentido no corregirlos. Por ejemplo, algunas variables no se utilizan en el código pero se mantienen para que los usuarios tengan claro que existen y se pueden utilizar.
126
+
### Ejecución completa (recomendada)
127
+
```bash
128
+
cdtest
129
+
chmod +x test_code.sh # Solo la primera vez
130
+
./test_code.sh
131
+
```
132
+
133
+
### Ejecución individual de tests
134
+
135
+
**Solo tests de Python:**
136
+
```bash
137
+
cdtest
138
+
python python_test.py
139
+
```
140
+
141
+
**Solo tests de Node.js:**
142
+
```bash
143
+
cdtest
144
+
npm test
145
+
# O específicamente:
146
+
npx jest nodeSandbox.test.js
147
+
npx jest htmlForm.test.js
148
+
```
149
+
150
+
**Solo linting:**
151
+
```bash
152
+
cdtest
153
+
# JavaScript/Node.js
154
+
npx eslint tmp/js/**/*.js
155
+
156
+
# Python
157
+
flake8 tmp/py/
158
+
```
159
+
160
+
## Resultados Esperados
161
+
162
+
### ✅ Ejecución Exitosa
163
+
```
164
+
################### Python test ##################################
165
+
Ran 9 tests in 0.011s
166
+
OK
167
+
168
+
################### Node & html test ##################################
169
+
Test Suites: 2 passed, 2 total
170
+
Tests: 13 passed, 13 total
171
+
```
172
+
173
+
### ⚠️ Warnings Esperados
174
+
- **ESLint warnings en `/tmp`**: Archivos generados automáticamente pueden tener warnings de estilo
175
+
- **Variables no utilizadas**: Algunas variables se mantienen para claridad educativa
176
+
- **Syntax errors en archivos generados**: Algunos archivos en `/tmp` pueden tener errores de sintaxis menores
177
+
178
+
## Estructura de Archivos Generados
179
+
180
+
```
181
+
test/
182
+
├── tmp/ # Archivos temporales generados
183
+
│ ├── js/ # Código JavaScript extraído
184
+
│ │ ├── devicelocation/ # Por API
185
+
│ │ ├── simswap/
186
+
│ │ └── ...
187
+
│ ├── py/ # Código Python extraído
188
+
│ └── html/ # Código HTML extraído
189
+
├── python_test.py # Tests principales Python
190
+
├── nodeSandbox.test.js # Tests principales Node.js
191
+
├── htmlForm.test.js # Tests de formularios HTML
192
+
├── mock_aggregator_sdk.py # SDK mock para Python
193
+
└── test_code.sh # Script orquestador
194
+
```
195
+
196
+
## Notas Importantes
197
+
198
+
- El directorio `/tmp` se regenera en cada ejecución
199
+
- Los tests utilizan datos mock, no requieren conectividad real
200
+
- Algunos warnings de linting son intencionales para mantener claridad educativa
201
+
- Los archivos en `/tmp` son para validación automática, no para uso directo
0 commit comments