Skip to content

Commit e4a4267

Browse files
fixup! TF-3348 Move accessToken from persistent storage to session storage for web
1 parent 34aedd8 commit e4a4267

File tree

3 files changed

+66
-6
lines changed

3 files changed

+66
-6
lines changed

lib/features/login/data/extensions/token_oidc_extension.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,8 @@ extension TokenOidcExtension on TokenOIDC {
55
TokenOidcCache toTokenOidcCache() {
66
return TokenOidcCache(token, tokenId.uuid, refreshToken, expiredTime: expiredTime);
77
}
8+
9+
TokenOidcCache toTokenOidcCacheWithoutToken() {
10+
return TokenOidcCache('', tokenId.uuid, refreshToken, expiredTime: expiredTime);
11+
}
812
}

lib/features/login/data/local/web_token_oidc_cache_manager.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:core/utils/app_logger.dart';
22
import 'package:model/oidc/token_oidc.dart';
33
import 'package:tmail_ui_user/features/caching/clients/token_oidc_cache_client.dart';
44
import 'package:tmail_ui_user/features/login/data/extensions/token_oidc_cache_extension.dart';
5+
import 'package:tmail_ui_user/features/login/data/extensions/token_oidc_extension.dart';
56
import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart';
67
import 'package:tmail_ui_user/features/login/data/model/token_oidc_cache.dart';
78
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
@@ -43,12 +44,7 @@ class WebTokenOidcCacheManager extends TokenOidcCacheManager {
4344
log('TokenOidcCacheManager::persistOneTokenOidc(): key: ${tokenOIDC.tokenId.uuid}');
4445
log('TokenOidcCacheManager::persistOneTokenOidc(): key\'s hash: ${tokenOIDC.tokenIdHash}');
4546
log('TokenOidcCacheManager::persistOneTokenOidc(): token: ${tokenOIDC.token}');
46-
final tokenHiveCache = TokenOidcCache(
47-
'',
48-
tokenOIDC.tokenId.uuid,
49-
tokenOIDC.refreshToken,
50-
expiredTime: tokenOIDC.expiredTime,
51-
);
47+
final tokenHiveCache = tokenOIDC.toTokenOidcCacheWithoutToken();
5248
await _tokenOidcCacheClient.insertItem(tokenOIDC.tokenIdHash, tokenHiveCache);
5349
window.sessionStorage[_sessionStorageTokenKey] = tokenOIDC.token;
5450
log('TokenOidcCacheManager::persistOneTokenOidc(): done');
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import 'package:core/utils/file_utils.dart';
2+
import 'package:core/utils/platform_info.dart';
3+
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
4+
import 'package:flutter_test/flutter_test.dart';
5+
import 'package:get/instance_manager.dart';
6+
import 'package:mockito/annotations.dart';
7+
import 'package:shared_preferences/shared_preferences.dart';
8+
import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart';
9+
import 'package:tmail_ui_user/features/login/data/local/web_token_oidc_cache_manager.dart';
10+
import 'package:tmail_ui_user/main/bindings/local/local_bindings.dart';
11+
12+
import 'local_bindings_test.mocks.dart';
13+
14+
@GenerateNiceMocks([
15+
MockSpec<FlutterSecureStorage>(),
16+
MockSpec<SharedPreferences>(),
17+
MockSpec<FileUtils>(),
18+
])
19+
void main() {
20+
late LocalBindings localBindings;
21+
22+
setUp(() {
23+
localBindings = LocalBindings();
24+
Get.put<FlutterSecureStorage>(MockFlutterSecureStorage());
25+
Get.put<SharedPreferences>(MockSharedPreferences());
26+
Get.put<FileUtils>(MockFileUtils());
27+
});
28+
29+
group('local bindings test:', () {
30+
test(
31+
'should inject WebTokenOidcCacheManager '
32+
'when platform is web',
33+
() {
34+
// arrange
35+
PlatformInfo.isTestingForWeb = true;
36+
localBindings.dependencies();
37+
38+
// act
39+
final cacheManager = Get.find<TokenOidcCacheManager>();
40+
41+
// assert
42+
expect(cacheManager, isInstanceOf<WebTokenOidcCacheManager>());
43+
PlatformInfo.isTestingForWeb = false;
44+
});
45+
46+
test(
47+
'should inject TokenOidcCacheManager '
48+
'when platform is not web (default)',
49+
() {
50+
// arrange
51+
localBindings.dependencies();
52+
53+
// act
54+
final cacheManager = Get.find<TokenOidcCacheManager>();
55+
56+
// assert
57+
expect(cacheManager, isInstanceOf<TokenOidcCacheManager>());
58+
});
59+
});
60+
}

0 commit comments

Comments
 (0)