Build Android (FCM) / build-android-fcm (push) Canceled after 0s
Build Android / build-android (push) Canceled after 0s
Build iOS / build-ios (push) Canceled after 0s
Build Linux / build-linux (push) Canceled after 0s
Build macOS / build-macos (push) Canceled after 0s
Build Windows / build-windows (push) Canceled after 0s
Release (main) / android (oneme) (push) Canceled after 0s
Release (main) / android (qlyra) (push) Canceled after 0s
Release (main) / windows (push) Canceled after 0s
Release (main) / linux (push) Canceled after 0s
Release (main) / macos (push) Canceled after 0s
Release (main) / ios (push) Canceled after 0s
Release (main) / release (push) Canceled after 0s
39 lines
1.2 KiB
Dart
39 lines
1.2 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:qlyra/core/utils/ip_lookup_service.dart';
|
|
import 'package:qlyra/frontend/screens/profile/devices_screen.dart';
|
|
|
|
void main() {
|
|
test('devices screen can be constructed with the protected lookup flow', () {
|
|
expect(const DevicesScreen(), isA<DevicesScreen>());
|
|
});
|
|
|
|
test('normalizes an ipwho.is response', () {
|
|
final details = IpLookupDetails.fromIpWhoIs({
|
|
'success': true,
|
|
'city': 'Moscow',
|
|
'country': 'Russia',
|
|
'connection': {'asn': 64500, 'org': 'Example Org', 'isp': 'Example ISP'},
|
|
'security': {'mobile': true, 'proxy': false},
|
|
'timezone': {'id': 'Europe/Moscow'},
|
|
});
|
|
|
|
expect(details.city, 'Moscow');
|
|
expect(details.country, 'Russia');
|
|
expect(details.isp, 'Example ISP');
|
|
expect(details.network, 'AS64500 Example Org');
|
|
expect(details.mobile, isTrue);
|
|
expect(details.proxy, isFalse);
|
|
expect(details.timezone, 'Europe/Moscow');
|
|
});
|
|
|
|
test('rejects a failed provider response', () {
|
|
expect(
|
|
() => IpLookupDetails.fromIpWhoIs({
|
|
'success': false,
|
|
'message': 'Invalid IP',
|
|
}),
|
|
throwsFormatException,
|
|
);
|
|
});
|
|
}
|