package provisioning import ( "net/http/httptest" "strings" "testing" "github.com/gin-gonic/gin" ) func TestCreateRequestRejectsCredentialColumns(t *testing.T) { gin.SetMode(gin.TestMode) recorder := httptest.NewRecorder() context, _ := gin.CreateTestContext(recorder) context.Request = httptest.NewRequest("POST", "/api/v1/provisioning/batches", strings.NewReader(`{ "idempotencyKey":"import-1", "rows":[{"lineNumber":1,"name":"东门摄像机","location":"东门","address":"http://192.0.2.10/onvif","password":"must-not-be-accepted"}] }`)) context.Request.Header.Set("Content-Type", "application/json") var request CreateBatchRequest if err := bindStrictJSON(context, &request); err == nil || !strings.Contains(err.Error(), "unknown field") { t.Fatalf("expected unknown credential field to be rejected, got %v", err) } } func TestClearCredentialsOverwritesTransientValues(t *testing.T) { values := []CredentialInput{{ONVIFUsername: "installer", ONVIFPassword: "temporary-secret", RTSPUsername: "stream", RTSPPassword: "stream-secret"}} clearCredentials(values) if values[0].ONVIFUsername != "" || values[0].ONVIFPassword != "" || values[0].RTSPUsername != "" || values[0].RTSPPassword != "" { t.Fatalf("credentials were not cleared: %#v", values[0]) } }