FolderConflict tests that 'templates pull' fails when a folder with has existing
(t *testing.T)
| 341 | // FolderConflict tests that 'templates pull' fails when a folder with has |
| 342 | // existing |
| 343 | func TestTemplatePull_FolderConflict(t *testing.T) { |
| 344 | t.Parallel() |
| 345 | |
| 346 | client := coderdtest.New(t, &coderdtest.Options{ |
| 347 | IncludeProvisionerDaemon: true, |
| 348 | }) |
| 349 | owner := coderdtest.CreateFirstUser(t, client) |
| 350 | templateAdmin, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID, rbac.RoleTemplateAdmin()) |
| 351 | |
| 352 | // Create an initial template bundle. |
| 353 | source1 := genTemplateVersionSource() |
| 354 | // Create an updated template bundle. This will be used to ensure |
| 355 | // that templates are correctly returned in order from latest to oldest. |
| 356 | source2 := genTemplateVersionSource() |
| 357 | |
| 358 | expected, err := echo.Tar(source2) |
| 359 | require.NoError(t, err) |
| 360 | |
| 361 | version1 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, source1) |
| 362 | _ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version1.ID) |
| 363 | |
| 364 | template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version1.ID) |
| 365 | |
| 366 | // Update the template version so that we can assert that templates |
| 367 | // are being sorted correctly. |
| 368 | updatedVersion := coderdtest.UpdateTemplateVersion(t, client, owner.OrganizationID, source2, template.ID) |
| 369 | _ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, updatedVersion.ID) |
| 370 | coderdtest.UpdateActiveTemplateVersion(t, client, template.ID, updatedVersion.ID) |
| 371 | |
| 372 | dir := t.TempDir() |
| 373 | |
| 374 | expectedDest := filepath.Join(dir, "expected") |
| 375 | conflictDest := filepath.Join(dir, "conflict") |
| 376 | |
| 377 | err = os.MkdirAll(conflictDest, 0o700) |
| 378 | require.NoError(t, err) |
| 379 | |
| 380 | err = os.WriteFile( |
| 381 | filepath.Join(conflictDest, "conflict-file"), |
| 382 | []byte("conflict"), 0o600, |
| 383 | ) |
| 384 | require.NoError(t, err) |
| 385 | |
| 386 | err = provisionersdk.Untar(expectedDest, bytes.NewReader(expected)) |
| 387 | require.NoError(t, err) |
| 388 | |
| 389 | inv, root := clitest.New(t, "templates", "pull", template.Name, conflictDest) |
| 390 | clitest.SetupConfig(t, templateAdmin, root) |
| 391 | |
| 392 | pty := ptytest.New(t).Attach(inv) |
| 393 | |
| 394 | waiter := clitest.StartWithWaiter(t, inv) |
| 395 | |
| 396 | pty.ExpectMatch("not empty") |
| 397 | pty.WriteLine("no") |
| 398 | |
| 399 | waiter.RequireError() |
| 400 |
nothing calls this directly
no test coverage detected