-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathruntime_test.go
More file actions
104 lines (94 loc) · 2.81 KB
/
Copy pathruntime_test.go
File metadata and controls
104 lines (94 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package main
import (
"net/http"
"testing"
"github.com/spf13/cobra"
)
func TestResolveOutputFormat(t *testing.T) {
format, err := resolveOutputFormat(false, "")
if err != nil {
t.Fatalf("resolveOutputFormat error: %v", err)
}
if format != outputFormatTable {
t.Fatalf("expected table, got %s", format)
}
format, err = resolveOutputFormat(true, "table")
if err != nil {
t.Fatalf("resolveOutputFormat error: %v", err)
}
if format != outputFormatJSON {
t.Fatalf("expected json, got %s", format)
}
format, err = resolveOutputFormat(false, "json")
if err != nil {
t.Fatalf("resolveOutputFormat error: %v", err)
}
if format != outputFormatJSON {
t.Fatalf("expected json, got %s", format)
}
if _, err := resolveOutputFormat(false, "bogus"); err == nil {
t.Fatalf("expected error for invalid format")
}
}
func TestJoinBaseURL(t *testing.T) {
tests := []struct {
base string
path string
want string
}{
{
base: "https://api.modelrelay.ai/api/v1",
path: "/projects",
want: "https://api.modelrelay.ai/api/v1/projects",
},
{
base: "https://api.modelrelay.ai/api/v1",
path: "/models?capability=text_generation",
want: "https://api.modelrelay.ai/api/v1/models?capability=text_generation",
},
{
base: "https://api.modelrelay.ai/api/v1/",
path: "/models?provider=openai&capability=tools",
want: "https://api.modelrelay.ai/api/v1/models?provider=openai&capability=tools",
},
}
for _, tc := range tests {
got, err := joinBaseURL(tc.base, tc.path)
if err != nil {
t.Fatalf("joinBaseURL(%q, %q) error: %v", tc.base, tc.path, err)
}
if got != tc.want {
t.Errorf("joinBaseURL(%q, %q) = %q, want %q", tc.base, tc.path, got, tc.want)
}
}
}
func TestApplyAuth_APIKey(t *testing.T) {
cfg := runtimeConfig{APIKey: "mr_sk_test"}
req, _ := http.NewRequest(http.MethodGet, "https://example.com", nil)
if err := applyAuth(req, cfg, authModeAPIKey); err != nil {
t.Fatalf("apply api key: %v", err)
}
if got := req.Header.Get("X-ModelRelay-Api-Key"); got != "mr_sk_test" {
t.Fatalf("expected api key header, got %s", got)
}
}
func TestResolveRuntimeConfig_Profile(t *testing.T) {
cmd := &cobra.Command{}
cmd.Flags().String("profile", "", "")
cmd.Flags().String("base-url", "", "")
cmd.Flags().String("project", "", "")
cmd.Flags().String("api-key", "", "")
cmd.Flags().Bool("json", false, "")
cmd.Flags().Duration("timeout", 30, "")
cfgFile := cliConfig{CurrentProfile: "dev", Profiles: map[string]cliProfile{"dev": {BaseURL: "https://example.com", Output: "json"}}}
cfg, err := resolveRuntimeConfig(cmd, cfgFile)
if err != nil {
t.Fatalf("resolveRuntimeConfig error: %v", err)
}
if cfg.BaseURL != "https://example.com" {
t.Fatalf("expected base url, got %s", cfg.BaseURL)
}
if cfg.Output != outputFormatJSON {
t.Fatalf("expected json output, got %s", cfg.Output)
}
}