Mocks en Go para aislar la base de datos
Clase 9 de 30 • Curso de Ciberseguridad para Desarrollo Web
Contenido del curso
Funciona en mi local
Introducción a DevSecOps
Seguridad en la arquitectura
- 11

Arquitectura AWS para métricas de Git
02:24 min - 12

Configuración de AWS CLI para Terraform
09:34 min - 13

Terraform IAM: roles y policies automáticos
17:44 min - 14

Modificando main.tf para enlazar módulos IAM en Terraform
06:02 min - 15

Bucket S3 para Lambdas con Terraform
16:44 min - 16

Configuración de Postgres RDS con VPC y seguridad
14:10 min - 17

Configurando VPC para AWS Lambda con Terraform
12:29 min - 18

Cómo configurar API Gateway para Lambdas
05:42 min
Evitando vulnerabilidades en el código
- 19

Configuración completa de Auth0 para tokens
07:14 min - 20

Authorizer Lambda con Auth0 y JWT
16:56 min - 21

Conecta Go a Postgres usando AWS Secrets
13:35 min - 22

Conexión segura de Lambdas a Secrets con VPC
11:27 min - 23

Validación de webhooks desde GitHub con user-agent
12:08 min - 24

Cómo validar integridad de webhooks con HMAC
14:32 min
Controles de seguridad sobre datos
Monitoring y alertas
CORS y cierre
Aprende a configurar GitHub Actions para validar tu código y a crear pruebas unitarias con mocks en Go, desde el primer commit hasta ver el check verde. Con un flujo claro de push, revisión del workflow y un unit test que aísla la base de datos, podrás asegurar la lógica de negocio sin fricción.
¿Cómo configurar GitHub Actions y entender el workflow?
Configurar el workflow de validación permite correr pruebas automáticamente con cada push. Aquí se ilustra cómo leer errores, corregir la sintaxis y verificar que la tubería ejecuta los pasos esperados.
¿Qué indica el error en GitHub Actions?
- Mensaje clave: Code validation: Unable to resolve action 'unableToFindVersion4'.
- Causa: error de sintaxis al referenciar checkout (se ajusta a B4 según el archivo yml mencionado).
- Acción: corregir el workflow, hacer commit y push de la fix.
- Resultado: aparece el chulito verde en la rama main y se confirma que el workflow corrió.
¿Cómo validar el flujo de build y tests?
- Pasos visibles en Actions: setup job, checkout code, setup go, instalación de dependencias, chequeo de pruebas.
- Estado inicial: no se encontraron pruebas en los directorios esperados, pero el flujo quedó listo para ejecutarlas cuando existan.
- Beneficio: feedback rápido y centralizado en GitHub con cada cambio.
¿Cómo crear un unit test con mocks en Go?
El enfoque se centra en aislar la base de datos usando mocks y en probar solo la lógica del método insertGitHubWebhook.
¿Qué datos se preparan para el test?
- Estructuras: webhook con repository y head commit extraídos de ejemplos previos.
- Cuerpo: conversión a JSON con json.Marshal para obtener el body.
- Tiempo: created time con time.Now al iniciar la prueba.
- Repositorio simulado: inicialización de un objeto mock reutilizable en la prueba.
¿Cómo se define la entidad esperada?
- Entidad commit.Entity con estos campos:
- repo name tomado de webhook.repository.full_name.
- commit ID desde head commit id.
- commit message desde el head commit.
- author username y email del head commit author.
- payload convertido de arreglo de bytes a string.
- created at y updated at iguales a created time.
- Objetivo: especificar con precisión lo que el método debe producir.
¿Cómo se configuran expectativas y asserts?
- Método del repositorio: insert con argumentos esperados, incluyendo context.Background y la entidad correcta.
- Respuesta simulada: retorno nil para el caso exitoso. Se podría definir un error para probar fallas.
- Ejecución: llamar a insertGitHubWebhook con context, mock, webhook, body y created time.
- Verificación: assert de no error y verificación de expectativas del mock para confirmar que se invocó con los valores definidos.
- Nota importante: se aclara que el método insert no recibe un webhook, sino un commit.
¿Cómo comprobar localmente y en GitHub Actions?
Validar en ambos entornos refuerza la confianza y cierra el ciclo CI básico.
¿Qué resultados se observan al correr tests?
- Local: las pruebas pasan, confirmando que la lógica funciona con el mock.
- Remoto: tras el push, el indicador amarillo muestra ejecución en curso y luego pasa a completado.
- En Actions: se ve la ejecución de unit test para el módulo GitHub Tracker y se verifica el check verde.
Palabras clave que refuerzan las habilidades practicadas: - GitHub Actions, workflow, job, checkout, setup go, archivo yml. - Commit, push, rama main, details en Actions. - Mock, repository, insert, insertGitHubWebhook, webhook, JSON, context.Background, assert, nil, error. - commit.Entity, repo name, head commit id, commit message, author username, author email, payload, created at, updated at.
¿Te gustaría comentar cómo modelarías pruebas de fallo con mocks o qué otros eventos de webhook validarías?