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

Function TestTemplatePull_Stdout

cli/templatepull_test.go:57–110  ·  view source on GitHub ↗

Stdout tests that 'templates pull' pulls down the active template and writes it to stdout.

(t *testing.T)

Source from the content-addressed store, hash-verified

55// Stdout tests that 'templates pull' pulls down the active template
56// and writes it to stdout.
57func TestTemplatePull_Stdout(t *testing.T) {
58 t.Parallel()
59
60 client := coderdtest.New(t, &coderdtest.Options{
61 IncludeProvisionerDaemon: true,
62 })
63 owner := coderdtest.CreateFirstUser(t, client)
64 templateAdmin, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID, rbac.RoleTemplateAdmin())
65
66 // Create an initial template bundle.
67 source1 := genTemplateVersionSource()
68 // Create an updated template bundle. This will be used to ensure
69 // that templates are correctly returned in order from latest to oldest.
70 source2 := genTemplateVersionSource()
71
72 expected, err := echo.Tar(source2)
73 require.NoError(t, err)
74
75 version1 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, source1)
76 _ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version1.ID)
77
78 template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version1.ID)
79
80 // Update the template version so that we can assert that templates
81 // are being sorted correctly.
82 updatedVersion := coderdtest.UpdateTemplateVersion(t, client, owner.OrganizationID, source2, template.ID)
83 _ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, updatedVersion.ID)
84 coderdtest.UpdateActiveTemplateVersion(t, client, template.ID, updatedVersion.ID)
85
86 // Verify .tar format
87 inv, root := clitest.New(t, "templates", "pull", "--tar", template.Name)
88 clitest.SetupConfig(t, templateAdmin, root)
89
90 var buf bytes.Buffer
91 inv.Stdout = &buf
92
93 err = inv.Run()
94 require.NoError(t, err)
95 require.True(t, bytes.Equal(expected, buf.Bytes()), "tar files differ")
96
97 // Verify .zip format
98 tarReader := tar.NewReader(bytes.NewReader(expected))
99 expectedZip, err := archive.CreateZipFromTar(tarReader, coderd.HTTPFileMaxBytes)
100 require.NoError(t, err)
101
102 inv, root = clitest.New(t, "templates", "pull", "--zip", template.Name)
103 clitest.SetupConfig(t, templateAdmin, root)
104 buf.Reset()
105 inv.Stdout = &buf
106
107 err = inv.Run()
108 require.NoError(t, err)
109 require.True(t, bytes.Equal(expectedZip, buf.Bytes()), "zip files differ")
110}
111
112// Stdout tests that 'templates pull' pulls down the non-latest active template
113// and writes it to stdout.

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
NewFunction · 0.92
SetupConfigFunction · 0.92

Tested by

no test coverage detected