| 288 | } |
| 289 | |
| 290 | func TestDevConfigValidate(t *testing.T) { |
| 291 | t.Parallel() |
| 292 | |
| 293 | base := func() *devConfig { |
| 294 | return &devConfig{ |
| 295 | apiPort: 3000, |
| 296 | webPort: 8080, |
| 297 | proxyPort: 3010, |
| 298 | coderMetricsPort: 2114, |
| 299 | password: defaultPassword, |
| 300 | } |
| 301 | } |
| 302 | |
| 303 | t.Run("Valid", func(t *testing.T) { |
| 304 | t.Parallel() |
| 305 | assert.NoError(t, base().validate()) |
| 306 | }) |
| 307 | |
| 308 | t.Run("AgplAndProxy", func(t *testing.T) { |
| 309 | t.Parallel() |
| 310 | cfg := base() |
| 311 | cfg.agpl = true |
| 312 | cfg.useProxy = true |
| 313 | err := cfg.validate() |
| 314 | require.Error(t, err) |
| 315 | assert.Contains(t, err.Error(), "--agpl and --use-proxy") |
| 316 | }) |
| 317 | |
| 318 | t.Run("AgplAndMultiOrg", func(t *testing.T) { |
| 319 | t.Parallel() |
| 320 | cfg := base() |
| 321 | cfg.agpl = true |
| 322 | cfg.multiOrg = true |
| 323 | err := cfg.validate() |
| 324 | require.Error(t, err) |
| 325 | assert.Contains(t, err.Error(), "--agpl and --multi-organization") |
| 326 | }) |
| 327 | |
| 328 | t.Run("PortTooLow", func(t *testing.T) { |
| 329 | t.Parallel() |
| 330 | cfg := base() |
| 331 | cfg.apiPort = 0 |
| 332 | err := cfg.validate() |
| 333 | require.Error(t, err) |
| 334 | assert.Contains(t, err.Error(), "--port must be between 1 and 65535") |
| 335 | }) |
| 336 | |
| 337 | t.Run("PortTooHigh", func(t *testing.T) { |
| 338 | t.Parallel() |
| 339 | cfg := base() |
| 340 | cfg.apiPort = 70000 |
| 341 | err := cfg.validate() |
| 342 | require.Error(t, err) |
| 343 | assert.Contains(t, err.Error(), "--port must be between 1 and 65535") |
| 344 | }) |
| 345 | |
| 346 | t.Run("PortConflictWithWeb", func(t *testing.T) { |
| 347 | t.Parallel() |