MCPcopy Index your code
hub / github.com/coder/coder / TestTemplatePull_FolderConflict

Function TestTemplatePull_FolderConflict

cli/templatepull_test.go:343–405  ·  view source on GitHub ↗

FolderConflict tests that 'templates pull' fails when a folder with has existing

(t *testing.T)

Source from the content-addressed store, hash-verified

341// FolderConflict tests that 'templates pull' fails when a folder with has
342// existing
343func 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

Callers

nothing calls this directly

Calls 15

NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
RoleTemplateAdminFunction · 0.92
TarFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
UpdateTemplateVersionFunction · 0.92
UntarFunction · 0.92
NewFunction · 0.92

Tested by

no test coverage detected