1package remote
2
3import (
4 "os"
5 "path/filepath"
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9 "github.com/stretchr/testify/require"
10)
11
12func TestMigrateClientConfig(t *testing.T) {
13 tmpDir := t.TempDir()
14 t.Setenv("XDG_CONFIG_HOME", tmpDir)
15
16 gordonToml := filepath.Join(tmpDir, "gordon", "gordon.toml")
17 require.NoError(t, os.MkdirAll(filepath.Dir(gordonToml), 0o700))
18 require.NoError(t, os.WriteFile(gordonToml, []byte(`
19[client]
20mode = "remote"
21remote = "https://old.example.com"
22token = "oldtok"
23insecure_tls = true
24`), 0o600))
25
26 config, err := LoadRemotes("")
27 require.NoError(t, err)
28
29 entry, ok := config.Remotes["default"]
30 require.True(t, ok, "expected 'default' remote entry from migration")
31 assert.Equal(t, "https://old.example.com", entry.URL)
32 assert.Equal(t, "oldtok", entry.Token)
33 assert.True(t, entry.InsecureTLS)
34 assert.Equal(t, "default", config.Active)
35}
36
37func TestMigrateClientConfig_NoOverwrite(t *testing.T) {
38 tmpDir := t.TempDir()
39 t.Setenv("XDG_CONFIG_HOME", tmpDir)
40
41 gordonToml := filepath.Join(tmpDir, "gordon", "gordon.toml")
42 require.NoError(t, os.MkdirAll(filepath.Dir(gordonToml), 0o700))
43 require.NoError(t, os.WriteFile(gordonToml, []byte(`
44[client]
45mode = "remote"
46remote = "https://old.example.com"
47token = "oldtok"
48`), 0o600))
49
50 existing := &ClientConfig{
51 Active: "prod",
52 Remotes: map[string]RemoteEntry{
53 "prod": {URL: "https://prod.example.com"},
54 "default": {URL: "https://existing-default.example.com"},
55 },
56 }
57 require.NoError(t, SaveRemotes("", existing))
58
59 config, err := LoadRemotes("")
60 require.NoError(t, err)
61 assert.Equal(t, "https://existing-default.example.com", config.Remotes["default"].URL)
62 assert.Equal(t, "prod", config.Active)
63}
64
65func TestMigrateClientConfig_SkipsLocalMode(t *testing.T) {
66 tmpDir := t.TempDir()
67 t.Setenv("XDG_CONFIG_HOME", tmpDir)
68
69 gordonToml := filepath.Join(tmpDir, "gordon", "gordon.toml")
70 require.NoError(t, os.MkdirAll(filepath.Dir(gordonToml), 0o700))
71 require.NoError(t, os.WriteFile(gordonToml, []byte(`
72[client]
73mode = "local"
74remote = "https://ignored.example.com"
75`), 0o600))
76
77 config, err := LoadRemotes("")
78 require.NoError(t, err)
79 _, ok := config.Remotes["default"]
80 assert.False(t, ok)
81}