Skip to content

Commit daed325

Browse files
committed
Update tests
1 parent 80c3e9e commit daed325

File tree

2 files changed

+102
-0
lines changed

2 files changed

+102
-0
lines changed

packages/supabase_flutter/test/storage_test.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,16 @@ void main() {
180180
expect(await emptyStorage.hasAccessToken(), false);
181181
expect(await emptyStorage.accessToken(), null);
182182
});
183+
184+
test('initialize does nothing and returns normally', () async {
185+
const emptyStorage = EmptyLocalStorage();
186+
expect(() => emptyStorage.initialize(), returnsNormally);
187+
await emptyStorage.initialize();
188+
189+
// Should still work normally after initialization
190+
expect(await emptyStorage.hasAccessToken(), false);
191+
expect(await emptyStorage.accessToken(), null);
192+
});
183193
});
184194

185195
// Test edge cases for SharedPreferencesLocalStorage
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
@TestOn('browser')
2+
3+
import 'package:flutter_test/flutter_test.dart';
4+
import 'package:supabase_flutter/supabase_flutter.dart';
5+
6+
void main() {
7+
TestWidgetsFlutterBinding.ensureInitialized();
8+
9+
group('SharedPreferencesLocalStorage Web Implementation', () {
10+
test('uses web localStorage on web platform', () async {
11+
final localStorage = SharedPreferencesLocalStorage(
12+
persistSessionKey: 'web_test_key',
13+
);
14+
15+
// On web, initialize should not call SharedPreferences.getInstance()
16+
await localStorage.initialize();
17+
18+
// Test web-specific implementations
19+
const testSession =
20+
'{"access_token": "test_token", "user": {"id": "123"}}';
21+
22+
// Initially should have no access token
23+
expect(await localStorage.hasAccessToken(), false);
24+
expect(await localStorage.accessToken(), null);
25+
26+
// This should use web.persistSession (line 111)
27+
await localStorage.persistSession(testSession);
28+
29+
// This should use web.hasAccessToken (line 86)
30+
expect(await localStorage.hasAccessToken(), true);
31+
32+
// This should use web.accessToken (line 94)
33+
expect(await localStorage.accessToken(), testSession);
34+
35+
// This should use web.removePersistedSession (line 102)
36+
await localStorage.removePersistedSession();
37+
expect(await localStorage.hasAccessToken(), false);
38+
expect(await localStorage.accessToken(), null);
39+
});
40+
41+
test('web localStorage handles multiple keys correctly', () async {
42+
final localStorage1 = SharedPreferencesLocalStorage(
43+
persistSessionKey: 'web_test_key_1',
44+
);
45+
final localStorage2 = SharedPreferencesLocalStorage(
46+
persistSessionKey: 'web_test_key_2',
47+
);
48+
49+
await localStorage1.initialize();
50+
await localStorage2.initialize();
51+
52+
const testSession1 = '{"access_token": "token1"}';
53+
const testSession2 = '{"access_token": "token2"}';
54+
55+
// Store different sessions in different keys
56+
await localStorage1.persistSession(testSession1);
57+
await localStorage2.persistSession(testSession2);
58+
59+
// Each should have its own session
60+
expect(await localStorage1.accessToken(), testSession1);
61+
expect(await localStorage2.accessToken(), testSession2);
62+
63+
// Remove one, other should remain
64+
await localStorage1.removePersistedSession();
65+
expect(await localStorage1.hasAccessToken(), false);
66+
expect(await localStorage2.hasAccessToken(), true);
67+
expect(await localStorage2.accessToken(), testSession2);
68+
69+
// Clean up
70+
await localStorage2.removePersistedSession();
71+
});
72+
73+
test('web localStorage handles special characters in session data',
74+
() async {
75+
final localStorage = SharedPreferencesLocalStorage(
76+
persistSessionKey: 'web_special_chars_key',
77+
);
78+
79+
await localStorage.initialize();
80+
81+
const specialSession =
82+
'{"access_token": "test-token-with-special-chars-!@#\$%^&*()"}';
83+
84+
await localStorage.persistSession(specialSession);
85+
expect(await localStorage.hasAccessToken(), true);
86+
expect(await localStorage.accessToken(), specialSession);
87+
88+
await localStorage.removePersistedSession();
89+
expect(await localStorage.hasAccessToken(), false);
90+
});
91+
});
92+
}

0 commit comments

Comments
 (0)