Skip to content

Commit 0c4280c

Browse files
committed
Add tests
1 parent 5dd67fe commit 0c4280c

File tree

2 files changed

+89
-0
lines changed

2 files changed

+89
-0
lines changed

cli/start_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,3 +477,39 @@ func TestStart_NoWait(t *testing.T) {
477477
pty.ExpectMatch("workspace has been started in no-wait mode")
478478
_ = testutil.TryReceive(ctx, t, doneChan)
479479
}
480+
481+
func TestStart_WithReason(t *testing.T) {
482+
t.Parallel()
483+
ctx := testutil.Context(t, testutil.WaitShort)
484+
485+
// Prepare user, template, workspace
486+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
487+
owner := coderdtest.CreateFirstUser(t, client)
488+
member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
489+
version1 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
490+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version1.ID)
491+
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version1.ID)
492+
workspace := coderdtest.CreateWorkspace(t, member, template.ID)
493+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
494+
495+
// Stop the workspace
496+
build := coderdtest.CreateWorkspaceBuild(t, member, workspace, database.WorkspaceTransitionStop)
497+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, build.ID)
498+
499+
// Start the workspace with reason
500+
inv, root := clitest.New(t, "start", workspace.Name, "--reason", "cli")
501+
clitest.SetupConfig(t, member, root)
502+
doneChan := make(chan struct{})
503+
pty := ptytest.New(t).Attach(inv)
504+
go func() {
505+
defer close(doneChan)
506+
err := inv.Run()
507+
assert.NoError(t, err)
508+
}()
509+
510+
pty.ExpectMatch("workspace has been started")
511+
_ = testutil.TryReceive(ctx, t, doneChan)
512+
513+
workspace = coderdtest.MustWorkspace(t, member, workspace.ID)
514+
require.Equal(t, codersdk.BuildReasonCLI, workspace.LatestBuild.Reason)
515+
}

coderd/workspacebuilds_test.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1802,6 +1802,59 @@ func TestPostWorkspaceBuild(t *testing.T) {
18021802
assert.True(t, build.MatchedProvisioners.MostRecentlySeen.Valid)
18031803
}
18041804
})
1805+
t.Run("WithReason", func(t *testing.T) {
1806+
t.Parallel()
1807+
client, closeDaemon := coderdtest.NewWithProvisionerCloser(t, &coderdtest.Options{
1808+
IncludeProvisionerDaemon: true,
1809+
})
1810+
user := coderdtest.CreateFirstUser(t, client)
1811+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
1812+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1813+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
1814+
workspace := coderdtest.CreateWorkspace(t, client, template.ID)
1815+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
1816+
_ = closeDaemon.Close()
1817+
1818+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1819+
defer cancel()
1820+
1821+
build, err := client.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{
1822+
TemplateVersionID: template.ActiveVersionID,
1823+
Transition: codersdk.WorkspaceTransitionStart,
1824+
Reason: codersdk.CreateWorkspaceBuildReasonDashboard,
1825+
})
1826+
require.NoError(t, err)
1827+
require.Equal(t, codersdk.BuildReasonDashboard, build.Reason)
1828+
})
1829+
t.Run("WithCoderToolboxUserAgent", func(t *testing.T) {
1830+
t.Parallel()
1831+
client, closeDaemon := coderdtest.NewWithProvisionerCloser(t, &coderdtest.Options{
1832+
IncludeProvisionerDaemon: true,
1833+
})
1834+
client.HTTPClient.Transport = &codersdk.HeaderTransport{
1835+
Transport: http.DefaultTransport,
1836+
Header: http.Header{
1837+
"User-Agent": {"Coder Toolbox/1.0"},
1838+
},
1839+
}
1840+
user := coderdtest.CreateFirstUser(t, client)
1841+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
1842+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1843+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
1844+
workspace := coderdtest.CreateWorkspace(t, client, template.ID)
1845+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
1846+
_ = closeDaemon.Close()
1847+
1848+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1849+
defer cancel()
1850+
1851+
build, err := client.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{
1852+
TemplateVersionID: template.ActiveVersionID,
1853+
Transition: codersdk.WorkspaceTransitionStart,
1854+
})
1855+
require.NoError(t, err)
1856+
require.Equal(t, codersdk.BuildReasonJetbrainsConnection, build.Reason)
1857+
})
18051858
}
18061859

18071860
func TestWorkspaceBuildTimings(t *testing.T) {

0 commit comments

Comments
 (0)