Skip to content

Commit c5c7c82

Browse files
committed
Se añadieron los workflow ci.yml y docs.yml. Se hizo un desgloce del README.rst, y se colocó en una carpeta llamada docs. Se añadieron badges al README principal y al index.rst dentro de docs. Se modificó run.py en la carpeta tests para que pueda ejecutar el test automatizado dentro de ci.yml.
1 parent 449b320 commit c5c7c82

13 files changed

Lines changed: 409 additions & 152 deletions

.github/workflows/ci.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- master # Ejecuta pruebas al hacer push en la rama 'master'
7+
8+
env:
9+
env_var: ${{ vars.ENV_CONTEXT_VAR }}
10+
11+
jobs:
12+
test:
13+
runs-on: ubuntu-latest
14+
15+
strategy:
16+
matrix:
17+
python-version: ['3.11'] # Puedes cambiar las versiones según necesites
18+
19+
steps:
20+
- name: Check out repository code
21+
uses: actions/checkout@v3
22+
23+
- name: Setup Python ${{ matrix.python-version }}
24+
uses: actions/setup-python@v4
25+
with:
26+
python-version: ${{ matrix.python-version }} # Configura la versión de Python desde la matriz
27+
28+
- name: Install dependencies
29+
run: |
30+
python -m pip install --upgrade pip
31+
pip install -r requirements.txt
32+
33+
- name: Run Python tests
34+
env:
35+
APIGATEWAY_API_TOKEN: ${{ secrets.APIGATEWAY_API_TOKEN }}
36+
TEST_CONTRIBUYENTE_RUT: ${{ vars.TEST_CONTRIBUYENTE_IDENTIFICADOR }} # Variable necesaria para test_contribuyentes.
37+
run: |
38+
python3 tests/run.py sii.test_actividades_economicas
39+
python3 tests/run.py sii.test_contribuyentes
40+
python3 tests/run.py sii.test_indicadores
41+
42+
- name: Upload pytest result report
43+
if: failure()
44+
uses: actions/upload-artifact@v4
45+
with:
46+
name: tests-results-python_${{ matrix.python-version }}.xml
47+
path: var/tests-results.xml
48+
49+
- name: Upload Coverage Report
50+
uses: actions/upload-artifact@v4
51+
with:
52+
name: tests-coverage-python_${{ matrix.python-version }}.xml
53+
path: var/tests-coverage.xml
54+
55+
- name: Display Python version
56+
run: python --version

.github/workflows/docs.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Docs
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- master
8+
9+
jobs:
10+
docs:
11+
name: Docs
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Check out repository
16+
uses: actions/checkout@v4
17+
18+
- name: Set up Python
19+
uses: actions/setup-python@v4
20+
with:
21+
python-version: '3.11'
22+
23+
- name: Install Sphinx and dependencies
24+
run: |
25+
python -m pip install --upgrade pip
26+
pip install sphinx sphinx-rtd-theme
27+
28+
- name: Build Documentation
29+
run: |
30+
sphinx-build -b html docs/ build/docs
31+
32+
- name: Create CNAME file
33+
run: echo "api-client-python.docs.apigateway.cl" > build/docs/CNAME
34+
35+
- name: Deploy to GitHub Pages
36+
if: success()
37+
uses: peaceiris/actions-gh-pages@v4
38+
with:
39+
github_token: ${{ secrets.GITHUB_TOKEN }}
40+
publish_dir: ./build/docs
41+
publish_branch: gh-pages

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
venv
33
__pycache__
44
*.pyc
5+
ejemplo-prueba.py
56

67
# Archivos de documentación
78
docs/_build/

README.rst

