57 lines
1.9 KiB
Dart
57 lines
1.9 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:jinzhi_flutter_app/common/storage/secure_identity_storage.dart';
|
|
import 'package:jinzhi_flutter_app/common/storage/storage_keys.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
void main() {
|
|
setUp(() => SharedPreferences.setMockInitialValues({}));
|
|
|
|
test(
|
|
'migrates a legacy SharedPreferences token into secure storage',
|
|
() async {
|
|
SharedPreferences.setMockInitialValues({
|
|
storageLegacyAccessToken: ' legacy ',
|
|
});
|
|
final preferences = await SharedPreferences.getInstance();
|
|
final secure = _MemorySecureStorage();
|
|
final storage = SecureIdentityStorage(preferences, secureStorage: secure);
|
|
|
|
expect(await storage.restoreAccessToken(), 'legacy');
|
|
expect(await secure.read('access_token'), 'legacy');
|
|
expect(preferences.containsKey(storageLegacyAccessToken), isFalse);
|
|
expect(preferences.getBool(storageAuthSessionActive), isTrue);
|
|
},
|
|
);
|
|
|
|
test(
|
|
'migrates the previous secure jwt key when no current token exists',
|
|
() async {
|
|
final preferences = await SharedPreferences.getInstance();
|
|
final secure = _MemorySecureStorage({'jwt_token': 'secure-legacy'});
|
|
final storage = SecureIdentityStorage(preferences, secureStorage: secure);
|
|
|
|
expect(await storage.restoreAccessToken(), 'secure-legacy');
|
|
expect(await secure.read('access_token'), 'secure-legacy');
|
|
expect(await secure.read('jwt_token'), isNull);
|
|
},
|
|
);
|
|
}
|
|
|
|
class _MemorySecureStorage implements SecureKeyValueStorage {
|
|
_MemorySecureStorage([Map<String, String>? initial])
|
|
: _values = {...?initial};
|
|
|
|
final Map<String, String> _values;
|
|
|
|
@override
|
|
Future<void> delete(String key) async => _values.remove(key);
|
|
|
|
@override
|
|
Future<String?> read(String key) async => _values[key];
|
|
|
|
@override
|
|
Future<void> write(String key, String value) async {
|
|
_values[key] = value;
|
|
}
|
|
}
|