Files
magpie/internal/provider/commandcode_free_test.go
2026-10-01 17:13:34 +08:00

82 lines
2.6 KiB
Go

package provider
import (
"context"
"net/http"
"net/http/httptest"
"os"
"path/filepath"
"testing"
)
// Command Code's CLI marks Space Bunny Alpha FREE, as it does Ling 3.1
// Flash (01huadalang on Discord): magpie's chips showed 免费 on Ling only,
// whose id says :free, as Command Code's list says nothing of it. The
// models the CLI calls free are marked so, on Go's list and on a keyed
// plan's, before a fetch and after.
func TestCommandCodeFreeModels(t *testing.T) {
list, err := os.ReadFile(filepath.Join("testdata", "commandcode_models.json"))
if err != nil {
t.Fatal(err)
}
for _, plan := range []string{"individual-go-monthly", "individual-max-monthly"} {
t.Run(plan, func(t *testing.T) {
home := signIn(t)
writeFile(t, filepath.Join(home, ".commandcode", "auth.json"), map[string]any{"apiKey": "cc-key", "userName": "ccuser"})
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case "/provider/v1/models":
_, _ = w.Write(list)
case "/alpha/billing/subscriptions":
_, _ = w.Write([]byte(`{"success":true,"data":{"planId":"` + plan + `","status":"active"}}`))
default:
w.WriteHeader(404)
}
}))
defer srv.Close()
oldAPI := cmdAPI
cmdAPI = srv.URL
defer func() { cmdAPI = oldAPI }()
cmdPlansSeen.Lock()
cmdPlansSeen.m = map[string]cmdSeen{}
cmdPlansSeen.Unlock()
p, found := find(All(), CommandCodePlanID)
if !found {
t.Fatal("no Command Code account")
}
CommandCodeGenerate(context.Background(), p) // the plan read
if plan == "individual-go-monthly" {
p, _ = find(All(), CommandCodePlanID)
free := map[string]bool{}
for _, m := range p.Available() {
free[m.ID] = m.Free
}
if !free["stealth/space-bunny-alpha"] || !free["inclusionai/ling-3.1-flash:free"] {
t.Errorf("before a fetch: Space Bunny Alpha free %v, Ling 3.1 Flash free %v", free["stealth/space-bunny-alpha"], free["inclusionai/ling-3.1-flash:free"])
}
}
if _, err := p.Fetch(context.Background()); err != nil {
t.Fatal(err)
}
p, _ = find(All(), CommandCodePlanID)
free, seen := map[string]bool{}, map[string]bool{}
for _, m := range p.Available() {
free[m.ID], seen[m.ID] = m.Free, true
}
for _, id := range []string{"stealth/space-bunny-alpha", "inclusionai/ling-3.1-flash:free", "poolside/laguna-s-2.1-free"} {
if !seen[id] {
t.Errorf("%s not listed", id)
} else if !free[id] {
t.Errorf("%s not marked free", id)
}
}
for _, id := range []string{"deepseek/deepseek-v4-flash", "thinkingmachines/inkling"} {
if free[id] {
t.Errorf("%s marked free", id)
}
}
})
}
}