155 lines
4.3 KiB
Python
155 lines
4.3 KiB
Python
#!/usr/bin/env python3
|
|
# coding: utf-8
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
p = str(Path(__file__).resolve().parent.parent)
|
|
sys.path.insert(0, p)
|
|
|
|
import unittest
|
|
from test_config import *
|
|
from cfdi_cert import CertValidate, CertSign
|
|
|
|
|
|
# ~ @unittest.SkipTest
|
|
|
|
|
|
class BaseTest(unittest.TestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
pass
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
pass
|
|
|
|
def setUp(self):
|
|
msg = f'In method: {self._testMethodName}'
|
|
print(msg)
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
|
|
class TestCertValidate(BaseTest):
|
|
|
|
def test_validate_not_vigente(self):
|
|
path_cer = path_certs / 'novigente.cer'
|
|
path_key = path_certs / 'novigente.key'
|
|
cer = path_cer.read_bytes()
|
|
key = path_key.read_bytes()
|
|
|
|
cert = CertValidate()
|
|
result = cert.validate(cer, key, PASSWORD)
|
|
self.assertFalse(result)
|
|
|
|
expected = 'El certificado no es vigente'
|
|
result = cert.error
|
|
self.assertEqual(expected, result)
|
|
return
|
|
|
|
def test_validate_not_couple(self):
|
|
path_cer = path_certs / 'nopareja.cer'
|
|
path_key = path_certs / 'nopareja.key'
|
|
cer = path_cer.read_bytes()
|
|
key = path_key.read_bytes()
|
|
|
|
cert = CertValidate()
|
|
result = cert.validate(cer, key, PASSWORD)
|
|
self.assertFalse(result)
|
|
|
|
expected = 'El CER y el KEY no son pareja'
|
|
result = cert.error
|
|
self.assertEqual(expected, result)
|
|
return
|
|
|
|
def test_validate_wrong_password(self):
|
|
cert = CertValidate()
|
|
cer = path_cer.read_bytes()
|
|
key = path_key.read_bytes()
|
|
|
|
result = cert.validate(cer, key, 'letmein')
|
|
self.assertFalse(result)
|
|
|
|
expected = 'La contraseña es incorrecta'
|
|
result = cert.error
|
|
self.assertEqual(expected, result)
|
|
return
|
|
|
|
def test_get_key_enc_pem(self):
|
|
cert = CertValidate()
|
|
cer = path_cer.read_bytes()
|
|
key = path_key.read_bytes()
|
|
|
|
result = cert.validate(cer, key, PASSWORD)
|
|
self.assertTrue(result)
|
|
|
|
words = (cert.rfc, str(cert.serial_number1), MY_TOKEN)
|
|
result = cert.get_key_enc(words)
|
|
self.assertIsNotNone(result)
|
|
|
|
result = cert.get_key_pem(result, words)
|
|
self.assertIsNotNone(result)
|
|
|
|
return
|
|
|
|
def test_validate_cert(self):
|
|
cert = CertValidate()
|
|
cer = path_cer.read_bytes()
|
|
key = path_key.read_bytes()
|
|
|
|
result = cert.validate(cer, key, PASSWORD)
|
|
# ~ print(cert)
|
|
|
|
self.assertTrue(result)
|
|
return
|
|
|
|
|
|
class TestCertSign(BaseTest):
|
|
|
|
def test_sign(self):
|
|
cert = CertValidate()
|
|
cer = path_cer.read_bytes()
|
|
key = path_key.read_bytes()
|
|
|
|
result = cert.validate(cer, key, PASSWORD)
|
|
self.assertTrue(result)
|
|
|
|
words = (cert.rfc, str(cert.serial_number1), MY_TOKEN)
|
|
key_enc = cert.get_key_enc(words)
|
|
|
|
expected = 'ZSOD/SNUP0YmogV7h94ysXxERPSy8M+EBfWK4oKWkGRIMqSM1DEGLVi0IE0YNDoZTnBSWULsozCxOwt5rJdGE1tr2OTaXaHMubvC88vhqiv62mOeU/vGCv2yPbKcbjOpKDSQ/pEGlgUd69mESwekjpPI0c0NUWlnkO81eHr+Z8v7hTnJxoopvDiMAkg82snPDIFoIBEePcB/VL8oABRLKh9/2UHFMeS0YKQJWApPEaXD1ycxUbBqXgbi2OwQgM4vWMNX0qsiHyuEI82/zUZ8WLj+GHG6m+P/VKs9nYfEurXh68wZZqT1nzUNHudQxGVFdrwgj+uh7kl3O0Swoi160w=='
|
|
|
|
cert = CertSign(key_enc, words)
|
|
data = 'Ingrid Bergman'
|
|
result = cert.sign(data)
|
|
|
|
self.assertEqual(expected, result)
|
|
return
|
|
|
|
def test_sign_with_pem(self):
|
|
cert = CertValidate()
|
|
cer = path_cer.read_bytes()
|
|
key = path_key.read_bytes()
|
|
|
|
result = cert.validate(cer, key, PASSWORD)
|
|
self.assertTrue(result)
|
|
|
|
words = (cert.rfc, str(cert.serial_number1), MY_TOKEN)
|
|
key_enc = cert.get_key_enc(words)
|
|
key_pem = cert.get_key_pem(key_enc, words)
|
|
|
|
expected = 'ZSOD/SNUP0YmogV7h94ysXxERPSy8M+EBfWK4oKWkGRIMqSM1DEGLVi0IE0YNDoZTnBSWULsozCxOwt5rJdGE1tr2OTaXaHMubvC88vhqiv62mOeU/vGCv2yPbKcbjOpKDSQ/pEGlgUd69mESwekjpPI0c0NUWlnkO81eHr+Z8v7hTnJxoopvDiMAkg82snPDIFoIBEePcB/VL8oABRLKh9/2UHFMeS0YKQJWApPEaXD1ycxUbBqXgbi2OwQgM4vWMNX0qsiHyuEI82/zUZ8WLj+GHG6m+P/VKs9nYfEurXh68wZZqT1nzUNHudQxGVFdrwgj+uh7kl3O0Swoi160w=='
|
|
|
|
cert = CertSign(key_pem)
|
|
data = 'Ingrid Bergman'
|
|
result = cert.sign(data)
|
|
|
|
self.assertEqual(expected, result)
|
|
return
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main(exit=False)
|