From d60dbc459b1a50e60e9d65212c9416842790fb29 Mon Sep 17 00:00:00 2001 From: gabino Date: Fri, 14 Feb 2025 12:51:11 -0600 Subject: [PATCH] Add CepNotAvailableError --- README.md | 7 + cep/exc.py | 7 + cep/transferencia.py | 22 +- ..._fail_validar_transferencia_operacion.yaml | 130 ++++++++ ...test_fail_validar_transferencia_pago.yaml} | 12 +- ...idar_transferencia_encontrada_sin_cep.yaml | 307 ++++++++++++++++++ tests/test_transferencia.py | 35 +- 7 files changed, 506 insertions(+), 14 deletions(-) create mode 100644 tests/cassettes/test_fail_validar_transferencia_operacion.yaml rename tests/cassettes/{test_fail_validar_transferencia.yaml => test_fail_validar_transferencia_pago.yaml} (77%) create mode 100644 tests/cassettes/test_validar_transferencia_encontrada_sin_cep.yaml diff --git a/README.md b/README.md index e02ebec..afcb0ff 100644 --- a/README.md +++ b/README.md @@ -76,3 +76,10 @@ Use the `descargar` method to download a transfer in one of the following format ```python tr.descargar(formato='XML') ``` + +## Exceptions + +- `NotFoundError`: The transfer was not found. +- `MaxRequestError`: The maximum number of requests has been reached. +- `CepNotAvailableError`: The transfer was found, but the CEP is not available. + diff --git a/cep/exc.py b/cep/exc.py index 7756787..e8b2b93 100644 --- a/cep/exc.py +++ b/cep/exc.py @@ -16,3 +16,10 @@ class MaxRequestError(CepError): Máximo número de peticiones alcanzadas para obtener el CEP de una transferencia """ + + +class CepNotAvailableError(CepError): + """ + La transferencia fue encontrada, pero el CEP no + está disponible. + """ diff --git a/cep/transferencia.py b/cep/transferencia.py index 0fdd2a7..5c8d73d 100644 --- a/cep/transferencia.py +++ b/cep/transferencia.py @@ -9,17 +9,26 @@ from .client import Client from .cuenta import Cuenta -from .exc import CepError, MaxRequestError, NotFoundError +from .exc import CepError, CepNotAvailableError, MaxRequestError, NotFoundError MAX_REQUEST_ERROR_MESSAGE = ( b'Lo sentimos, pero ha excedido el número máximo ' b'de consultas en este portal' ) -NOT_FOUND_ERROR_MESSAGE = ( +NO_PAYMENT_ERROR_MESSAGE = ( 'No se encontró ningún pago con la información proporcionada' ) +NO_OPERATION_ERROR_MESSAGE = ( + 'El SPEI no ha recibido una orden de pago que cumpla con el ' + 'criterio de búsqueda especificado' +) + +NO_CEP_ERROR_MESSAGE = ( + 'Con la información proporcionada se identificó el siguiente pago' +) + @dataclass class Transferencia: @@ -149,10 +158,11 @@ def _validar( receptorParticipante=1 if pago_a_banco else 0, ) resp = client.post('/valida.do', request_body) - if ( - NOT_FOUND_ERROR_MESSAGE in resp.decode('utf-8') - or b'no encontrada' in resp - ): + if NO_CEP_ERROR_MESSAGE in resp.decode('utf-8'): + raise CepNotAvailableError + if NO_PAYMENT_ERROR_MESSAGE in resp.decode( + 'utf-8' + ) or NO_OPERATION_ERROR_MESSAGE in resp.decode('utf-8'): raise NotFoundError return client diff --git a/tests/cassettes/test_fail_validar_transferencia_operacion.yaml b/tests/cassettes/test_fail_validar_transferencia_operacion.yaml new file mode 100644 index 0000000..605333c --- /dev/null +++ b/tests/cassettes/test_fail_validar_transferencia_operacion.yaml @@ -0,0 +1,130 @@ +interactions: +- request: + body: tipoCriterio=T&captcha=c&tipoConsulta=1&fecha=08-11-2024&criterio=BiB202411081016248XXX&emisor=37166&receptor=90723&cuenta=723969000011000077&monto=3414.95&receptorParticipante=0 + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '178' + Content-Type: + - application/x-www-form-urlencoded + User-Agent: + - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, + like Gecko) Chrome/75.0.3770.142 Safari/537.36 + method: POST + uri: http://www.banxico.org.mx/cep-beta/valida.do + response: + body: + string: '' + headers: + Connection: + - Keep-Alive + Content-Length: + - '0' + Location: + - https://www.banxico.org.mx/cep-beta/valida.do + Server: + - mxbanxico + status: + code: 307 + message: Temporary Redirect +- request: + body: tipoCriterio=T&captcha=c&tipoConsulta=1&fecha=08-11-2024&criterio=BiB202411081016248XXX&emisor=37166&receptor=90723&cuenta=723969000011000077&monto=3414.95&receptorParticipante=0 + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '178' + Content-Type: + - application/x-www-form-urlencoded + User-Agent: + - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, + like Gecko) Chrome/75.0.3770.142 Safari/537.36 + method: POST + uri: https://www.banxico.org.mx/cep-beta/valida.do + response: + body: + string: "\n\n \n\n\n\n\n\n\n\n + \ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\n \r\n\r\n
\r\n \r\n + \ Información del estado del pago\r\n
\r\n
\r\n + \
\r\n \r\n
Lo sentimos, + por el momento no es posible generar el CEP. Operaci\xF3n no encontrada. El + SPEI no ha recibido una orden de pago que cumpla con el criterio de b\xFAsqueda + especificado. Se recomienda verificar la informaci\xF3n o consulte con su + instituci\xF3n financiera.
\r\n \r\n + \

