40 lines
1.3 KiB
Go
40 lines
1.3 KiB
Go
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")
|
|
}
|
|
}
|