Lines changed: 9 additions & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -7,159 +7,20 @@ API Gateway: Cliente de API en Python
77
:target: https://pypi.org/project/apigatewaycl
88
.. image:: https://img.shields.io/pypi/pyversions/apigatewaycl.svg
99
:target: https://pypi.org/project/apigatewaycl
10+
.. image:: https://scrutinizer-ci.com/g/apigatewaycl/apigateway-api-client-python/badges/quality-score.png?b=master
11+
:target: https://scrutinizer-ci.com/g/apigatewaycl/apigateway-api-client-python/
12+
.. image:: https://scrutinizer-ci.com/g/apigatewaycl/apigateway-api-client-python/badges/coverage.png?b=master
13+
:target: https://scrutinizer-ci.com/g/apigatewaycl/apigateway-api-client-python/
14+
.. image:: https://app.fossa.com/api/projects/git%2Bgithub.com%2Fapigatewaycl%2Fapigateway-api-client-python.svg?type=shield&issueType=license
15+
:target: https://app.fossa.com/projects/git%2Bgithub.com%2Fapigatewaycl%2Fapigateway-api-client-python?ref=badge_shield&issueType=license
16+
.. image:: https://app.fossa.com/api/projects/git%2Bgithub.com%2Fapigatewaycl%2Fapigateway-api-client-python.svg?type=shield&issueType=security
17+
:target: https://app.fossa.com/projects/git%2Bgithub.com%2Fapigatewaycl%2Fapigateway-api-client-python?ref=badge_shield&issueType=security
1018
.. image:: https://img.shields.io/pypi/l/apigatewaycl.svg
1119
:target: https://raw.githubusercontent.com/apigatewaycl/apigateway-api-client-python/master/COPYING
1220

1321
Cliente para realizar la integración con los servicios web de `API Gateway <https://www.apigateway.cl>`_ desde Python.
1422