\r\n \r\n
\r\n \r\n
\r\n\r\n" + headers: + Content-Language: + - es-MX + Content-Length: + - '4353' + Content-Type: + - text/html; charset=UTF-8 + Date: + - Fri, 14 Feb 2025 18:25:00 GMT + Set-Cookie: + - JSESSIONID=IqkFtPWscAfquVAu7B3iqmwSXS3jX_8YkJuMjv6-i8rvv4GXfXwB!-2094109768; + path=/; secure; HttpOnly + - Hex39764011=!V/M13Dw+vDYMB7VFNVyFw/oTv40kxNntM9Cc6wJni3k2NRMa0yVJOoPIZGPZ2yztNhLv43+jmR6nNQ==; + expires=Sat, 15-Feb-2025 02:25:00 GMT; path=/; Httponly + - 'TS012f422b=01ab44a5a8be8c98dfb666a6f6f8ac94c01d11b86c3651ff0ecbb7343ae81fabb06ab50ece65a041d2c42843ec30791e5846f4307852112d127b1109f72e1adbeed6e77195de2e64a2ee899ab39b3f1723e25db831; + Path=/; ' + - TS604574e3027=083fd6a492ab2000d7d560a374810648a3ca846f27b698b39c5d5afa98be331ec435cd0bce871651080d38975e113000fb177e6916cb13c6cbec0e53e11f475bd3705e75f10b4be26a04b395977daca653a3e6e7d4a51bfa3f0ccfe876dba4de; + Path=/ + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_fail_validar_transferencia.yaml b/tests/cassettes/test_fail_validar_transferencia_pago.yaml similarity index 77% rename from tests/cassettes/test_fail_validar_transferencia.yaml rename to tests/cassettes/test_fail_validar_transferencia_pago.yaml index 626b93a..95ef59b 100644 --- a/tests/cassettes/test_fail_validar_transferencia.yaml +++ b/tests/cassettes/test_fail_validar_transferencia_pago.yaml @@ -66,15 +66,15 @@ interactions: Content-Type: - text/html; charset=UTF-8 Date: - - Thu, 13 Feb 2025 16:25:34 GMT + - Fri, 14 Feb 2025 18:24:59 GMT Set-Cookie: - - JSESSIONID=L1QAIUBvfVoiIyEPtI_zYKtEVdTdxUKW6DURwUlxUrUf5j0buoTS!-2094109768; + - JSESSIONID=i2UFtPQJ_qSQA4LOoo5U8qT4BaGkDWrx98jdKjqqx0jFe-LWqrIm!384618570; path=/; secure; HttpOnly - - Hex39764011=!gAvSQWDwuCTFl1JFNVyFw/oTv40kxLg1HD4ls3vODi3yAy5Wm3BhzgxxulALXcz3KoRgQlInngLvSA==; - expires=Fri, 14-Feb-2025 00:25:34 GMT; path=/; Httponly - - 'TS012f422b=01ab44a5a81497a889d111c7c6b7a3089924f249dd3e785c8e18d629bf521efe70d62e81d052987707a4c517bd392afa6c339df4f68ee482fea560a8b88c923a2c40cad78199bbf43b8453c9e11dd62064f4a1e0dc; + - Hex39764011=!XCF7PmHmzc2GmLpFNVyFw/oTv40kxIBv9ZJrUZn6/gd08ilD6Cp9OeDi7rdTe4T4vOjBkoi+d6KV0A==; + expires=Sat, 15-Feb-2025 02:25:00 GMT; path=/; Httponly + - 'TS012f422b=01ab44a5a861a3409779d131ae7adc973ed697f37166d6ea395011d0d355d063db0b567fa99bfbcb3f99ce7d76c8eeed8989d95d444624d9064ac79d07386af62c3b3fe6738f8c605526f2ae874ab733a34e6a01de; Path=/; ' - - TS604574e3027=083fd6a492ab2000610ffb96df3cc891ddf40e7adf2c7f4f53681407b649677c5f37ccd84082e3ea088ae78a5511300008172d082ec1c9a6ba5daced4ae245998f994aa81feace10acfa2583bbbccd3af9a668c3034f8883362e7467a2f0b9d7; + - TS604574e3027=083fd6a492ab20000a9f766d9f752ee0ee19d7263690d52f4f7108add91b9501da46d3315b57e4f908f7953b9c113000b83fb6dfc65e99efcbec0e53e11f475b2b5e72011020258f921584a6eb7633dc7071f17a4db8d0b7121424dfdccfb23d; Path=/ status: code: 200 diff --git a/tests/cassettes/test_validar_transferencia_encontrada_sin_cep.yaml b/tests/cassettes/test_validar_transferencia_encontrada_sin_cep.yaml new file mode 100644 index 0000000..84a0857 --- /dev/null +++ b/tests/cassettes/test_validar_transferencia_encontrada_sin_cep.yaml @@ -0,0 +1,307 @@ +interactions: +- request: + body: tipoCriterio=T&captcha=c&tipoConsulta=1&fecha=06-11-2024&criterio=COMPROPAG2024110610833063&emisor=90728&receptor=90723&cuenta=723969000011000077&monto=17584.28&receptorParticipante=0 + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '183' + Content-Type: + - application/x-www-form-urlencoded + User-Agent: + - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, + like Gecko) Chrome/75.0.3770.142 Safari/537.36 + method: POST + uri: http://www.banxico.org.mx/cep-beta/valida.do + response: + body: + string: '' + headers: + Connection: + - Keep-Alive + Content-Length: + - '0' + Location: + - https://www.banxico.org.mx/cep-beta/valida.do + Server: + - mxbanxico + status: + code: 307 + message: Temporary Redirect +- request: + body: tipoCriterio=T&captcha=c&tipoConsulta=1&fecha=06-11-2024&criterio=COMPROPAG2024110610833063&emisor=90728&receptor=90723&cuenta=723969000011000077&monto=17584.28&receptorParticipante=0 + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '183' + Content-Type: + - application/x-www-form-urlencoded + User-Agent: + - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, + like Gecko) Chrome/75.0.3770.142 Safari/537.36 + method: POST + uri: https://www.banxico.org.mx/cep-beta/valida.do + response: + body: + string: "\n\n \n\n\n\n\n\n\n\n + \ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\n \r\n\r\n
\r\n \r\n + \ Información del estado del pago\r\n
\r\n
\r\n + \
\r\n \r\n
Lo + sentimos, por el momento no es posible generar el CEP. Con la informaci\xF3n + proporcionada se identific\xF3 el siguiente pago:
\r\n + \ \r\n

