Skip to content

Commit 993f0ab

Browse files
committed
TemplateImport CompleteJob Modules test
1 parent 863235d commit 993f0ab

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
@@ -1433,28 +1433,13 @@ func TestCompleteJob(t *testing.T) {
14331433

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

14531437
cases := []struct {
1454-
name string
1455-
job *proto.CompletedJob
1456-
expectedResources []database.WorkspaceResource
1457-
expectedModules []database.WorkspaceModule
1438+
name string
1439+
job *proto.CompletedJob
1440+
expectedResources []database.WorkspaceResource
1441+
expectedModules []database.WorkspaceModule
1442+
provisionerJobParams database.InsertProvisionerJobParams
14581443
}{
14591444
{
14601445
name: "TemplateDryRun",
@@ -1487,18 +1472,91 @@ func TestCompleteJob(t *testing.T) {
14871472
String: "module.test1",
14881473
Valid: true,
14891474
},
1475+
Transition: database.WorkspaceTransitionStart,
14901476
}, {
14911477
Name: "something2",
14921478
Type: "aws_instance",
14931479
ModulePath: sql.NullString{
14941480
String: "",
14951481
Valid: true,
14961482
},
1483+
Transition: database.WorkspaceTransitionStart,
1484+
}},
1485+
expectedModules: []database.WorkspaceModule{{
1486+
Key: "test1",
1487+
Version: "1.0.0",
1488+
Source: "github.com/example/example",
1489+
Transition: database.WorkspaceTransitionStart,
1490+
}},
1491+
provisionerJobParams: database.InsertProvisionerJobParams{
1492+
Type: database.ProvisionerJobTypeTemplateVersionDryRun,
1493+
},
1494+
},
1495+
{
1496+
name: "TemplateImport",
1497+
job: &proto.CompletedJob{
1498+
Type: &proto.CompletedJob_TemplateImport_{
1499+
TemplateImport: &proto.CompletedJob_TemplateImport{
1500+
StartResources: []*sdkproto.Resource{{
1501+
Name: "something",
1502+
Type: "aws_instance",
1503+
ModulePath: "module.test1",
1504+
}},
1505+
StartModules: []*sdkproto.Module{
1506+
{
1507+
Key: "test1",
1508+
Version: "1.0.0",
1509+
Source: "github.com/example/example",
1510+
},
1511+
},
1512+
StopResources: []*sdkproto.Resource{{
1513+
Name: "something2",
1514+
Type: "aws_instance",
1515+
ModulePath: "module.test2",
1516+
}},
1517+
StopModules: []*sdkproto.Module{
1518+
{
1519+
Key: "test2",
1520+
Version: "2.0.0",
1521+
Source: "github.com/example2/example",
1522+
},
1523+
},
1524+
},
1525+
},
1526+
},
1527+
provisionerJobParams: database.InsertProvisionerJobParams{
1528+
Type: database.ProvisionerJobTypeTemplateVersionImport,
1529+
Input: must(json.Marshal(provisionerdserver.TemplateVersionImportJob{
1530+
TemplateVersionID: uuid.New(),
1531+
})),
1532+
},
1533+
expectedResources: []database.WorkspaceResource{{
1534+
Name: "something",
1535+
Type: "aws_instance",
1536+
ModulePath: sql.NullString{
1537+
String: "module.test1",
1538+
Valid: true,
1539+
},
1540+
Transition: database.WorkspaceTransitionStart,
1541+
}, {
1542+
Name: "something2",
1543+
Type: "aws_instance",
1544+
ModulePath: sql.NullString{
1545+
String: "module.test2",
1546+
Valid: true,
1547+
},
1548+
Transition: database.WorkspaceTransitionStop,
14971549
}},
14981550
expectedModules: []database.WorkspaceModule{{
1499-
Key: "test1",
1500-
Version: "1.0.0",
1501-
Source: "github.com/example/example",
1551+
Key: "test1",
1552+
Version: "1.0.0",
1553+
Source: "github.com/example/example",
1554+
Transition: database.WorkspaceTransitionStart,
1555+
}, {
1556+
Key: "test2",
1557+
Version: "2.0.0",
1558+
Source: "github.com/example2/example",
1559+
Transition: database.WorkspaceTransitionStop,
15021560
}},
15031561
},
15041562
}
@@ -1509,6 +1567,36 @@ func TestCompleteJob(t *testing.T) {
15091567
t.Run(c.name, func(t *testing.T) {
15101568
t.Parallel()
15111569

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

@@ -1521,7 +1609,10 @@ func TestCompleteJob(t *testing.T) {
15211609

15221610
for _, expectedResource := range c.expectedResources {
15231611
for i, resource := range resources {
1524-
if resource.Name == expectedResource.Name && resource.Type == expectedResource.Type && resource.ModulePath == expectedResource.ModulePath {
1612+
if resource.Name == expectedResource.Name &&
1613+
resource.Type == expectedResource.Type &&
1614+
resource.ModulePath == expectedResource.ModulePath &&
1615+
resource.Transition == expectedResource.Transition {
15251616
resources[i] = database.WorkspaceResource{Name: "matched"}
15261617
}
15271618
}
@@ -1537,7 +1628,10 @@ func TestCompleteJob(t *testing.T) {
15371628

15381629
for _, expectedModule := range c.expectedModules {
15391630
for i, module := range modules {
1540-
if module.Key == expectedModule.Key && module.Version == expectedModule.Version && module.Source == expectedModule.Source {
1631+
if module.Key == expectedModule.Key &&
1632+
module.Version == expectedModule.Version &&
1633+
module.Source == expectedModule.Source &&
1634+
module.Transition == expectedModule.Transition {
15411635
modules[i] = database.WorkspaceModule{Key: "matched"}
15421636
}
15431637
}

0 commit comments

Comments
 (0)