mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-10-25 00:56:52 +08:00
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package config
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
func TestGitHubTokenConfigRoundTrip(t *testing.T) {
|
|
cfg, err := ParseConfigBytes([]byte("server:\n github-token: test-github-secret\n"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if cfg.GitHubToken != "test-github-secret" {
|
|
t.Fatal("server.github-token was not parsed")
|
|
}
|
|
path := filepath.Join(t.TempDir(), "config.yaml")
|
|
if err = os.WriteFile(path, []byte("server:\n github-token: old\n"), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err = SaveConfigPreserveComments(path, cfg); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
data, err := os.ReadFile(path)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var tree map[string]interface{}
|
|
if err = yaml.Unmarshal(data, &tree); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
server, ok := tree["server"].(map[string]interface{})
|
|
if !ok || server["github-token"] != "test-github-secret" {
|
|
t.Fatal("canonical YAML path was not preserved")
|
|
}
|
|
reloaded, err := ParseConfigBytes(data)
|
|
if err != nil || reloaded.GitHubToken != cfg.GitHubToken {
|
|
t.Fatal("token did not round trip")
|
|
}
|
|
clone := cfg.CloneForRuntime()
|
|
if clone.GitHubToken != cfg.GitHubToken {
|
|
t.Fatal("clone lost token")
|
|
}
|
|
data, err = json.Marshal(cfg)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if strings.Contains(string(data), "test-github-secret") {
|
|
t.Fatal("token leaked in runtime JSON")
|
|
}
|
|
}
|