1
- import { beforeEach , describe , expect , it } from "vitest" ;
1
+ import { beforeEach , describe , expect , it , vi } from "vitest" ;
2
2
3
3
import { SecretsManager } from "@/core/secretsManager" ;
4
4
@@ -13,7 +13,7 @@ describe("SecretsManager", () => {
13
13
secretsManager = new SecretsManager ( secretStorage ) ;
14
14
} ) ;
15
15
16
- describe ( "setSessionToken " , ( ) => {
16
+ describe ( "session token " , ( ) => {
17
17
it ( "should store and retrieve tokens" , async ( ) => {
18
18
await secretsManager . setSessionToken ( "test-token" ) ;
19
19
expect ( await secretsManager . getSessionToken ( ) ) . toBe ( "test-token" ) ;
@@ -31,14 +31,52 @@ describe("SecretsManager", () => {
31
31
await secretsManager . setSessionToken ( undefined ) ;
32
32
expect ( await secretsManager . getSessionToken ( ) ) . toBeUndefined ( ) ;
33
33
} ) ;
34
- } ) ;
35
34
36
- describe ( "getSessionToken" , ( ) => {
37
35
it ( "should return undefined for corrupted storage" , async ( ) => {
38
36
await secretStorage . store ( "sessionToken" , "valid-token" ) ;
39
37
secretStorage . corruptStorage ( ) ;
40
38
41
39
expect ( await secretsManager . getSessionToken ( ) ) . toBeUndefined ( ) ;
42
40
} ) ;
43
41
} ) ;
42
+
43
+ describe ( "login state" , ( ) => {
44
+ it ( "should trigger login events" , async ( ) => {
45
+ const events : Array < string | undefined > = [ ] ;
46
+ secretsManager . onDidChangeLoginState ( ( state ) => {
47
+ events . push ( state ) ;
48
+ return Promise . resolve ( ) ;
49
+ } ) ;
50
+
51
+ await secretsManager . triggerLoginStateChange ( "login" ) ;
52
+ expect ( events ) . toEqual ( [ "login" ] ) ;
53
+ } ) ;
54
+
55
+ it ( "should trigger logout events" , async ( ) => {
56
+ const events : Array < string | undefined > = [ ] ;
57
+ secretsManager . onDidChangeLoginState ( ( state ) => {
58
+ events . push ( state ) ;
59
+ return Promise . resolve ( ) ;
60
+ } ) ;
61
+
62
+ await secretsManager . triggerLoginStateChange ( "logout" ) ;
63
+ expect ( events ) . toEqual ( [ "logout" ] ) ;
64
+ } ) ;
65
+
66
+ it ( "should fire same event twice in a row" , async ( ) => {
67
+ vi . useFakeTimers ( ) ;
68
+ const events : Array < string | undefined > = [ ] ;
69
+ secretsManager . onDidChangeLoginState ( ( state ) => {
70
+ events . push ( state ) ;
71
+ return Promise . resolve ( ) ;
72
+ } ) ;
73
+
74
+ await secretsManager . triggerLoginStateChange ( "login" ) ;
75
+ vi . advanceTimersByTime ( 5 ) ;
76
+ await secretsManager . triggerLoginStateChange ( "login" ) ;
77
+
78
+ expect ( events ) . toEqual ( [ "login" , "login" ] ) ;
79
+ vi . useRealTimers ( ) ;
80
+ } ) ;
81
+ } ) ;
44
82
} ) ;
0 commit comments