import 'package:flutter_test/flutter_test.dart'; import 'package:marianum_mobile/push/direct_push_registration.dart'; import 'package:marianum_mobile/push/push_secure_storage.dart'; class _MemoryStorage implements FlutterSecureStorageLike { final Map values = {}; @override Future read({required String key}) async => values[key]; @override Future write({required String key, required String? value}) async { if (value == null) { values.remove(key); } else { values[key] = value; } } @override Future delete({required String key}) async => values.remove(key); } void main() { test('device identifier is generated once and then reused', () async { final storage = _MemoryStorage(); final registration = DirectPushRegistration(storage: storage); final first = await registration.deviceIdentifier(); expect(first, matches(RegExp(r'^[0-9a-f]{32}$'))); expect(await registration.deviceIdentifier(), first); expect( await DirectPushRegistration(storage: storage).deviceIdentifier(), first, ); }); test('separate installs get different identifiers', () async { final a = await DirectPushRegistration( storage: _MemoryStorage(), ).deviceIdentifier(); final b = await DirectPushRegistration( storage: _MemoryStorage(), ).deviceIdentifier(); expect(a, isNot(b)); }); }