(t *testing.T)
| 1567 | } |
| 1568 | |
| 1569 | func TestPostWorkspaceBuild(t *testing.T) { |
| 1570 | t.Parallel() |
| 1571 | t.Run("NoTemplateVersion", func(t *testing.T) { |
| 1572 | t.Parallel() |
| 1573 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 1574 | user := coderdtest.CreateFirstUser(t, client) |
| 1575 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil) |
| 1576 | template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) |
| 1577 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 1578 | workspace := coderdtest.CreateWorkspace(t, client, template.ID) |
| 1579 | |
| 1580 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) |
| 1581 | defer cancel() |
| 1582 | |
| 1583 | _, err := client.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{ |
| 1584 | TemplateVersionID: uuid.New(), |
| 1585 | Transition: codersdk.WorkspaceTransitionStart, |
| 1586 | }) |
| 1587 | require.Error(t, err) |
| 1588 | var apiErr *codersdk.Error |
| 1589 | require.ErrorAs(t, err, &apiErr) |
| 1590 | require.Equal(t, http.StatusBadRequest, apiErr.StatusCode()) |
| 1591 | }) |
| 1592 | |
| 1593 | t.Run("TemplateVersionFailedImport", func(t *testing.T) { |
| 1594 | t.Parallel() |
| 1595 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 1596 | user := coderdtest.CreateFirstUser(t, client) |
| 1597 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{ |
| 1598 | ProvisionPlan: []*proto.Response{ |
| 1599 | { |
| 1600 | Type: &proto.Response_Plan{ |
| 1601 | Plan: &proto.PlanComplete{ |
| 1602 | Error: "failed to plan", |
| 1603 | }, |
| 1604 | }, |
| 1605 | }, |
| 1606 | }, |
| 1607 | }) |
| 1608 | template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) |
| 1609 | version = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 1610 | |
| 1611 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) |
| 1612 | defer cancel() |
| 1613 | |
| 1614 | _, err := client.CreateWorkspace(ctx, user.OrganizationID, codersdk.Me, codersdk.CreateWorkspaceRequest{ |
| 1615 | TemplateID: template.ID, |
| 1616 | Name: "workspace", |
| 1617 | }) |
| 1618 | var apiErr *codersdk.Error |
| 1619 | require.ErrorAs(t, err, &apiErr) |
| 1620 | require.Equal(t, http.StatusBadRequest, apiErr.StatusCode()) |
| 1621 | }) |
| 1622 | |
| 1623 | t.Run("AlreadyActive", func(t *testing.T) { |
| 1624 | t.Parallel() |
| 1625 | client, closer := coderdtest.NewWithProvisionerCloser(t, nil) |
| 1626 | defer closer.Close() |
nothing calls this directly
no test coverage detected