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

Commit4ee3bad

Browse files
committed
changes from base
1 parent475c365 commit4ee3bad

10 files changed

+392
-522
lines changed

‎site/src/pages/CreateWorkspacePage/CreateWorkspacePage.test.tsx

Lines changed: 63 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@ import {
66
MockUser,
77
MockWorkspace,
88
MockWorkspaceQuota,
9+
MockWorkspaceRequest,
910
MockWorkspaceRichParametersRequest,
1011
MockTemplateVersionParameter1,
1112
MockTemplateVersionParameter2,
1213
MockTemplateVersionParameter3,
1314
MockTemplateVersionExternalAuthGithub,
1415
MockOrganization,
16+
MockTemplateVersionExternalAuthGithubAuthenticated,
1517
}from"testHelpers/entities";
1618
import{
1719
renderWithAuth,
1820
waitForLoaderToBeRemoved,
1921
}from"testHelpers/renderHelpers";
2022
importCreateWorkspacePagefrom"./CreateWorkspacePage";
2123
import{Language}from"./CreateWorkspacePageView";
22-
import{server}from"testHelpers/server";
23-
import{rest}from"msw";
2424

2525
constnameLabelText="Workspace Name";
2626
constcreateWorkspaceText="Create Workspace";
@@ -185,6 +185,67 @@ describe("CreateWorkspacePage", () => {
185185
expect(validationError).toBeInTheDocument();
186186
});
187187

188+
it("external auth authenticates and succeeds",async()=>{
189+
jest
190+
.spyOn(API,"getWorkspaceQuota")
191+
.mockResolvedValueOnce(MockWorkspaceQuota);
192+
jest
193+
.spyOn(API,"getUsers")
194+
.mockResolvedValueOnce({users:[MockUser],count:1});
195+
jest.spyOn(API,"createWorkspace").mockResolvedValueOnce(MockWorkspace);
196+
jest
197+
.spyOn(API,"getTemplateVersionExternalAuth")
198+
.mockResolvedValue([MockTemplateVersionExternalAuthGithub]);
199+
200+
renderCreateWorkspacePage();
201+
awaitwaitForLoaderToBeRemoved();
202+
203+
constnameField=awaitscreen.findByLabelText(nameLabelText);
204+
// have to use fireEvent b/c userEvent isn't cleaning up properly between tests
205+
fireEvent.change(nameField,{
206+
target:{value:"test"},
207+
});
208+
209+
constgithubButton=awaitscreen.findByText("Login with GitHub");
210+
awaituserEvent.click(githubButton);
211+
212+
jest
213+
.spyOn(API,"getTemplateVersionExternalAuth")
214+
.mockResolvedValue([MockTemplateVersionExternalAuthGithubAuthenticated]);
215+
216+
awaitscreen.findByText(
217+
"Authenticated with GitHub",
218+
{},
219+
{interval:500,timeout:5000},
220+
);
221+
222+
constsubmitButton=screen.getByText(createWorkspaceText);
223+
awaituserEvent.click(submitButton);
224+
225+
awaitwaitFor(()=>
226+
expect(API.createWorkspace).toBeCalledWith(
227+
MockUser.organization_ids[0],
228+
MockUser.id,
229+
expect.objectContaining({
230+
...MockWorkspaceRequest,
231+
}),
232+
),
233+
);
234+
});
235+
236+
it("external auth errors if unauthenticated",async()=>{
237+
jest
238+
.spyOn(API,"getTemplateVersionExternalAuth")
239+
.mockResolvedValueOnce([MockTemplateVersionExternalAuthGithub]);
240+
241+
renderCreateWorkspacePage();
242+
awaitwaitForLoaderToBeRemoved();
243+
244+
awaitscreen.findByText(
245+
"To create a workspace using the selected template, please ensure you are authenticated with all the external providers listed below.",
246+
);
247+
});
248+
188249
it("auto create a workspace if uses mode=auto",async()=>{
189250
constparam="first_parameter";
190251
constparamValue="It works!";
@@ -259,46 +320,4 @@ describe("CreateWorkspacePage", () => {
259320
expect(warningMessage).toHaveTextContent(Language.duplicationWarning);
260321
expect(nameInput).toHaveValue(`${MockWorkspace.name}-copy`);
261322
});
262-
263-
it("displays the form after connecting to all the external services",async()=>{
264-
jest.spyOn(window,"open").mockImplementation(()=>null);
265-
constuser=userEvent.setup();
266-
constnotAuthenticatedExternalAuth={
267-
...MockTemplateVersionExternalAuthGithub,
268-
authenticated:false,
269-
};
270-
server.use(
271-
rest.get(
272-
"/api/v2/templateversions/:versionId/external-auth",
273-
(req,res,ctx)=>{
274-
returnres(ctx.json([notAuthenticatedExternalAuth]));
275-
},
276-
),
277-
);
278-
renderCreateWorkspacePage();
279-
280-
awaitscreen.findByText("External authentication");
281-
expect(screen.queryByRole("form")).not.toBeInTheDocument();
282-
283-
constconnectButton=screen.getByRole("button",{
284-
name:/connect/i,
285-
});
286-
server.use(
287-
rest.get(
288-
"/api/v2/templateversions/:versionId/external-auth",
289-
(req,res,ctx)=>{
290-
constauthenticatedExternalAuth={
291-
...MockTemplateVersionExternalAuthGithub,
292-
authenticated:true,
293-
};
294-
returnres(ctx.json([authenticatedExternalAuth]));
295-
},
296-
),
297-
);
298-
awaituser.click(connectButton);
299-
// TODO: Consider improving the timeout by simulating react-query polling.
300-
// Current implementation could not achieve this, further research is
301-
// needed.
302-
awaitscreen.findByRole("form",undefined,{timeout:10_000});
303-
});
304323
});

‎site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ export const Parameters: Story = {
108108
},
109109
};
110110

111-
exportconstRequiresExternalAuth:Story={
111+
exportconstExternalAuth:Story={
112112
args:{
113113
externalAuth:[
114114
{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp