| 118 | } |
| 119 | |
| 120 | func TestAnalyticsMigration(t *testing.T) { |
| 121 | d := New(t.TempDir()) |
| 122 | |
| 123 | // setup resets the homeDir and provides helpers for testing ~/.rill/local.json |
| 124 | setup := func(t *testing.T) (string, func() bool) { |
| 125 | d.homeDir = t.TempDir() |
| 126 | require.NoError(t, os.MkdirAll(filepath.Join(d.homeDir, ".rill"), os.ModePerm)) |
| 127 | oldFilename := filepath.Join(d.homeDir, ".rill", "local.json") |
| 128 | oldExists := func() bool { _, err := os.Stat(oldFilename); return !os.IsNotExist(err) } |
| 129 | return oldFilename, oldExists |
| 130 | } |
| 131 | |
| 132 | t.Run("InstallID only", func(t *testing.T) { |
| 133 | oldFilename, oldExists := setup(t) |
| 134 | |
| 135 | // Test install ID transfer |
| 136 | err := os.WriteFile(oldFilename, []byte(`{"installId":"cd29afba-14ff-4cd1-98e6-050a9fb0fee9"}`), 0o644) |
| 137 | require.NoError(t, err) |
| 138 | require.True(t, oldExists()) |
| 139 | |
| 140 | // Check that it was set correctly |
| 141 | id, enabled, err := d.AnalyticsInfo() |
| 142 | require.NoError(t, err) |
| 143 | require.Equal(t, "cd29afba-14ff-4cd1-98e6-050a9fb0fee9", id) |
| 144 | require.True(t, enabled) |
| 145 | require.False(t, oldExists()) |
| 146 | |
| 147 | // Repeat, to ensure same is reported second time |
| 148 | id, enabled, err = d.AnalyticsInfo() |
| 149 | require.NoError(t, err) |
| 150 | require.Equal(t, "cd29afba-14ff-4cd1-98e6-050a9fb0fee9", id) |
| 151 | require.True(t, enabled) |
| 152 | }) |
| 153 | |
| 154 | t.Run("Analytics enabled", func(t *testing.T) { |
| 155 | oldFilename, oldExists := setup(t) |
| 156 | |
| 157 | err := os.WriteFile(oldFilename, []byte(`{"installId":"cd29afba-14ff-4cd1-98e6-050a9fb0fee9", "analyticsEnabled": true}`), 0o644) |
| 158 | require.NoError(t, err) |
| 159 | require.True(t, oldExists()) |
| 160 | |
| 161 | id, enabled, err := d.AnalyticsInfo() |
| 162 | require.NoError(t, err) |
| 163 | require.Equal(t, "cd29afba-14ff-4cd1-98e6-050a9fb0fee9", id) |
| 164 | require.True(t, enabled) |
| 165 | require.False(t, oldExists()) |
| 166 | }) |
| 167 | |
| 168 | t.Run("Analytics disabled", func(t *testing.T) { |
| 169 | oldFilename, oldExists := setup(t) |
| 170 | |
| 171 | err := os.WriteFile(oldFilename, []byte(`{"installId":"cd29afba-14ff-4cd1-98e6-050a9fb0fee9", "analyticsEnabled": false}`), 0o644) |
| 172 | require.NoError(t, err) |
| 173 | require.True(t, oldExists()) |
| 174 | |
| 175 | id, enabled, err := d.AnalyticsInfo() |
| 176 | require.NoError(t, err) |
| 177 | require.Equal(t, "cd29afba-14ff-4cd1-98e6-050a9fb0fee9", id) |