Add Baron Safe app features through session block skeleton
ci / flutter-check (push) Successful in 4s
ci / flutter-check (push) Successful in 4s
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
import 'package:baron_safe_app/src/features/device/baron_safe_device_models.dart';
|
||||
import 'package:baron_safe_app/src/features/device/baron_safe_device_registration_client.dart';
|
||||
import 'package:baron_safe_app/src/features/device/baron_safe_device_registration_service.dart';
|
||||
import 'package:baron_safe_app/src/features/push/baron_safe_push_models.dart';
|
||||
import 'package:baron_safe_app/src/features/push/baron_safe_push_service.dart';
|
||||
import 'package:baron_safe_app/src/features/secure_storage/baron_safe_secure_storage.dart';
|
||||
import 'package:baron_safe_app/src/features/secure_storage/baron_safe_secure_storage_service.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
group('BaronSafeDeviceRegistrationService', () {
|
||||
test('creates, stores, and registers a new device id', () async {
|
||||
final secureStorage = DefaultBaronSafeSecureStorageService(
|
||||
MemoryBaronSafeKeyValueStore(),
|
||||
);
|
||||
final client = _RecordingDeviceRegistrationClient();
|
||||
final service = BaronSafeDeviceRegistrationService(
|
||||
secureStorage: secureStorage,
|
||||
registrationClient: client,
|
||||
pushTokenProvider: const _FixedPushTokenProvider(
|
||||
BaronSafePushToken(
|
||||
token: 'push-token-1',
|
||||
platform: BaronSafePushPlatform.android,
|
||||
deviceId: 'ignored-device-id',
|
||||
appVersion: '0.1.0',
|
||||
),
|
||||
),
|
||||
deviceIdGenerator: () => 'device-1',
|
||||
);
|
||||
|
||||
final result = await service.registerCurrentDevice();
|
||||
|
||||
expect(result.registered, isTrue);
|
||||
expect(result.deviceId, 'device-1');
|
||||
expect(await secureStorage.readDeviceId(), 'device-1');
|
||||
expect(client.lastRequest?.pushToken, 'push-token-1');
|
||||
expect(client.lastRequest?.platform, BaronSafePushPlatform.android);
|
||||
});
|
||||
|
||||
test('reuses an existing device id', () async {
|
||||
final secureStorage = DefaultBaronSafeSecureStorageService(
|
||||
MemoryBaronSafeKeyValueStore(),
|
||||
);
|
||||
await secureStorage.saveDeviceId('existing-device');
|
||||
final client = _RecordingDeviceRegistrationClient();
|
||||
final service = BaronSafeDeviceRegistrationService(
|
||||
secureStorage: secureStorage,
|
||||
registrationClient: client,
|
||||
pushTokenProvider: const _FixedPushTokenProvider(null),
|
||||
deviceIdGenerator: () => 'new-device',
|
||||
);
|
||||
|
||||
final result = await service.registerCurrentDevice();
|
||||
|
||||
expect(result.deviceId, 'existing-device');
|
||||
expect(client.lastRequest?.deviceId, 'existing-device');
|
||||
expect(client.lastRequest?.pushToken, isNull);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
class _RecordingDeviceRegistrationClient
|
||||
implements BaronSafeDeviceRegistrationClient {
|
||||
BaronSafeDeviceRegistrationRequest? lastRequest;
|
||||
|
||||
@override
|
||||
Future<BaronSafeDeviceRegistrationResult> registerDevice(
|
||||
BaronSafeDeviceRegistrationRequest request,
|
||||
) async {
|
||||
lastRequest = request;
|
||||
return BaronSafeDeviceRegistrationResult(
|
||||
deviceId: request.deviceId,
|
||||
registered: true,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _FixedPushTokenProvider implements BaronSafePushTokenProvider {
|
||||
const _FixedPushTokenProvider(this._token);
|
||||
|
||||
final BaronSafePushToken? _token;
|
||||
|
||||
@override
|
||||
Future<BaronSafePushToken?> readCurrentToken() async {
|
||||
return _token;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user