Skip to content

Commit 8888c2e

Browse files
committed
add coderd test
1 parent 2b4140f commit 8888c2e

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

coderd/workspaceagents_test.go

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,3 +1326,85 @@ func TestWorkspaceAgent_Metadata(t *testing.T) {
13261326
err = agentClient.PostMetadata(ctx, "unknown", unknownKeyMetadata)
13271327
require.NoError(t, err)
13281328
}
1329+
1330+
func TestWorkspaceAgent_Startup(t *testing.T) {
1331+
t.Parallel()
1332+
1333+
t.Run("OK", func(t *testing.T) {
1334+
t.Parallel()
1335+
1336+
client := coderdtest.New(t, &coderdtest.Options{
1337+
IncludeProvisionerDaemon: true,
1338+
})
1339+
user := coderdtest.CreateFirstUser(t, client)
1340+
authToken := uuid.NewString()
1341+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
1342+
Parse: echo.ParseComplete,
1343+
ProvisionPlan: echo.ProvisionComplete,
1344+
ProvisionApply: echo.ProvisionApplyWithAgent(authToken),
1345+
})
1346+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1347+
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
1348+
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
1349+
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
1350+
1351+
agentClient := agentsdk.New(client.URL)
1352+
agentClient.SetSessionToken(authToken)
1353+
1354+
ctx := testutil.Context(t, testutil.WaitMedium)
1355+
1356+
const (
1357+
expectedVersion = "v1.2.3"
1358+
expectedDir = "/home/coder"
1359+
expectedSubsystem = codersdk.AgentSubsystemEnvbox
1360+
)
1361+
1362+
err := agentClient.PostStartup(ctx, agentsdk.PostStartupRequest{
1363+
Version: expectedVersion,
1364+
ExpandedDirectory: expectedDir,
1365+
Subsystem: expectedSubsystem,
1366+
})
1367+
require.NoError(t, err)
1368+
1369+
workspace, err = client.Workspace(ctx, workspace.ID)
1370+
require.NoError(t, err)
1371+
1372+
wsagent, err := client.WorkspaceAgent(ctx, workspace.LatestBuild.Resources[0].Agents[0].ID)
1373+
require.NoError(t, err)
1374+
require.Equal(t, expectedVersion, wsagent.Version)
1375+
require.Equal(t, expectedDir, wsagent.ExpandedDirectory)
1376+
require.Equal(t, expectedSubsystem, wsagent.Subsystem)
1377+
})
1378+
1379+
t.Run("InvalidSemver", func(t *testing.T) {
1380+
t.Parallel()
1381+
1382+
client := coderdtest.New(t, &coderdtest.Options{
1383+
IncludeProvisionerDaemon: true,
1384+
})
1385+
user := coderdtest.CreateFirstUser(t, client)
1386+
authToken := uuid.NewString()
1387+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
1388+
Parse: echo.ParseComplete,
1389+
ProvisionPlan: echo.ProvisionComplete,
1390+
ProvisionApply: echo.ProvisionApplyWithAgent(authToken),
1391+
})
1392+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1393+
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
1394+
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
1395+
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
1396+
1397+
agentClient := agentsdk.New(client.URL)
1398+
agentClient.SetSessionToken(authToken)
1399+
1400+
ctx := testutil.Context(t, testutil.WaitMedium)
1401+
1402+
err := agentClient.PostStartup(ctx, agentsdk.PostStartupRequest{
1403+
Version: "1.2.3",
1404+
})
1405+
require.Error(t, err)
1406+
cerr, ok := codersdk.AsError(err)
1407+
require.True(t, ok)
1408+
require.Equal(t, http.StatusBadRequest, cerr.StatusCode())
1409+
})
1410+
}

0 commit comments

Comments
 (0)