15-
Instalación y actualización
16-
---------------------------
17-
18-
Instalar usando un entorno virtual y PIP con:
19-
20-
.. code:: shell
21-
22-
python3 -m venv venv
23-
source venv/bin/activate
24-
pip install apigatewaycl
25-
26-
Actualizar usando PIP con:
27-
28-
.. code:: shell
29-
30-
pip install apigatewaycl --upgrade
31-
32-
Cliente genérico vs clientes específicos
33-
----------------------------------------
34-
35-
Este cliente de API Gateway tiene 2 formas de acceder a los recursos de la API:
36-
37-
1. Cliente genérico: es un cliente que permite consumir de manera sencilla cualquier
38-
recurso de la API. Que actualmente exista o sea añadido en el futuro. Esto se logra
39-
porque el cliente recibe los nombres de los recursos, la parte de la URL que permite
40-
acceder al servicio web solicitado. Se proveen métodos que sólo sirven para acceder
41-
a la API de manera genérica, pero no para hacer acciones específicas ni obtener los
42-
datos en un formato específico. Este cliente es el que entrega mayor flexibilidad, ya
43-
que cada programador decide qué recursos desea consumir y cómo desea obtener los datos.
44-
45-
2. Clientes específicos: son clases que permiten acceder de forma más natural a los
46-
recursos de la API. Al instanciar la clase, se tendrán métodos sencillos con parámetros
47-
para consumir la API. Sin ser necesario preocuparse de recordar o buscar en la
48-
documentación el nombre de los recursos que se deben consumir. Además de entregar los
49-
datos ya "listos" para ser usados en vez de tener que preocuparse de qué método del
50-
cliente genérico usar para obtenerlos en el formato requerido.
51-
52-
Autenticación en API Gateway
53-
----------------------------
54-
55-
Lo más simple, y recomendado, es usar una variable de entorno con el
56-
`token del usuario <https://apigateway.cl/dashboard#api-auth>`_, la cual será
57-
reconocida automáticamente por el cliente:
58-
59-
.. code:: shell
60-
61-
export APIGATEWAY_API_TOKEN="aquí-tu-token-de-usuario"
62-
63-
Si no se desea usar una variable de entorno, al instanciar los objetos se
64-
deberá indicar el token del usuario. Ejemplo con el cliente genérico:
65-
66-
.. code:: python
67-
68-
import apigatewaycl
69-
APIGATEWAY_API_TOKEN = "aquí-tu-token-de-usuario"
70-
client = apigatewaycl.api_client.ApiClient(APIGATEWAY_API_TOKEN)
71-
72-
El siguiente es un ejemplo con el cliente específico de Rcv. Primero se pasan
73-
los datos obligatorios de RUT y clave del usuario. Luego además se pasa el token
74-
delusuario de la API.
75-
76-
.. code:: python
77-
78-
import apigatewaycl
79-
APIGATEWAY_API_TOKEN = "aquí-tu-token-de-usuario"
80-
SII_USUARIO_RUT = ""
81-
SII_USUARIO_CLAVE = ""
82-
rcv_client = Rcv(SII_USUARIO_RUT, SII_USUARIO_CLAVE, api_token = APIGATEWAY_API_TOKEN)
83-
84-
Si se usan variables de entorno, en ambos ejemplos se puede omitir el argumento `api_token`.
85-
86-
Pruebas
87-
-------
88-
89-
Las pruebas utilizan un archivo llamado `test.env`, que sirve para definir todas las variables de entorno
90-
necesarias para ejecutar estas pruebas.
91-
92-
Estas pruebas utilizan `unittest`, se ejecutan con el archivo `run.py`, y dependiendo de cómo se configure
93-
`test.env`, se pueden omitir ciertas pruebas. Asegúrate de definir las siguientes variables en `test.env`,
94-
o no podrás efectuar la mayoría de las pruebas:
95-
96-
- `APIGATEWAY_API_URL`
97-
- `APIGATEWAY_API_TOKEN`
98-
- `TEST_CONTRIBUYENTE_IDENTIFICADOR`
99-
- `TEST_CONTRIBUYENTE_CLAVE`
100-
- `TEST_USUARIO_IDENTIFICADOR`
101-
- `TEST_USUARIO_CLAVE`
102-
- `TEST_PORTAL_MIPYME_CONTRIBUYENTE_RUT`
103-
104-
Para ejecutar las pruebas unitarias, debes ejecutar el siguiente código en consola desde la raíz del proyecto:
105-
106-
.. code:: shell
107-
108-
python tests/run.py
109-
110-
Si quieres ejecutar una prueba específica, deberás especificar el nombre y ruta:
111-
112-
.. code:: shell
113-
114-
python tests/run.py sii.test_actividades_economicas.TestSiiActividadesEconomicas.test_listado
115-
116-
Para ejecutar otros ejemplos, deberás reemplazar desde `test_actividades_economicas` para adelante por el nombre
117-
y ruta de alguna de las otras pruebas descritas posteriormente.
118-
119-
A continuación se pondrán instrucciones de cómo probar el cliente de API de Python:
120-
121-
* `test_actividades_economicas`:
122-
* `test_listado()`:
123-
- Prueba que permite obtener un listado de todas las Actividades económicas del SII por omisión.
124-
- Ruta completa: `sii.test_actividades_economicas.TestSiiActividadesEconomicas.test_listado`
125-
- Variables necesarias: `Ninguna`
126-
- Variable de ejecución: `Ninguna`
127-
* `test_listado_primera_categoria()`:
128-
- Prueba que permite obtener un listado de todas las Actividades económicas de primera categoría del SII.
129-
- Ruta completa: `sii.test_actividades_economicas.TestSiiActividadesEconomicas.test_listado_primera_categoria`
130-
- Variables necesarias: `Ninguna`
131-
- Variable de ejecución: `Ninguna`
132-
* `test_listado_segunda_categoria()`:
133-
- Prueba que permite obtener un listado de todas las Actividades económicas de segunda categoría del SII.
134-
- Ruta completa: `sii.test_actividades_economicas.TestSiiActividadesEconomicas.test_listado_segunda_categoria`
135-
- Variables necesarias: `Ninguna`
136-
- Variable de ejecución: `Ninguna`
137-
* `test_bhe_emitidas`:
138-
* `test_documentos()`
139-
- Prueba que permite obtener todas las BHE emitidas por un contribuyente.
140-
- Ruta completa: `sii.test_bhe_emitidas.TestSiiBheEmitidas.test_documentos`
141-
- Variables necesarias: `Ninguna`
142-
- Variable de ejecución: `Ninguna`
143-
* `test_pdf()`
144-
- Prueba que permite obtener el PDF de una BHE emitida.
145-
- Ruta completa: `sii.test_bhe_emitidas.TestSiiBheEmitidas.test_pdf`
146-
- Variables necesarias: `TEST_PERIODO`
147-
- Variable de ejecución: `len(documentos)`
148-
* `test_emitir()`
149-
- Prueba que permite emitir una BHE.
150-
- Ruta completa: `sii.test_bhe_emitidas.TestSiiBheEmitidas.test_emitir`
151-
- Variables necesarias: `TEST_BHE_EMITIDAS_RECEPTOR_RUT`, `TEST_BHE_EMITIDAS_FECHA_EMISION`
152-
- Variable de ejecución: `TEST_BHE_EMITIDAS_RECEPTOR_RUT`
153-
* `test_email()`
154-
- Prueba que permite enviar un email a un destinatario con su BHE emitida.
155-
- Ruta completa: `sii.test_bhe_emitidas.TestSiiBheEmitidas.test_email`
156-
- Variables necesarias: `TEST_BHE_EMITIDAS_BOLETA_CODIGO`, `TEST_BHE_EMITIDAS_RECEPTOR_EMAIL`
157-
- Variable de ejecución: `TEST_BHE_EMITIDAS_BOLETA_CODIGO`, `TEST_BHE_EMITIDAS_RECEPTOR_EMAIL`
158-
* `test_anular()`
159-
- Prueba que permite anular una BHE emitida.
160-
- Ruta completa: `sii.test_bhe_emitidas.TestSiiBheEmitidas.test_anular`
161-
- Variables necesarias: `TEST_BHE_EMITIDAS_BOLETA_NUMERO`
162-
- Variable de ejecución: `TEST_BHE_EMITIDAS_BOLETA_NUMERO`
23+
Revisa la `documentación <https://api-client-python.docs.apigateway.cl>`_ de la biblioteca para más información, sus características y detalles de su uso.
16324

