Files
FocusGram-Android/test/services/app_lock_service_test.dart
2026-06-13 13:06:25 +05:45

77 lines
2.2 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:focusgram/services/app_lock_service.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
setUp(() {
SharedPreferences.setMockInitialValues({});
});
group('AppLockService — PIN verification', () {
test('verifyPin returns true for correct PIN', () async {
final service = AppLockService();
await service.init();
await service.setPin('1234', forAppWide: true);
final valid = await service.verifyPin('1234', forAppWide: true);
expect(valid, isTrue);
});
test('verifyPin returns false for wrong PIN', () async {
final service = AppLockService();
await service.init();
await service.setPin('1234', forAppWide: true);
final valid = await service.verifyPin('0000', forAppWide: true);
expect(valid, isFalse);
});
test('verifyPin with forAppWide:false checks messages PIN', () async {
final service = AppLockService();
await service.init();
await service.setPin('5678', forAppWide: false);
final valid = await service.verifyPin('5678', forAppWide: false);
expect(valid, isTrue);
});
test('onUnlocked resets lock state', () async {
final service = AppLockService();
await service.init();
await service.setPin('1234', forAppWide: true);
service.onBackgrounded();
expect(service.shouldLockOnResume, isTrue);
service.onUnlocked();
expect(service.shouldLockOnResume, isFalse);
expect(service.isShowingLock, isFalse);
});
});
group('AppLockService — PIN management', () {
test('hasPin returns true after PIN is set', () async {
final service = AppLockService();
await service.init();
expect(service.hasPin, isFalse);
await service.setPin('1234', forAppWide: true);
expect(service.hasPin, isTrue);
});
test('verifyPin returns false when no PIN is set', () async {
final service = AppLockService();
await service.init();
final valid = await service.verifyPin('1234', forAppWide: true);
expect(valid, isFalse);
});
});
}