package controllers import "testing" // La clave de objeto se arma con texto que manda el cliente. Antes iba tal // cual: un nombre con "/" o con acentos raros producía una clave que OSS // rechaza, y del otro lado solo se veía "error subiendo archivo a OSS". func TestClaveObjetoSegura(t *testing.T) { casos := map[string]string{ "Juan Pérez": "Juan_Prez", "Ana/María": "AnaMara", "../../etc/pass": "etcpass", " ": "sin-nombre", "": "sin-nombre", "ok-nombre_1.2": "ok-nombre_1.2", "emoji 🚀 fin": "emoji__fin", } for in, want := range casos { if got := claveObjetoSegura(in); got != want { t.Errorf("claveObjetoSegura(%q) = %q, want %q", in, got, want) } } if got := claveObjetoSegura(string(make([]byte, 0)) + "a" + string(rune(0))); got != "a" { t.Errorf("caracter de control no filtrado: %q", got) } }