@@ -6,7 +6,6 @@ import { activationStatusAtom } from "../../atoms/activation";
66import { authEnabledAtom } from "../../atoms/connection" ;
77import { SessionGatePage } from "./session-gate" ;
88
9- const originalFetch = globalThis . fetch ;
109const originalLocation = window . location ;
1110
1211describe ( "SessionGatePage" , ( ) => {
@@ -22,14 +21,13 @@ describe("SessionGatePage", () => {
2221 } ) ;
2322
2423 afterEach ( ( ) => {
25- globalThis . fetch = originalFetch ;
2624 Object . defineProperty ( window , "location" , {
2725 configurable : true ,
2826 value : originalLocation ,
2927 } ) ;
3028 } ) ;
3129
32- it ( "shows a password form when auth is enabled" , ( ) => {
30+ it ( "shows the session gate action even when auth is enabled" , ( ) => {
3331 const store = createStore ( ) ;
3432 store . set ( authEnabledAtom , true ) ;
3533 store . set ( activationStatusAtom , "gated" ) ;
@@ -42,76 +40,42 @@ describe("SessionGatePage", () => {
4240 </ Provider >
4341 ) ;
4442
45- expect ( screen . getByLabelText ( "密码" ) ) . toBeInTheDocument ( ) ;
43+ expect ( screen . queryByLabelText ( "密码" ) ) . not . toBeInTheDocument ( ) ;
44+ expect ( screen . getByRole ( "button" , { name : "重新进入" } ) ) . toBeInTheDocument ( ) ;
4645 } ) ;
4746
48- it ( "claims re-entry after successful login when auth is enabled" , async ( ) => {
49- const requestReentry = vi . fn ( ) . mockResolvedValue ( true ) ;
50- globalThis . fetch = vi . fn ( ) . mockResolvedValueOnce ( {
51- ok : true ,
52- json : async ( ) => ( { ok : true } ) ,
53- } ) as unknown as typeof fetch ;
54-
55- const store = createStore ( ) ;
56- store . set ( authEnabledAtom , true ) ;
57- store . set ( activationStatusAtom , "gated" ) ;
58-
59- render (
60- < Provider store = { store } >
61- < MemoryRouter initialEntries = { [ "/session-gate" ] } >
62- < SessionGatePage requestReentry = { requestReentry } />
63- </ MemoryRouter >
64- </ Provider >
65- ) ;
66-
67- const input = await screen . findByLabelText ( "密码" ) ;
68- fireEvent . change ( input , { target : { value : "sekrit" } } ) ;
69- fireEvent . click ( screen . getByRole ( "button" , { name : "确认" } ) ) ;
70-
71- await waitFor ( ( ) => {
72- expect ( requestReentry ) . toHaveBeenCalledTimes ( 1 ) ;
73- } ) ;
74- } ) ;
75-
76- it ( "shows an explicit re-enter action when auth is disabled" , async ( ) => {
77- const requestReentry = vi . fn ( ) . mockResolvedValue ( true ) ;
47+ it ( "shows an explicit re-enter action when auth is disabled" , ( ) => {
7848 const store = createStore ( ) ;
7949 store . set ( authEnabledAtom , false ) ;
8050 store . set ( activationStatusAtom , "gated" ) ;
8151
8252 render (
8353 < Provider store = { store } >
8454 < MemoryRouter >
85- < SessionGatePage requestReentry = { requestReentry } />
55+ < SessionGatePage />
8656 </ MemoryRouter >
8757 </ Provider >
8858 ) ;
8959
90- fireEvent . click ( screen . getByRole ( "button" , { name : "重新进入" } ) ) ;
91-
92- await waitFor ( ( ) => {
93- expect ( requestReentry ) . toHaveBeenCalledTimes ( 1 ) ;
94- } ) ;
60+ expect ( screen . getByRole ( "button" , { name : "重新进入" } ) ) . toBeInTheDocument ( ) ;
9561 } ) ;
9662
97- it ( "reloads the app after successful re-entry when auth is disabled" , async ( ) => {
98- const requestReentry = vi . fn ( ) . mockResolvedValue ( true ) ;
63+ it ( "returns to the app bootstrap entry when re-enter is clicked" , async ( ) => {
9964 const store = createStore ( ) ;
10065 store . set ( authEnabledAtom , false ) ;
10166 store . set ( activationStatusAtom , "gated" ) ;
10267
10368 render (
10469 < Provider store = { store } >
10570 < MemoryRouter initialEntries = { [ "/session-gate" ] } >
106- < SessionGatePage requestReentry = { requestReentry } />
71+ < SessionGatePage />
10772 </ MemoryRouter >
10873 </ Provider >
10974 ) ;
11075
11176 fireEvent . click ( screen . getByRole ( "button" , { name : "重新进入" } ) ) ;
11277
11378 await waitFor ( ( ) => {
114- expect ( requestReentry ) . toHaveBeenCalledTimes ( 1 ) ;
11579 expect ( window . location . replace ) . toHaveBeenCalledWith ( "/" ) ;
11680 } ) ;
11781 } ) ;
0 commit comments