mirror of
https://github.com/coder/coder.git
synced 2025-07-06 15:41:45 +00:00
feat!: drop support for legacy parameters (#7663)
This commit is contained in:
@ -8,7 +8,6 @@ import (
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
@ -23,92 +22,6 @@ import (
|
||||
|
||||
func TestTemplatePush(t *testing.T) {
|
||||
t.Parallel()
|
||||
// NewParameter will:
|
||||
// 1. Create a template version with 0 params
|
||||
// 2. Create a new version with 1 param
|
||||
// 2a. Expects 1 param prompt, fills in value
|
||||
// 3. Assert 1 param value in new version
|
||||
// 4. Creates a new version with same param
|
||||
// 4a. Expects 0 prompts as the param value is carried over
|
||||
// 5. Assert 1 param value in new version
|
||||
// 6. Creates a new version with 0 params
|
||||
// 7. Asset 0 params in new version
|
||||
t.Run("NewParameter", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
|
||||
user := coderdtest.CreateFirstUser(t, client)
|
||||
// Create initial template version to update
|
||||
lastActiveVersion := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
|
||||
_ = coderdtest.AwaitTemplateVersionJob(t, client, lastActiveVersion.ID)
|
||||
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, lastActiveVersion.ID)
|
||||
|
||||
// Create new template version with a new parameter
|
||||
source := clitest.CreateTemplateVersionSource(t, &echo.Responses{
|
||||
Parse: createTestParseResponse(),
|
||||
ProvisionApply: echo.ProvisionComplete,
|
||||
})
|
||||
inv, root := clitest.New(t, "templates", "push", template.Name, "-y", "--directory", source, "--test.provisioner", string(database.ProvisionerTypeEcho))
|
||||
clitest.SetupConfig(t, client, root)
|
||||
pty := ptytest.New(t).Attach(inv)
|
||||
|
||||
execDone := make(chan error)
|
||||
go func() {
|
||||
execDone <- inv.Run()
|
||||
}()
|
||||
|
||||
matches := []struct {
|
||||
match string
|
||||
write string
|
||||
}{
|
||||
// Expect to be prompted for the new param
|
||||
{match: "Enter a value:", write: "peter-pan"},
|
||||
}
|
||||
for _, m := range matches {
|
||||
pty.ExpectMatch(m.match)
|
||||
pty.WriteLine(m.write)
|
||||
}
|
||||
|
||||
require.NoError(t, <-execDone)
|
||||
|
||||
// Assert template version changed and we have the new param
|
||||
latestTV, latestParams := latestTemplateVersion(t, client, template.ID)
|
||||
assert.NotEqual(t, lastActiveVersion.ID, latestTV.ID)
|
||||
require.Len(t, latestParams, 1, "expect 1 param")
|
||||
lastActiveVersion = latestTV
|
||||
|
||||
// Second update of the same source requires no prompt since the params
|
||||
// are carried over.
|
||||
inv, root = clitest.New(t, "templates", "push", template.Name, "-y", "--directory", source, "--test.provisioner", string(database.ProvisionerTypeEcho))
|
||||
clitest.SetupConfig(t, client, root)
|
||||
go func() {
|
||||
execDone <- inv.Run()
|
||||
}()
|
||||
require.NoError(t, <-execDone)
|
||||
|
||||
// Assert template version changed and we have the carried over param
|
||||
latestTV, latestParams = latestTemplateVersion(t, client, template.ID)
|
||||
assert.NotEqual(t, lastActiveVersion.ID, latestTV.ID)
|
||||
require.Len(t, latestParams, 1, "expect 1 param")
|
||||
lastActiveVersion = latestTV
|
||||
|
||||
// Remove the param
|
||||
source = clitest.CreateTemplateVersionSource(t, &echo.Responses{
|
||||
Parse: echo.ParseComplete,
|
||||
ProvisionApply: echo.ProvisionComplete,
|
||||
})
|
||||
|
||||
inv, root = clitest.New(t, "templates", "push", template.Name, "-y", "--directory", source, "--test.provisioner", string(database.ProvisionerTypeEcho))
|
||||
clitest.SetupConfig(t, client, root)
|
||||
go func() {
|
||||
execDone <- inv.Run()
|
||||
}()
|
||||
require.NoError(t, <-execDone)
|
||||
// Assert template version changed and the param was removed
|
||||
latestTV, latestParams = latestTemplateVersion(t, client, template.ID)
|
||||
assert.NotEqual(t, lastActiveVersion.ID, latestTV.ID)
|
||||
require.Len(t, latestParams, 0, "expect 0 param")
|
||||
lastActiveVersion = latestTV
|
||||
})
|
||||
|
||||
t.Run("OK", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
@ -495,20 +408,6 @@ func TestTemplatePush(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func latestTemplateVersion(t *testing.T, client *codersdk.Client, templateID uuid.UUID) (codersdk.TemplateVersion, []codersdk.Parameter) {
|
||||
t.Helper()
|
||||
|
||||
ctx := context.Background()
|
||||
newTemplate, err := client.Template(ctx, templateID)
|
||||
require.NoError(t, err)
|
||||
tv, err := client.TemplateVersion(ctx, newTemplate.ActiveVersionID)
|
||||
require.NoError(t, err)
|
||||
params, err := client.Parameters(ctx, codersdk.ParameterImportJob, tv.Job.ID)
|
||||
require.NoError(t, err)
|
||||
|
||||
return tv, params
|
||||
}
|
||||
|
||||
func createEchoResponsesWithTemplateVariables(templateVariables []*proto.TemplateVariable) *echo.Responses {
|
||||
return &echo.Responses{
|
||||
Parse: []*proto.Parse_Response{
|
||||
|
Reference in New Issue
Block a user