mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
This pull request builds on the existing migrations and queries to add support for presets to the coder API.
77 lines
2.3 KiB
Go
77 lines
2.3 KiB
Go
package coderd_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/coder/coder/v2/coderd/coderdtest"
|
|
"github.com/coder/coder/v2/coderd/database"
|
|
"github.com/coder/coder/v2/coderd/database/dbauthz"
|
|
"github.com/coder/coder/v2/coderd/httpmw"
|
|
"github.com/coder/coder/v2/coderd/rbac"
|
|
"github.com/coder/coder/v2/codersdk"
|
|
"github.com/coder/coder/v2/testutil"
|
|
)
|
|
|
|
func TestTemplateVersionPresets(t *testing.T) {
|
|
// TODO (sasswart): Test case: what if a user tries to read presets or preset parameters from a different org?
|
|
|
|
t.Parallel()
|
|
|
|
givenPreset := codersdk.Preset{
|
|
Name: "My Preset",
|
|
Parameters: []codersdk.PresetParameter{
|
|
{
|
|
Name: "preset_param1",
|
|
Value: "A1B2C3",
|
|
},
|
|
{
|
|
Name: "preset_param2",
|
|
Value: "D4E5F6",
|
|
},
|
|
},
|
|
}
|
|
ctx := testutil.Context(t, testutil.WaitShort)
|
|
|
|
client, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
|
|
user := coderdtest.CreateFirstUser(t, client)
|
|
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
|
|
|
|
// nolint:gocritic // This is a test
|
|
provisionerCtx := dbauthz.AsProvisionerd(ctx)
|
|
|
|
dbPreset, err := db.InsertPreset(provisionerCtx, database.InsertPresetParams{
|
|
Name: givenPreset.Name,
|
|
TemplateVersionID: version.ID,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
var presetParameterNames []string
|
|
var presetParameterValues []string
|
|
for _, presetParameter := range givenPreset.Parameters {
|
|
presetParameterNames = append(presetParameterNames, presetParameter.Name)
|
|
presetParameterValues = append(presetParameterValues, presetParameter.Value)
|
|
}
|
|
_, err = db.InsertPresetParameters(provisionerCtx, database.InsertPresetParametersParams{
|
|
TemplateVersionPresetID: dbPreset.ID,
|
|
Names: presetParameterNames,
|
|
Values: presetParameterValues,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
userSubject, _, err := httpmw.UserRBACSubject(ctx, db, user.UserID, rbac.ScopeAll)
|
|
require.NoError(t, err)
|
|
userCtx := dbauthz.As(ctx, userSubject)
|
|
|
|
gotPresets, err := client.TemplateVersionPresets(userCtx, version.ID)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, 1, len(gotPresets))
|
|
require.Equal(t, givenPreset.Name, gotPresets[0].Name)
|
|
|
|
for _, presetParameter := range givenPreset.Parameters {
|
|
require.Contains(t, gotPresets[0].Parameters, presetParameter)
|
|
}
|
|
}
|