1- import { beforeEach , describe , expect , it } from "vitest" ;
1+ import { beforeEach , describe , expect , it , vi } from "vitest" ;
22
33import { SecretsManager } from "@/core/secretsManager" ;
44
@@ -13,7 +13,7 @@ describe("SecretsManager", () => {
1313 secretsManager = new SecretsManager ( secretStorage ) ;
1414 } ) ;
1515
16- describe ( "setSessionToken " , ( ) => {
16+ describe ( "session token " , ( ) => {
1717 it ( "should store and retrieve tokens" , async ( ) => {
1818 await secretsManager . setSessionToken ( "test-token" ) ;
1919 expect ( await secretsManager . getSessionToken ( ) ) . toBe ( "test-token" ) ;
@@ -31,14 +31,52 @@ describe("SecretsManager", () => {
3131 await secretsManager . setSessionToken ( undefined ) ;
3232 expect ( await secretsManager . getSessionToken ( ) ) . toBeUndefined ( ) ;
3333 } ) ;
34- } ) ;
3534
36- describe ( "getSessionToken" , ( ) => {
3735 it ( "should return undefined for corrupted storage" , async ( ) => {
3836 await secretStorage . store ( "sessionToken" , "valid-token" ) ;
3937 secretStorage . corruptStorage ( ) ;
4038
4139 expect ( await secretsManager . getSessionToken ( ) ) . toBeUndefined ( ) ;
4240 } ) ;
4341 } ) ;
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+ } ) ;
4482} ) ;
0 commit comments