\r\n \r\n + \ \r\n \r\n \r\n + \ \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n + \ \r\n + \ \r\n \r\n + \ \r\n \r\n + \
N\xFAmero de + Referencia4600001
Clave + de RastreoCOMPROPAG2024110610833063
Institución + emisora del pagoCompropago
Institución + receptora del pagoCuenca
Estado + del pago en BanxicoLiquidado
Fecha + y hora de recepci\xF3n06/11/2024 13:23:08
Fecha + y hora de procesamiento06/11/2024 13:23:11
Cuenta Beneficiaria723969000011000077
Monto17584.28
\r\n \r\n

\r\n + \ \r\n
\r\n \r\n
\r\n
\r\n

IMPORTANTE: Esta + consulta no es un Comprobante Electr\xF3nico de Pago (CEP). El CEP es un documento + digital que hace constar la acreditaci\xF3n del monto correspondiente a una + orden de transferencia en la cuenta beneficiaria efectuada a trav\xE9s de + este sistema. Si requieres comprobar la acreditaci\xF3n de alguna operaci\xF3n, + descarga el CEP.

\r\n
\r\n \r\n
+ \ \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n Descripción de + los estados del pago [+]
\r\n
\r\n
\r\n

En proceso

\r\n

El + SPEI® ha recibido de la institución ordenante la \r\n instrucción + de pago, pero no la ha liquidado.\r\n

