package services import ( "crypto/hmac" "crypto/sha256" "encoding/hex" "testing" ) func TestValidarFirmaWhatsApp(t *testing.T) { secret := "mi-app-secret" body := []byte(`{"object":"whatsapp_business_account"}`) mac := hmac.New(sha256.New, []byte(secret)) mac.Write(body) firmaValida := "sha256=" + hex.EncodeToString(mac.Sum(nil)) if !ValidarFirmaWhatsApp(secret, body, firmaValida) { t.Error("una firma válida fue rechazada") } if ValidarFirmaWhatsApp(secret, body, "sha256=deadbeef") { t.Error("una firma inválida fue aceptada") } if ValidarFirmaWhatsApp(secret, body, "") { t.Error("una firma vacía fue aceptada") } if ValidarFirmaWhatsApp("otro-secret", body, firmaValida) { t.Error("la firma fue válida con un secret distinto al usado para firmarla") } if ValidarFirmaWhatsApp(secret, []byte("body distinto"), firmaValida) { t.Error("la firma fue válida para un body distinto al firmado") } }