16425
Licencia
16526
--------

docs/dev.index.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Desarrollo
2+
==========
3+
4+
.. toctree::
5+
:maxdepth: 1
6+
7+
dev.unittest

docs/dev.unittest.rst

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
Pruebas Unitarias
2+
=================
3+
4+
Las pruebas utilizan un archivo llamado `test.env`, que sirve para definir todas las variables de entorno
5+
necesarias para ejecutar estas pruebas.
6+
7+
Estas pruebas utilizan `unittest`, se ejecutan con el archivo `run.py`, y dependiendo de cómo se configure
8+
`test.env`, se pueden omitir ciertas pruebas. Asegúrate de definir las siguientes variables en `test.env`,
9+
o no podrás efectuar la mayoría de las pruebas:
10+
11+
- `APIGATEWAY_API_URL`
12+
- `APIGATEWAY_API_TOKEN`
13+
- `TEST_CONTRIBUYENTE_IDENTIFICADOR`
14+
- `TEST_CONTRIBUYENTE_CLAVE`
15+
- `TEST_USUARIO_IDENTIFICADOR`
16+
- `TEST_USUARIO_CLAVE`
17+
- `TEST_PORTAL_MIPYME_CONTRIBUYENTE_RUT`
18+
19+
Para ejecutar las pruebas unitarias, debes ejecutar el siguiente código en consola desde la raíz del proyecto:
20+
21+
.. code:: shell
22+
23+
python tests/run.py
24+
25+
Si quieres ejecutar una prueba específica, deberás especificar el nombre y ruta:
26+
27+
.. code:: shell
28+
29+
python tests/run.py sii.test_actividades_economicas.TestSiiActividadesEconomicas.test_listado
30+
31+
Para ejecutar otros ejemplos, deberás reemplazar desde `test_actividades_economicas` para adelante por el nombre
32+
y ruta de alguna de las otras pruebas descritas posteriormente.
33+
34+
A continuación se pondrán instrucciones de cómo probar el cliente de API de Python:
35+
36+
* `test_actividades_economicas`:
37+
* `test_listado()`:
38+
- Prueba que permite obtener un listado de todas las Actividades económicas del SII por omisión.
39+
- Ruta completa: `sii.test_actividades_economicas.TestSiiActividadesEconomicas.test_listado`
40+
- Variables necesarias: `Ninguna`
41+
- Variable de ejecución: `Ninguna`
42+
* `test_listado_primera_categoria()`:
43+
- Prueba que permite obtener un listado de todas las Actividades económicas de primera categoría del SII.
44+
- Ruta completa: `sii.test_actividades_economicas.TestSiiActividadesEconomicas.test_listado_primera_categoria`
45+
- Variables necesarias: `Ninguna`
46+
- Variable de ejecución: `Ninguna`
47+
* `test_listado_segunda_categoria()`:
48+
- Prueba que permite obtener un listado de todas las Actividades económicas de segunda categoría del SII.
49+
- Ruta completa: `sii.test_actividades_economicas.TestSiiActividadesEconomicas.test_listado_segunda_categoria`
50+
- Variables necesarias: `Ninguna`
51+
- Variable de ejecución: `Ninguna`
52+
* `test_bhe_emitidas`:
53+
* `test_documentos()`
54+
- Prueba que permite obtener todas las BHE emitidas por un contribuyente.
55+
- Ruta completa: `sii.test_bhe_emitidas.TestSiiBheEmitidas.test_documentos`
56+
- Variables necesarias: `Ninguna`
57+
- Variable de ejecución: `Ninguna`
58+
* `test_pdf()`
59+
- Prueba que permite obtener el PDF de una BHE emitida.
60+
- Ruta completa: `sii.test_bhe_emitidas.TestSiiBheEmitidas.test_pdf`
61+
- Variables necesarias: `TEST_PERIODO`
62+
- Variable de ejecución: `len(documentos)`
63+
* `test_emitir()`
64+
- Prueba que permite emitir una BHE.
65+
- Ruta completa: `sii.test_bhe_emitidas.TestSiiBheEmitidas.test_emitir`
66+
- Variables necesarias: `TEST_BHE_EMITIDAS_RECEPTOR_RUT`, `TEST_BHE_EMITIDAS_FECHA_EMISION`
67+
- Variable de ejecución: `TEST_BHE_EMITIDAS_RECEPTOR_RUT`
68+
* `test_email()`
69+
- Prueba que permite enviar un email a un destinatario con su BHE emitida.
70+
- Ruta completa: `sii.test_bhe_emitidas.TestSiiBheEmitidas.test_email`
71+
- Variables necesarias: `TEST_BHE_EMITIDAS_BOLETA_CODIGO`, `TEST_BHE_EMITIDAS_RECEPTOR_EMAIL`
72+
- Variable de ejecución: `TEST_BHE_EMITIDAS_BOLETA_CODIGO`, `TEST_BHE_EMITIDAS_RECEPTOR_EMAIL`
73+
* `test_anular()`
74+
- Prueba que permite anular una BHE emitida.
75+
- Ruta completa: `sii.test_bhe_emitidas.TestSiiBheEmitidas.test_anular`
76+
- Variables necesarias: `TEST_BHE_EMITIDAS_BOLETA_NUMERO`
77+
- Variable de ejecución: `TEST_BHE_EMITIDAS_BOLETA_NUMERO`

0 commit comments

Comments
 (0)