package services

import (
	"testing"

	"github.com/sujit-baniya/fiber-boilerplate/app"
	"github.com/sujit-baniya/fiber-boilerplate/config"
)

func TestFirmarYVerificarState(t *testing.T) {
	app.Http = &config.AppConfig{Server: config.ServerConfig{Key: "clave-de-prueba-no-real"}}

	state, err := firmarState(42)
	if err != nil {
		t.Fatalf("firmarState: %v", err)
	}
	tenantID, err := verificarState(state)
	if err != nil {
		t.Fatalf("verificarState de un state válido falló: %v", err)
	}
	if tenantID != 42 {
		t.Errorf("tenantID = %d, esperaba 42", tenantID)
	}

	if _, err := verificarState(state + "x"); err == nil {
		t.Error("un state alterado fue aceptado")
	}
	if _, err := verificarState("formato.invalido"); err == nil {
		t.Error("un state con formato inválido fue aceptado")
	}
	if _, err := verificarState("noesnumero.aabbcc.deadbeef"); err == nil {
		t.Error("un tenant_id no numérico fue aceptado")
	}
}
