Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8970be7

Browse files
committed
unit test
1 parent 422fe8b commit 8970be7

File tree

2 files changed

+61
-35
lines changed

2 files changed

+61
-35
lines changed

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1572,9 +1572,9 @@ func (s *server) notifyWorkspaceDeleted(ctx context.Context, workspace database.
15721572

15731573
if _, err := s.NotificationEnqueuer.Enqueue(ctx, workspace.OwnerID, notifications.TemplateWorkspaceDeleted,
15741574
map[string]string{
1575-
"name": workspace.Name,
1576-
"initiatedBy": build.InitiatorByUsername,
1577-
"reason": reason,
1575+
"name": workspace.Name,
1576+
"initiator": build.InitiatorByUsername,
1577+
"reason": reason,
15781578
}, "provisionerdserver",
15791579
// Associate this notification with all the related entities.
15801580
workspace.ID, workspace.OwnerID, workspace.TemplateID, workspace.OrganizationID,

coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 58 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,31 +1569,42 @@ func TestInsertWorkspaceResource(t *testing.T) {
15691569
func TestNotifications(t *testing.T) {
15701570
t.Parallel()
15711571

1572-
t.Run("Workspace deletion", func(t *testing.T) {
1572+
t.Run("Workspace Events", func(t *testing.T) {
15731573
t.Parallel()
15741574

15751575
tests := []struct {
1576-
name string
1577-
deletionReason database.BuildReason
1578-
shouldNotify bool
1579-
shouldSelfInitiate bool
1576+
name string
1577+
1578+
buildReason database.BuildReason
1579+
buildFailed bool
1580+
shouldNotify bool
1581+
shouldSelfInitiate bool
1582+
shouldDeleteWorkspace bool
15801583
}{
15811584
{
1582-
name: "initiated by autodelete",
1583-
deletionReason: database.BuildReasonAutodelete,
1584-
shouldNotify: true,
1585+
name: "initiated by autodelete",
1586+
buildReason: database.BuildReasonAutodelete,
1587+
shouldNotify: true,
1588+
shouldDeleteWorkspace: true,
1589+
},
1590+
{
1591+
name: "initiated by self",
1592+
buildReason: database.BuildReasonInitiator,
1593+
shouldNotify: false,
1594+
shouldSelfInitiate: true,
1595+
shouldDeleteWorkspace: true,
15851596
},
15861597
{
1587-
name: "initiated by self",
1588-
deletionReason: database.BuildReasonInitiator,
1589-
shouldNotify: false,
1590-
shouldSelfInitiate: true,
1598+
name: "initiated by someone else",
1599+
buildReason: database.BuildReasonInitiator,
1600+
shouldNotify: true,
1601+
shouldDeleteWorkspace: true,
15911602
},
15921603
{
1593-
name: "initiated by someone else",
1594-
deletionReason: database.BuildReasonInitiator,
1595-
shouldNotify: true,
1596-
shouldSelfInitiate: false,
1604+
name: "initiated by autostart but failed",
1605+
buildReason: database.BuildReasonAutostart,
1606+
buildFailed: true,
1607+
shouldNotify: true,
15971608
},
15981609
}
15991610

@@ -1604,7 +1615,11 @@ func TestNotifications(t *testing.T) {
16041615
ctx := context.Background()
16051616
notifEnq := &fakeNotificationEnqueuer{}
16061617

1607-
srv, db, ps, pd := setup(t, false, &overrides{
1618+
// Otherwise `(*Server).FailJob` fails with:
1619+
// audit log - get build {"error": "sql: no rows in result set"}
1620+
ignoreLogErrors := tc.buildFailed
1621+
1622+
srv, db, ps, pd := setup(t, ignoreLogErrors, &overrides{
16081623
notificationEnqueuer: notifEnq,
16091624
})
16101625

@@ -1640,7 +1655,7 @@ func TestNotifications(t *testing.T) {
16401655
TemplateVersionID: version.ID,
16411656
InitiatorID: initiator.ID,
16421657
Transition: database.WorkspaceTransitionDelete,
1643-
Reason: tc.deletionReason,
1658+
Reason: tc.buildReason,
16441659
})
16451660
job := dbgen.ProvisionerJob(t, db, ps, database.ProvisionerJob{
16461661
FileID: file.ID,
@@ -1660,23 +1675,34 @@ func TestNotifications(t *testing.T) {
16601675
})
16611676
require.NoError(t, err)
16621677

1663-
_, err = srv.CompleteJob(ctx, &proto.CompletedJob{
1664-
JobId: job.ID.String(),
1665-
Type: &proto.CompletedJob_WorkspaceBuild_{
1666-
WorkspaceBuild: &proto.CompletedJob_WorkspaceBuild{
1667-
State: []byte{},
1668-
Resources: []*sdkproto.Resource{{
1669-
Name: "example",
1670-
Type: "aws_instance",
1671-
}},
1678+
if tc.buildFailed {
1679+
_, err = srv.FailJob(ctx, &proto.FailedJob{
1680+
JobId: job.ID.String(),
1681+
Type: &proto.FailedJob_WorkspaceBuild_{
1682+
WorkspaceBuild: &proto.FailedJob_WorkspaceBuild{
1683+
State: []byte{},
1684+
},
16721685
},
1673-
},
1674-
})
1686+
})
1687+
} else {
1688+
_, err = srv.CompleteJob(ctx, &proto.CompletedJob{
1689+
JobId: job.ID.String(),
1690+
Type: &proto.CompletedJob_WorkspaceBuild_{
1691+
WorkspaceBuild: &proto.CompletedJob_WorkspaceBuild{
1692+
State: []byte{},
1693+
Resources: []*sdkproto.Resource{{
1694+
Name: "example",
1695+
Type: "aws_instance",
1696+
}},
1697+
},
1698+
},
1699+
})
1700+
}
16751701
require.NoError(t, err)
16761702

16771703
workspace, err = db.GetWorkspaceByID(ctx, workspace.ID)
16781704
require.NoError(t, err)
1679-
require.True(t, workspace.Deleted)
1705+
require.Equal(t, tc.shouldDeleteWorkspace, workspace.Deleted)
16801706

16811707
if tc.shouldNotify {
16821708
// Validate that the notification was sent and contained the expected values.
@@ -1686,8 +1712,8 @@ func TestNotifications(t *testing.T) {
16861712
require.Contains(t, notifEnq.sent[0].targets, workspace.ID)
16871713
require.Contains(t, notifEnq.sent[0].targets, workspace.OrganizationID)
16881714
require.Contains(t, notifEnq.sent[0].targets, user.ID)
1689-
if tc.deletionReason == database.BuildReasonInitiator {
1690-
require.Equal(t, notifEnq.sent[0].labels["initiatedBy"], initiator.Username)
1715+
if tc.buildReason == database.BuildReasonInitiator {
1716+
require.Equal(t, notifEnq.sent[0].labels["initiator"], initiator.Username)
16911717
}
16921718
} else {
16931719
require.Len(t, notifEnq.sent, 0)

0 commit comments

Comments
 (0)