diff --git a/site/e2e/globalSetup.ts b/site/e2e/globalSetup.ts index ad61cca6f0f3d..611e9f6455806 100644 --- a/site/e2e/globalSetup.ts +++ b/site/e2e/globalSetup.ts @@ -8,13 +8,15 @@ const globalSetup = async (): Promise => { axios.defaults.baseURL = `http://localhost:${constants.defaultPort}` // Create first user - await createFirstUser({ + const firstUser = await createFirstUser({ email: constants.email, username: constants.username, password: constants.password, trial: false, }) + process.env.FIRST_USER = JSON.stringify(firstUser) + // Authenticated storage const authenticatedRequestContext = await request.newContext() await authenticatedRequestContext.post( diff --git a/site/e2e/tests/workspaceAccess.spec.ts b/site/e2e/tests/workspaceAccess.spec.ts new file mode 100644 index 0000000000000..c5bc32fb326ce --- /dev/null +++ b/site/e2e/tests/workspaceAccess.spec.ts @@ -0,0 +1,31 @@ +import { test, expect } from "@playwright/test" +import { getStatePath } from "../helpers" +import { createTemplate, createTemplateVersion, getOrganization } from "api/api" + +test.use({ storageState: getStatePath("authState") }) + +test("admin can view own workspace", async ({ page, baseURL }) => { + // import the user response and get the org id off of that + const { FIRST_USER } = process.env + const { user_id, organization_id } = JSON.parse(FIRST_USER as any) + + console.log("organizationId", organization_id) + + const org = await getOrganization(organization_id) + console.log("org", org) + + // const { id } = await createTemplateVersion(organization_id, { + // storage_method: "file", + // provisioner: "terraform", + // tags: {}, + // }) + + // console.log("templateVID", id) + // // Create template + // await createTemplate(organization_id, { + // name: "my-template", + // template_version_id: id, + // }) + // await page.goto(`${baseURL}/templates`, { waitUntil: "networkidle" }) + // await expect(page).toHaveTitle("Templates - Coder") +}) diff --git a/site/src/pages/WorkspacePage/WorkspacePage.tsx b/site/src/pages/WorkspacePage/WorkspacePage.tsx index c805e33c02cef..673d12a1e2e23 100644 --- a/site/src/pages/WorkspacePage/WorkspacePage.tsx +++ b/site/src/pages/WorkspacePage/WorkspacePage.tsx @@ -9,6 +9,7 @@ import { firstOrItem } from "util/array" import { quotaMachine } from "xServices/quotas/quotasXService" import { workspaceMachine } from "xServices/workspace/workspaceXService" import { WorkspaceReadyPage } from "./WorkspaceReadyPage" +import { RequirePermission } from "components/RequirePermission/RequirePermission" export const WorkspacePage: FC = () => { const { username: usernameQueryParam, workspace: workspaceQueryParam } = @@ -42,46 +43,50 @@ export const WorkspacePage: FC = () => { }, [username, quotaSend]) return ( - - -
- {Boolean(getWorkspaceError) && ( - - )} - {Boolean(getTemplateWarning) && ( - - )} - {Boolean(getTemplateParametersWarning) && ( - - )} - {Boolean(checkPermissionsError) && ( - - )} - {Boolean(getQuotaError) && ( - - )} -
-
- - - - - - -
+ + + +
+ {Boolean(getWorkspaceError) && ( + + )} + {Boolean(getTemplateWarning) && ( + + )} + {Boolean(getTemplateParametersWarning) && ( + + )} + {Boolean(checkPermissionsError) && ( + + )} + {Boolean(getQuotaError) && ( + + )} +
+
+ + + + + + +
+
) } diff --git a/site/src/xServices/workspace/workspaceXService.ts b/site/src/xServices/workspace/workspaceXService.ts index 1fc1c543fd78e..4a5f47506be6a 100644 --- a/site/src/xServices/workspace/workspaceXService.ts +++ b/site/src/xServices/workspace/workspaceXService.ts @@ -9,6 +9,7 @@ import { displayError, displaySuccess, } from "../../components/GlobalSnackbar/utils" +import { AxiosError } from "axios" const latestBuild = (builds: TypesGen.WorkspaceBuild[]) => { // Cloning builds to not change the origin object with the sort() @@ -56,7 +57,7 @@ export interface WorkspaceContext { workspace?: TypesGen.Workspace template?: TypesGen.Template build?: TypesGen.WorkspaceBuild - getWorkspaceError?: Error | unknown + getWorkspaceError?: AxiosError getTemplateWarning: Error | unknown getTemplateParametersWarning: Error | unknown // Builds @@ -491,7 +492,7 @@ export const workspaceMachine = createMachine( workspace: (_, event) => event.data, }), assignGetWorkspaceError: assign({ - getWorkspaceError: (_, event) => event.data, + getWorkspaceError: (_, event) => event.data as AxiosError, }), clearGetWorkspaceError: (context) => assign({ ...context, getWorkspaceError: undefined }), pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy