Skip to content

Commit 9b025f5

Browse files
committed
TemplateImport CompleteJob Modules test
1 parent de2f3fc commit 9b025f5

File tree

1 file changed

+119
-25
lines changed

1 file changed

+119
-25
lines changed

coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 119 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1431,28 +1431,13 @@ func TestCompleteJob(t *testing.T) {
14311431

14321432
t.Run("Modules", func(t *testing.T) {
14331433
t.Parallel()
1434-
srv, db, _, pd := setup(t, false, &overrides{})
1435-
job, err := db.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{
1436-
ID: uuid.New(),
1437-
Provisioner: database.ProvisionerTypeEcho,
1438-
Type: database.ProvisionerJobTypeTemplateVersionDryRun,
1439-
StorageMethod: database.ProvisionerStorageMethodFile,
1440-
})
1441-
require.NoError(t, err)
1442-
_, err = db.AcquireProvisionerJob(ctx, database.AcquireProvisionerJobParams{
1443-
WorkerID: uuid.NullUUID{
1444-
UUID: pd.ID,
1445-
Valid: true,
1446-
},
1447-
Types: []database.ProvisionerType{database.ProvisionerTypeEcho},
1448-
})
1449-
require.NoError(t, err)
14501434

14511435
cases := []struct {
1452-
name string
1453-
job *proto.CompletedJob
1454-
expectedResources []database.WorkspaceResource
1455-
expectedModules []database.WorkspaceModule
1436+
name string
1437+
job *proto.CompletedJob
1438+
expectedResources []database.WorkspaceResource
1439+
expectedModules []database.WorkspaceModule
1440+
provisionerJobParams database.InsertProvisionerJobParams
14561441
}{
14571442
{
14581443
name: "TemplateDryRun",
@@ -1485,18 +1470,91 @@ func TestCompleteJob(t *testing.T) {
14851470
String: "module.test1",
14861471
Valid: true,
14871472
},
1473+
Transition: database.WorkspaceTransitionStart,
14881474
}, {
14891475
Name: "something2",
14901476
Type: "aws_instance",
14911477
ModulePath: sql.NullString{
14921478
String: "",
14931479
Valid: true,
14941480
},
1481+
Transition: database.WorkspaceTransitionStart,
1482+
}},
1483+
expectedModules: []database.WorkspaceModule{{
1484+
Key: "test1",
1485+
Version: "1.0.0",
1486+
Source: "github.com/example/example",
1487+
Transition: database.WorkspaceTransitionStart,
1488+
}},
1489+
provisionerJobParams: database.InsertProvisionerJobParams{
1490+
Type: database.ProvisionerJobTypeTemplateVersionDryRun,
1491+
},
1492+
},
1493+
{
1494+
name: "TemplateImport",
1495+
job: &proto.CompletedJob{
1496+
Type: &proto.CompletedJob_TemplateImport_{
1497+
TemplateImport: &proto.CompletedJob_TemplateImport{
1498+
StartResources: []*sdkproto.Resource{{
1499+
Name: "something",
1500+
Type: "aws_instance",
1501+
ModulePath: "module.test1",
1502+
}},
1503+
StartModules: []*sdkproto.Module{
1504+
{
1505+
Key: "test1",
1506+
Version: "1.0.0",
1507+
Source: "github.com/example/example",
1508+
},
1509+
},
1510+
StopResources: []*sdkproto.Resource{{
1511+
Name: "something2",
1512+
Type: "aws_instance",
1513+
ModulePath: "module.test2",
1514+
}},
1515+
StopModules: []*sdkproto.Module{
1516+
{
1517+
Key: "test2",
1518+
Version: "2.0.0",
1519+
Source: "github.com/example2/example",
1520+
},
1521+
},
1522+
},
1523+
},
1524+
},
1525+
provisionerJobParams: database.InsertProvisionerJobParams{
1526+
Type: database.ProvisionerJobTypeTemplateVersionImport,
1527+
Input: must(json.Marshal(provisionerdserver.TemplateVersionImportJob{
1528+
TemplateVersionID: uuid.New(),
1529+
})),
1530+
},
1531+
expectedResources: []database.WorkspaceResource{{
1532+
Name: "something",
1533+
Type: "aws_instance",
1534+
ModulePath: sql.NullString{
1535+
String: "module.test1",
1536+
Valid: true,
1537+
},
1538+
Transition: database.WorkspaceTransitionStart,
1539+
}, {
1540+
Name: "something2",
1541+
Type: "aws_instance",
1542+
ModulePath: sql.NullString{
1543+
String: "module.test2",
1544+
Valid: true,
1545+
},
1546+
Transition: database.WorkspaceTransitionStop,
14951547
}},
14961548
expectedModules: []database.WorkspaceModule{{
1497-
Key: "test1",
1498-
Version: "1.0.0",
1499-
Source: "github.com/example/example",
1549+
Key: "test1",
1550+
Version: "1.0.0",
1551+
Source: "github.com/example/example",
1552+
Transition: database.WorkspaceTransitionStart,
1553+
}, {
1554+
Key: "test2",
1555+
Version: "2.0.0",
1556+
Source: "github.com/example2/example",
1557+
Transition: database.WorkspaceTransitionStop,
15001558
}},
15011559
},
15021560
}
@@ -1507,6 +1565,36 @@ func TestCompleteJob(t *testing.T) {
15071565
t.Run(c.name, func(t *testing.T) {
15081566
t.Parallel()
15091567

1568+
srv, db, _, pd := setup(t, false, &overrides{})
1569+
jobParams := c.provisionerJobParams
1570+
if jobParams.ID == uuid.Nil {
1571+
jobParams.ID = uuid.New()
1572+
}
1573+
if jobParams.Provisioner == "" {
1574+
jobParams.Provisioner = database.ProvisionerTypeEcho
1575+
}
1576+
if jobParams.StorageMethod == "" {
1577+
jobParams.StorageMethod = database.ProvisionerStorageMethodFile
1578+
}
1579+
job, err := db.InsertProvisionerJob(ctx, jobParams)
1580+
tpl := dbgen.Template(t, db, database.Template{
1581+
OrganizationID: pd.OrganizationID,
1582+
})
1583+
_ = dbgen.TemplateVersion(t, db, database.TemplateVersion{
1584+
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1585+
JobID: job.ID,
1586+
})
1587+
1588+
require.NoError(t, err)
1589+
_, err = db.AcquireProvisionerJob(ctx, database.AcquireProvisionerJobParams{
1590+
WorkerID: uuid.NullUUID{
1591+
UUID: pd.ID,
1592+
Valid: true,
1593+
},
1594+
Types: []database.ProvisionerType{jobParams.Provisioner},
1595+
})
1596+
require.NoError(t, err)
1597+
15101598
completedJob := c.job
15111599
completedJob.JobId = job.ID.String()
15121600

@@ -1519,7 +1607,10 @@ func TestCompleteJob(t *testing.T) {
15191607

15201608
for _, expectedResource := range c.expectedResources {
15211609
for i, resource := range resources {
1522-
if resource.Name == expectedResource.Name && resource.Type == expectedResource.Type && resource.ModulePath == expectedResource.ModulePath {
1610+
if resource.Name == expectedResource.Name &&
1611+
resource.Type == expectedResource.Type &&
1612+
resource.ModulePath == expectedResource.ModulePath &&
1613+
resource.Transition == expectedResource.Transition {
15231614
resources[i] = database.WorkspaceResource{Name: "matched"}
15241615
}
15251616
}
@@ -1535,7 +1626,10 @@ func TestCompleteJob(t *testing.T) {
15351626

15361627
for _, expectedModule := range c.expectedModules {
15371628
for i, module := range modules {
1538-
if module.Key == expectedModule.Key && module.Version == expectedModule.Version && module.Source == expectedModule.Source {
1629+
if module.Key == expectedModule.Key &&
1630+
module.Version == expectedModule.Version &&
1631+
module.Source == expectedModule.Source &&
1632+
module.Transition == expectedModule.Transition {
15391633
modules[i] = database.WorkspaceModule{Key: "matched"}
15401634
}
15411635
}

0 commit comments

Comments
 (0)