Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita322339

Browse files
authored
chore: use tighter permissions in e2e workspace tests (#16687)
1 parentb5ff9fa commita322339

File tree

7 files changed

+70
-43
lines changed

7 files changed

+70
-43
lines changed

‎site/e2e/constants.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,22 @@ export const users = {
2424
password:defaultPassword,
2525
email:"admin@coder.com",
2626
},
27+
templateAdmin:{
28+
username:"template-admin",
29+
password:defaultPassword,
30+
email:"templateadmin@coder.com",
31+
roles:["Template Admin"],
32+
},
2733
auditor:{
2834
username:"auditor",
2935
password:defaultPassword,
3036
email:"auditor@coder.com",
3137
roles:["Template Admin","Auditor"],
3238
},
33-
user:{
34-
username:"user",
39+
member:{
40+
username:"member",
3541
password:defaultPassword,
36-
email:"user@coder.com",
42+
email:"member@coder.com",
3743
},
3844
}satisfiesRecord<
3945
string,

‎site/e2e/helpers.ts

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ export const createWorkspace = async (
150150
awaitpage.getByRole("button",{name:/createworkspace/i}).click();
151151

152152
constuser=currentUser(page);
153-
154153
awaitexpectUrl(page).toHavePathName(`/@${user.username}/${name}`);
155154

156155
awaitpage.waitForSelector("[data-testid='build-status'] >> text=Running",{
@@ -165,12 +164,10 @@ export const verifyParameters = async (
165164
richParameters:RichParameter[],
166165
expectedBuildParameters:WorkspaceBuildParameter[],
167166
)=>{
168-
awaitpage.goto(`/@admin/${workspaceName}/settings/parameters`,{
167+
constuser=currentUser(page);
168+
awaitpage.goto(`/@${user.username}/${workspaceName}/settings/parameters`,{
169169
waitUntil:"domcontentloaded",
170170
});
171-
awaitexpectUrl(page).toHavePathName(
172-
`/@admin/${workspaceName}/settings/parameters`,
173-
);
174171

175172
for(constbuildParameterofexpectedBuildParameters){
176173
constrichParameter=richParameters.find(
@@ -356,10 +353,10 @@ export const sshIntoWorkspace = async (
356353
};
357354

358355
exportconststopWorkspace=async(page:Page,workspaceName:string)=>{
359-
awaitpage.goto(`/@admin/${workspaceName}`,{
356+
constuser=currentUser(page);
357+
awaitpage.goto(`/@${user.username}/${workspaceName}`,{
360358
waitUntil:"domcontentloaded",
361359
});
362-
awaitexpectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
363360

364361
awaitpage.getByTestId("workspace-stop-button").click();
365362

@@ -375,10 +372,10 @@ export const buildWorkspaceWithParameters = async (
375372
buildParameters:WorkspaceBuildParameter[]=[],
376373
confirm=false,
377374
)=>{
378-
awaitpage.goto(`/@admin/${workspaceName}`,{
375+
constuser=currentUser(page);
376+
awaitpage.goto(`/@${user.username}/${workspaceName}`,{
379377
waitUntil:"domcontentloaded",
380378
});
381-
awaitexpectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
382379

383380
awaitpage.getByTestId("build-parameters-button").click();
384381

@@ -993,10 +990,10 @@ export const updateWorkspace = async (
993990
richParameters:RichParameter[]=[],
994991
buildParameters:WorkspaceBuildParameter[]=[],
995992
)=>{
996-
awaitpage.goto(`/@admin/${workspaceName}`,{
993+
constuser=currentUser(page);
994+
awaitpage.goto(`/@${user.username}/${workspaceName}`,{
997995
waitUntil:"domcontentloaded",
998996
});
999-
awaitexpectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
1000997

1001998
awaitpage.getByTestId("workspace-update-button").click();
1002999
awaitpage.getByTestId("confirm-button").click();
@@ -1015,12 +1012,10 @@ export const updateWorkspaceParameters = async (
10151012
richParameters:RichParameter[]=[],
10161013
buildParameters:WorkspaceBuildParameter[]=[],
10171014
)=>{
1018-
awaitpage.goto(`/@admin/${workspaceName}/settings/parameters`,{
1015+
constuser=currentUser(page);
1016+
awaitpage.goto(`/@${user.username}/${workspaceName}/settings/parameters`,{
10191017
waitUntil:"domcontentloaded",
10201018
});
1021-
awaitexpectUrl(page).toHavePathName(
1022-
`/@admin/${workspaceName}/settings/parameters`,
1023-
);
10241019

10251020
awaitfillParameters(page,richParameters,buildParameters);
10261021
awaitpage.getByRole("button",{name:/submitandrestart/i}).click();
@@ -1044,11 +1039,14 @@ export async function openTerminalWindow(
10441039

10451040
// Specify that the shell should be `bash`, to prevent inheriting a shell that
10461041
// isn't POSIX compatible, such as Fish.
1042+
constuser=currentUser(page);
10471043
constcommandQuery=`?command=${encodeURIComponent("/usr/bin/env bash")}`;
10481044
awaitexpectUrl(terminal).toHavePathName(
1049-
`/@admin/${workspaceName}.${agentName}/terminal`,
1045+
`/@${user.username}/${workspaceName}.${agentName}/terminal`,
1046+
);
1047+
awaitterminal.goto(
1048+
`/@${user.username}/${workspaceName}.${agentName}/terminal${commandQuery}`,
10501049
);
1051-
awaitterminal.goto(`/@admin/${workspaceName}.dev/terminal${commandQuery}`);
10521050

10531051
returnterminal;
10541052
}
@@ -1100,7 +1098,7 @@ export async function createUser(
11001098
// Give them a role
11011099
awaitaddedRow.getByLabel("Edit user roles").click();
11021100
for(constroleofroles){
1103-
awaitpage.getByText(role,{exact:true}).click();
1101+
awaitpage.getByRole("group").getByText(role,{exact:true}).click();
11041102
}
11051103
awaitpage.mouse.click(10,10);// close the popover by clicking outside of it
11061104

‎site/e2e/tests/workspaces/autoCreateWorkspace.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ let template!: string;
1616

1717
test.beforeAll(async({ browser})=>{
1818
constpage=await(awaitbrowser.newContext()).newPage();
19-
awaitlogin(page);
19+
awaitlogin(page,users.templateAdmin);
2020

2121
constrichParameters:RichParameter[]=[
2222
{ ...emptyParameter,name:"repo",type:"string"},
@@ -29,7 +29,7 @@ test.beforeAll(async ({ browser }) => {
2929

3030
test.beforeEach(async({ page})=>{
3131
beforeCoderTest(page);
32-
awaitlogin(page,users.user);
32+
awaitlogin(page,users.member);
3333
});
3434

3535
test("create workspace in auto mode",async({ page})=>{
@@ -40,7 +40,7 @@ test("create workspace in auto mode", async ({ page }) => {
4040
waitUntil:"domcontentloaded",
4141
},
4242
);
43-
awaitexpect(page).toHaveTitle(`${users.user.username}/${name} - Coder`);
43+
awaitexpect(page).toHaveTitle(`${users.member.username}/${name} - Coder`);
4444
});
4545

4646
test("use an existing workspace that matches the `match` parameter instead of creating a new one",async({
@@ -54,7 +54,7 @@ test("use an existing workspace that matches the `match` parameter instead of cr
5454
},
5555
);
5656
awaitexpect(page).toHaveTitle(
57-
`${users.user.username}/${prevWorkspace} - Coder`,
57+
`${users.member.username}/${prevWorkspace} - Coder`,
5858
);
5959
});
6060

‎site/e2e/tests/workspaces/createWorkspace.spec.ts

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import{expect,test}from"@playwright/test";
2+
import{users}from"../../constants";
23
import{
34
StarterTemplates,
45
createTemplate,
@@ -26,27 +27,20 @@ test.describe.configure({ mode: "parallel" });
2627

2728
test.beforeEach(async({ page})=>{
2829
beforeCoderTest(page);
29-
awaitlogin(page);
3030
});
3131

3232
test("create workspace",async({ page})=>{
33+
awaitlogin(page,users.templateAdmin);
3334
consttemplate=awaitcreateTemplate(page,{
34-
apply:[
35-
{
36-
apply:{
37-
resources:[
38-
{
39-
name:"example",
40-
},
41-
],
42-
},
43-
},
44-
],
35+
apply:[{apply:{resources:[{name:"example"}]}}],
4536
});
37+
38+
awaitlogin(page,users.member);
4639
awaitcreateWorkspace(page,template);
4740
});
4841

4942
test("create workspace with default immutable parameters",async({ page})=>{
43+
awaitlogin(page,users.templateAdmin);
5044
constrichParameters:RichParameter[]=[
5145
secondParameter,
5246
fourthParameter,
@@ -56,6 +50,8 @@ test("create workspace with default immutable parameters", async ({ page }) => {
5650
page,
5751
echoResponsesWithParameters(richParameters),
5852
);
53+
54+
awaitlogin(page,users.member);
5955
constworkspaceName=awaitcreateWorkspace(page,template);
6056
awaitverifyParameters(page,workspaceName,richParameters,[
6157
{name:secondParameter.name,value:secondParameter.defaultValue},
@@ -65,11 +61,14 @@ test("create workspace with default immutable parameters", async ({ page }) => {
6561
});
6662

6763
test("create workspace with default mutable parameters",async({ page})=>{
64+
awaitlogin(page,users.templateAdmin);
6865
constrichParameters:RichParameter[]=[firstParameter,thirdParameter];
6966
consttemplate=awaitcreateTemplate(
7067
page,
7168
echoResponsesWithParameters(richParameters),
7269
);
70+
71+
awaitlogin(page,users.member);
7372
constworkspaceName=awaitcreateWorkspace(page,template);
7473
awaitverifyParameters(page,workspaceName,richParameters,[
7574
{name:firstParameter.name,value:firstParameter.defaultValue},
@@ -80,6 +79,7 @@ test("create workspace with default mutable parameters", async ({ page }) => {
8079
test("create workspace with default and required parameters",async({
8180
page,
8281
})=>{
82+
awaitlogin(page,users.templateAdmin);
8383
constrichParameters:RichParameter[]=[
8484
secondParameter,
8585
fourthParameter,
@@ -94,6 +94,8 @@ test("create workspace with default and required parameters", async ({
9494
page,
9595
echoResponsesWithParameters(richParameters),
9696
);
97+
98+
awaitlogin(page,users.member);
9799
constworkspaceName=awaitcreateWorkspace(page,template,{
98100
richParameters,
99101
buildParameters,
@@ -108,6 +110,7 @@ test("create workspace with default and required parameters", async ({
108110
});
109111

110112
test("create workspace and overwrite default parameters",async({ page})=>{
113+
awaitlogin(page,users.templateAdmin);
111114
// We use randParamName to prevent the new values from corrupting user_history
112115
// and thus affecting other tests.
113116
constrichParameters:RichParameter[]=[
@@ -124,6 +127,7 @@ test("create workspace and overwrite default parameters", async ({ page }) => {
124127
echoResponsesWithParameters(richParameters),
125128
);
126129

130+
awaitlogin(page,users.member);
127131
constworkspaceName=awaitcreateWorkspace(page,template,{
128132
richParameters,
129133
buildParameters,
@@ -132,6 +136,7 @@ test("create workspace and overwrite default parameters", async ({ page }) => {
132136
});
133137

134138
test("create workspace with disable_param search params",async({ page})=>{
139+
awaitlogin(page,users.templateAdmin);
135140
constrichParameters:RichParameter[]=[
136141
firstParameter,// mutable
137142
secondParameter,//immutable
@@ -142,6 +147,7 @@ test("create workspace with disable_param search params", async ({ page }) => {
142147
echoResponsesWithParameters(richParameters),
143148
);
144149

150+
awaitlogin(page,users.member);
145151
awaitpage.goto(
146152
`/templates/${templateName}/workspace?disable_params=first_parameter,second_parameter`,
147153
{
@@ -157,8 +163,11 @@ test("create workspace with disable_param search params", async ({ page }) => {
157163
// the tests are over.
158164
test.skip("create docker workspace",async({ context, page})=>{
159165
requireTerraformProvisioner();
166+
167+
awaitlogin(page,users.templateAdmin);
160168
consttemplate=awaitcreateTemplate(page,StarterTemplates.STARTER_DOCKER);
161169

170+
awaitlogin(page,users.member);
162171
constworkspaceName=awaitcreateWorkspace(page,template);
163172

164173
// The workspace agents must be ready before we try to interact with the workspace.
@@ -184,8 +193,6 @@ test.skip("create docker workspace", async ({ context, page }) => {
184193
);
185194
awaitterminal.waitForSelector(
186195
`//textarea[contains(@class,"xterm-helper-textarea")]`,
187-
{
188-
state:"visible",
189-
},
196+
{state:"visible"},
190197
);
191198
});

‎site/e2e/tests/workspaces/restartWorkspace.spec.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import{test}from"@playwright/test";
2+
import{users}from"../../constants";
23
import{
34
buildWorkspaceWithParameters,
45
createTemplate,
@@ -13,15 +14,17 @@ import type { RichParameter } from "../../provisionerGenerated";
1314

1415
test.beforeEach(async({ page})=>{
1516
beforeCoderTest(page);
16-
awaitlogin(page);
1717
});
1818

1919
test("restart workspace with ephemeral parameters",async({ page})=>{
20+
awaitlogin(page,users.templateAdmin);
2021
constrichParameters:RichParameter[]=[firstBuildOption,secondBuildOption];
2122
consttemplate=awaitcreateTemplate(
2223
page,
2324
echoResponsesWithParameters(richParameters),
2425
);
26+
27+
awaitlogin(page,users.member);
2528
constworkspaceName=awaitcreateWorkspace(page,template);
2629

2730
// Verify that build options are default (not selected).

‎site/e2e/tests/workspaces/startWorkspace.spec.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import{test}from"@playwright/test";
2+
import{users}from"../../constants";
23
import{
34
buildWorkspaceWithParameters,
45
createTemplate,
@@ -14,15 +15,17 @@ import type { RichParameter } from "../../provisionerGenerated";
1415

1516
test.beforeEach(async({ page})=>{
1617
beforeCoderTest(page);
17-
awaitlogin(page);
1818
});
1919

2020
test("start workspace with ephemeral parameters",async({ page})=>{
21+
awaitlogin(page,users.templateAdmin);
2122
constrichParameters:RichParameter[]=[firstBuildOption,secondBuildOption];
2223
consttemplate=awaitcreateTemplate(
2324
page,
2425
echoResponsesWithParameters(richParameters),
2526
);
27+
28+
awaitlogin(page,users.member);
2629
constworkspaceName=awaitcreateWorkspace(page,template);
2730

2831
// Verify that build options are default (not selected).

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp