Files
NixMsg/internal/admin/h05_test.go
T

62 lines
1.9 KiB
Go

package admin_test
import (
"encoding/json"
"io"
"net/http"
"testing"
)
func TestCreateRejectsDefaultDelayOverMax(t *testing.T) {
_, srv, client, _, _ := setupEndpoints(t)
body := `{"id":"dly-c","name":"延迟","login_password":"password1","default_delay_seconds":31536001}`
res := postJSON(t, client, srv.URL+"/api/admin/endpoints", body, csrfHeaders())
env := decodeEnv(t, res)
if res.StatusCode != http.StatusBadRequest {
t.Fatalf("want 400 got %d %+v", res.StatusCode, env)
}
}
func TestPatchRejectsDefaultDelayOverMax(t *testing.T) {
_, srv, client, _, _ := setupEndpoints(t)
res := postJSON(t, client, srv.URL+"/api/admin/endpoints",
`{"id":"dly-p","name":"延迟","login_password":"password1"}`, csrfHeaders())
env := decodeEnv(t, res)
if res.StatusCode != 200 || !env.OK {
t.Fatalf("create: %d %+v", res.StatusCode, env)
}
res = doReq(t, client, http.MethodPatch, srv.URL+"/api/admin/endpoints/dly-p",
`{"default_delay_seconds":31536001}`, csrfHeaders())
env = decodeEnv(t, res)
if res.StatusCode != http.StatusBadRequest {
t.Fatalf("want 400 got %d %+v", res.StatusCode, env)
}
}
func TestImportRejectsDefaultDelayOverMax(t *testing.T) {
_, srv, client, _, _ := setupEndpoints(t)
csvBody := "" +
"id,name,login_password,talk_password,default_delay_seconds,remark\n" +
"dly-i,甲,password1,,31536001,\n"
res := postImportCSV(t, client, srv.URL, csvBody)
raw, _ := io.ReadAll(res.Body)
_ = res.Body.Close()
if res.StatusCode != http.StatusBadRequest {
t.Fatalf("want 400 got %d body=%s", res.StatusCode, raw)
}
var parsed struct {
Data *struct {
Errors []struct {
Line int `json:"line"`
Reason string `json:"reason"`
} `json:"errors"`
} `json:"data"`
}
if err := json.Unmarshal(raw, &parsed); err != nil {
t.Fatal(err)
}
if parsed.Data == nil || len(parsed.Data.Errors) == 0 {
t.Fatalf("want row error, body=%s", raw)
}
}