package fullsyncretry import ( "context" "net/http" "net/http/httptest" "testing" "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" ) func TestListRunsAcceptsFiveKindsAndRejectsUnknownFilters(t *testing.T) { var filters []string server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { filters = append(filters, r.URL.Query().Get("syncKind")) _, _ = w.Write([]byte(`{"items":null,"total":0}`)) })) defer server.Close() client := Client{BaseURL: server.URL} kinds := []string{"", "traffic_usage", "sim_status", "imei", "traffic_usage_daily", "traffic_usage_monthly"} for i, kind := range kinds { result, err := client.ListRuns(context.Background(), kind, 100) if err != nil || result.Items == nil || len(filters) != i+1 || filters[i] != kind { t.Fatalf("kind=%q result=%+v filters=%v error=%v", kind, result, filters, err) } } for _, query := range []struct { kind string limit int }{{"unknown", 10}, {"IMEI", 10}, {"", -1}, {"imei", 101}} { if _, err := client.ListRuns(context.Background(), query.kind, query.limit); gerror.Code(err) != gcode.CodeInvalidParameter { t.Fatalf("invalid filter %+v: %v", query, err) } } if len(filters) != len(kinds) { t.Fatal("invalid filter reached Worker") } }