Stdout tests that 'templates pull' pulls down the active template and writes it to stdout.
(t *testing.T)
| 55 | // Stdout tests that 'templates pull' pulls down the active template |
| 56 | // and writes it to stdout. |
| 57 | func 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. |
nothing calls this directly
no test coverage detected