package services import ( "strings" "testing" "github.com/sujit-baniya/fiber-boilerplate/pkg/models" ) // Copiar una herramienta con su header de auth le daría al dueño del agente // nuevo la credencial de un tercero que no es suya. La copia tiene que llegar // sin el secreto — y desactivada, para que la falta se note al configurarla y // no cuando un cliente recibe un error. func TestLaCopiaDeHerramientaNoArrastraElSecreto(t *testing.T) { casos := []struct { nombre string headerNombre string headerValor string activaOrigen bool activaEsperada bool }{ {"con auth: llega desactivada", "Authorization", "cifrado-xyz", true, false}, {"sin auth: conserva su estado", "", "", true, true}, {"sin auth y desactivada: sigue desactivada", "", "", false, false}, } for _, c := range casos { origen := models.UmindHerramienta{ Nombre: "consultar_stock", AuthHeaderNombre: c.headerNombre, AuthHeaderValorEnc: c.headerValor, Activa: c.activaOrigen, } // Misma expresión que usa copiarHerramientas. activa := origen.Activa && (origen.AuthHeaderNombre == "" || origen.AuthHeaderValorEnc == "") if activa != c.activaEsperada { t.Errorf("%s: activa = %v, esperaba %v", c.nombre, activa, c.activaEsperada) } } } // El nombre por defecto tiene que distinguir la copia del original: dos // agentes con el mismo nombre en la misma lista no se pueden diferenciar. func TestNombrePorDefectoDeLaCopia(t *testing.T) { nombreNuevo := "" original := "Ventas" if nombreNuevo == "" { nombreNuevo = original + " (copia)" } if nombreNuevo == original { t.Error("la copia no puede llamarse igual que el original") } if !strings.Contains(nombreNuevo, original) { t.Errorf("el nombre de la copia debería reconocerse: %q", nombreNuevo) } }