\r\n
\r\n + \
\r\n + \

Liquidado

\r\n

El pago ha + sido liquidado en el SPEI® y éste \r\n ha + enviado la notificación correspondiente a la \r\n institución + del beneficiario. Dicha institución\r\n ya está + en posibilidades de depositar los \r\n recursos a + la cuenta del beneficiario.\r\n
\r\n En + caso de que los recursos no estuvieran disponibles \r\n para + el beneficiario, éste podría \r\n presentar + a la institución receptora la impresión del \r\n estado + del pago, con el fin de solicitar que se \r\n reconozca + el monto en la cuenta beneficiaria.\r\n
\r\n En + caso de que la respuesta de la institución receptora no fuera\r\n satisfactoria, + sugeriríamos presentar el caso \r\n ante la + Comisión Nacional para la \r\n Protección + y Defensa de los Usuarios de Servicios\r\n Financieros + (CONDUSEF, http://www.gob.mx/condusef). + \r\n Es importante mencionar que, el funcionamiento + de esta \r\n liga, así como su contenido, no + es \r\n responsabilidad de Banco de México. + Corresponde a\r\n la CONDUSEF su publicación + y actualización.\r\n

\r\n
\r\n + \
\r\n + \

Cancelado

\r\n

El pago fue + recibido por el SPEI®, sin embargo fue \r\n cancelado + por la institución que recibió la \r\n instrucción + de pago de su cliente, previo a que \r\n fuera liquidado + por el SPEI®.\r\n
\r\n La + institución emisora deberá reintegrar el importe del \r\n pago + al titular de la cuenta ordenante. En caso de que \r\n esto + no ocurra, el titular de la cuenta ordenante \r\n podrá + presentar a la institución emisora la \r\n impresión + del estado del pago para que le \r\n solicite que efectúe + la reintegración del\r\n monto.\r\n
\r\n + \ En caso de que la respuesta de la institución + emisora no fuera\r\n satisfactoria, sugeriríamos + presentar el caso \r\n ante la Comisión Nacional + para la \r\n Protección y Defensa de los Usuarios + de Servicios\r\n Financieros (CONDUSEF, http://www.gob.mx/condusef). + \r\n Es importante mencionar que, el funcionamiento + de esta \r\n liga, así como su contenido, no + es \r\n responsabilidad de Banco de México. + Corresponde a\r\n la CONDUSEF su publicación + y actualización.\r\n

\r\n
\r\n + \
\r\n + \

Rechazado

\r\n

El pago fue + rechazado por el SPEI® debido a errores \r\n en + la información que recibió de la \r\n institución + emisora para procesar el pago o a un\r\n problema grave + de seguridad.\r\n
\r\n La + institución emisora deberá reintegrar el importe del \r\n pago + al titular de la cuenta ordenante. En caso de que \r\n esto + no ocurra, el titular de la cuenta ordenante \r\n podrá + presentar a la institución emisora la \r\n impresión + del estado del pago para que le \r\n solicite que efectúe + la reintegración del\r\n monto.\r\n
\r\n + \ En caso de que la respuesta de la institución + emisora no fuera\r\n satisfactoria, sugeriríamos + presentar el caso \r\n ante la Comisión Nacional + para la \r\n Protección y Defensa de los Usuarios + de Servicios\r\n Financieros (CONDUSEF, http://www.gob.mx/condusef). + \r\n Es importante mencionar que, el funcionamiento + de esta \r\n liga, así como su contenido, no + es \r\n responsabilidad de Banco de México. + Corresponde a\r\n la CONDUSEF su publicación + y actualización.\r\n

\r\n
\r\n + \
\r\n

En proceso de devolución

\r\n + \

El pago fue liquidado y posteriormente devuelto por + la \r\n institución del beneficiario. La devolución + se \r\n encuentra pendiente de liquidación.\r\n + \

\r\n
\r\n
\r\n

Devuelto

\r\n + \

El pago fue devuelto por la institución del + beneficiario; dicha\r\n devolución fue liquidada + por el SPEI® e \r\n informada a la institución + que originalmente envió la \r\n orden de pago. + Este último ya está en \r\n posibilidades + de depositarlo en la cuenta del cliente\r\n que instruyó + el pago.\r\n
\r\n En caso + de que la institución que originalmente envió \r\n la + orden de pago no realice el depósito, el \r\n titular + de la cuenta ordenante podrá presentar a la\r\n institución + emisora la impresión del estado del pago \r\n para + que le solicite que efectúe el \r\n depósito + del monto.\r\n
\r\n En caso + de que la respuesta de la institución emisora no fuera\r\n satisfactoria, + sugeriríamos presentar el caso \r\n ante la + Comisión Nacional para la \r\n Protección + y Defensa de los Usuarios de Servicios\r\n Financieros + (CONDUSEF, http://www.gob.mx/condusef). + \r\n Es importante mencionar que, el funcionamiento + de esta \r\n liga, así como su contenido, no + es \r\n responsabilidad de Banco de México. + Corresponde a\r\n la CONDUSEF su publicación + y actualización.\r\n

\r\n
\r\n + \
\r\n

No liquidado

\r\n

El + pago se recibió en el SPEI® pero no pudo \r\n ser + liquidado durante la jornada operativa respectiva y\r\n al + cierre del sistema se eliminó. La institución del \r\n ordenante + deberá reintegrar el monto del pago al\r\n cliente + que le instruyó el mismo.\r\n
\r\n En + caso de que la institución ordenante no reintegre el monto\r\n del + pago a su cliente, el titular de la cuenta ordenante\r\n podrá + presentar a la institución emisora la \r\n impresión + del estado del pago para que le \r\n solicite que efectúe + la reintegración del \r\n monto.\r\n
\r\n + \ En caso de que la respuesta de la institución + emisora no fuera\r\n satisfactoria, sugeriríamos + presentar el caso \r\n ante la Comisión Nacional + para la \r\n Protección y Defensa de los Usuarios + de Servicios\r\n Financieros (CONDUSEF, http://www.gob.mx/condusef). + \r\n Es importante mencionar que, el funcionamiento + de esta \r\n liga, así como su contenido, no + es \r\n responsabilidad de Banco de México. + Corresponde a\r\n la CONDUSEF su publicación + y actualización.\r\n

\r\n
\r\n + \
\r\n + \

No encontrado

\r\n

El SPEI® + no ha recibido una orden de pago que cumpla \r\n con + el criterio de búsqueda especificado.\r\n

\r\n + \
\r\n
\r\n

Retornado

\r\n

El + pago fue retornado por la institución del beneficiario; \r\n dicho + retorno fue liquidado por el SPEI® e informado a la institución + \r\n que originalmente envió la orden de pago. + Esta última ya está \r\n en posibilidades + de depositar el monto del retorno, \r\n que puede ser + igual o menor al monto de la orden de pago original, \r\n en + la cuenta del cliente que instruyó el pago. \r\n En + caso de que la institución que originalmente envió la orden + de pago \r\n no realice el depósito, el titular + de la cuenta ordenante podr\xE1 presentar \r\n a la + institución emisora la impresión del estado del pago para que + \r\n le solicite que efectúe el depósito + del monto. \r\n En caso de que la respuesta de la institución + emisora no fuera satisfactoria, \r\n sugeriríamos + presentar el caso ante la Comisión Nacional para la Protección + y \r\n Defensa de los Usuarios de Servicios Financieros + (CONDUSEF, http://www.gob.mx/condusef)\r\n + \ Es importante mencionar que, el funcionamiento de + esta liga, as\xED como su contenido, \r\n no es responsabilidad + de Banco de México. Corresponde a la CONDUSEF su publicación + y \r\n actualización.\r\n

\r\n + \
\r\n\r\n
\r\n
\r\n
\r\n + \
\r\n
\r\n \r\n
\r\n\r\n" + headers: + Content-Language: + - es-MX + Content-Type: + - text/html; charset=UTF-8 + Date: + - Fri, 14 Feb 2025 18:41:39 GMT + Set-Cookie: + - JSESSIONID=4tAFxDUr8AY5Jb9ynpipLT5VOY_joa5Nz-oEOUf8KvY_kkgCGdTC!384618570; + path=/; secure; HttpOnly + - Hex39764011=!kEAnn/xP1qFwhqBFNVyFw/oTv40kxKdT5ia33iZXMvlIBroO3+PILU0GEACUL9gTlBH5EUUkiKA6bA==; + expires=Sat, 15-Feb-2025 02:41:41 GMT; path=/; Httponly + - 'TS012f422b=01ab44a5a8ff2f3c26e9333ef460cfdbe680a43a479bc484e924b08b99d2d0861c97712593f2e1f3610dc6fef740565570619b49bbd4480f32965811e822071ba03851633dc0c4488dea28b296ab33888a1c0c450f; + Path=/; ' + - TS604574e3027=083fd6a492ab2000c59b5f4269ebc476c05bd402e99b8e5798ba0f2a939aa88f3f27f7da6553e47108eced30be113000155eb65526041ab5b2901f1dbe77c00b06e37e5888f70b9cae2cb5fdd03f285616e473594263e852aac02636e63d70fa; + Path=/ + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/tests/test_transferencia.py b/tests/test_transferencia.py index 9175c3c..ba287c8 100644 --- a/tests/test_transferencia.py +++ b/tests/test_transferencia.py @@ -5,11 +5,16 @@ from requests.exceptions import HTTPError from cep import Transferencia -from cep.exc import CepError, MaxRequestError, NotFoundError +from cep.exc import ( + CepError, + CepNotAvailableError, + MaxRequestError, + NotFoundError, +) @pytest.mark.vcr -def test_fail_validar_transferencia(): +def test_fail_validar_transferencia_pago(): with pytest.raises(NotFoundError): Transferencia.validar( fecha=dt.date(2019, 1, 1), @@ -21,6 +26,19 @@ def test_fail_validar_transferencia(): ) +@pytest.mark.vcr +def test_fail_validar_transferencia_operacion(): + with pytest.raises(NotFoundError): + Transferencia.validar( + fecha=dt.date(2024, 11, 8), + clave_rastreo='BiB202411081016248XXX', + emisor='37166', + receptor='90723', + cuenta='723969000011000077', + monto=3414.95, + ) + + @pytest.mark.vcr def test_descarga_pdf(transferencia_tipo_1): pdf = transferencia_tipo_1.descargar() @@ -62,6 +80,19 @@ def test_maximo_numero_de_requests(): ) +@pytest.mark.vcr +def test_validar_transferencia_encontrada_sin_cep(): + with pytest.raises(CepNotAvailableError): + Transferencia.validar( + fecha=dt.date(2024, 11, 6), + clave_rastreo='COMPROPAG2024110610833063', + emisor='90728', + receptor='90723', + cuenta='723969000011000077', + monto=17584.28, + ) + + @pytest.mark.vcr def test_validar_transferencia_tipo_1(transferencia_tipo_1): tr = Transferencia.validar(