@@ -16,14 +16,8 @@ describe('useFetchSignin', () => {
16
16
localStorage . clear ( ) ;
17
17
} ) ;
18
18
19
- it ( 'initial loading and error states' , ( ) => {
20
- const { result } = renderHook ( ( ) => useFetchSignin ( ) ) ;
21
- expect ( result . current . loading ) . toBe ( false ) ;
22
- expect ( result . current . error ) . toBeNull ( ) ;
23
- } ) ;
24
-
25
19
it ( 'sets loading true immediately after signin called' , async ( ) => {
26
- mockFetchSignin . mockResolvedValue ( { token : 'token123' , id : 1 } ) ;
20
+ mockFetchSignin . mockResolvedValue ( { token : 'token123' , id : 1 , role : 'lsk_admin' } ) ;
27
21
const { result } = renderHook ( ( ) => useFetchSignin ( ) ) ;
28
22
29
23
expect ( result . current . loading ) . toBe ( false ) ;
@@ -38,7 +32,7 @@ describe('useFetchSignin', () => {
38
32
} ) ;
39
33
40
34
it ( 'fetchSignin success sets token, userId and clears error/loading' , async ( ) => {
41
- const mockData = { token : 'token123' , id : 5 } ;
35
+ const mockData = { token : 'token123' , id : 5 , role : 'lsk_admin' } ;
42
36
mockFetchSignin . mockResolvedValue ( mockData ) ;
43
37
44
38
const { result } = renderHook ( ( ) => useFetchSignin ( ) ) ;
@@ -76,4 +70,18 @@ describe('useFetchSignin', () => {
76
70
expect ( mockSetAuthToken ) . not . toHaveBeenCalled ( ) ;
77
71
expect ( localStorage . getItem ( 'userId' ) ) . toBeNull ( ) ;
78
72
} ) ;
73
+
74
+ it ( 'throws error if user is not an lsk_admin' , async ( ) => {
75
+ const nonAdminData = { token : 'token123' , id : 7 , role : 'user' } ;
76
+ mockFetchSignin . mockResolvedValue ( nonAdminData ) ;
77
+
78
+ const { result } = renderHook ( ( ) => useFetchSignin ( ) ) ;
79
+
80
+ await expect ( result . current . signin ( 'user@example.com' , 'password' ) ) . rejects . toThrow (
81
+ 'Unauthorized: user is not an lsk_admin'
82
+ ) ;
83
+
84
+ expect ( mockSetAuthToken ) . not . toHaveBeenCalled ( ) ;
85
+ expect ( localStorage . getItem ( 'userId' ) ) . toBeNull ( ) ;
86
+ } ) ;
79
87
} ) ;
0 commit comments