57 lines
2.4 KiB
Dart
57 lines
2.4 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:ikar/core/protocol/packet.dart';
|
|
|
|
void main() {
|
|
group('обрыв связи не должен стоить пользователю нового кода', () {
|
|
test('клиентская ошибка "сессия не онлайн" — токен переиспользуем', () {
|
|
final error = StateError(
|
|
'AccountModule: сессия не онлайн (текущее состояние: connecting)',
|
|
);
|
|
|
|
expect(isSessionStateError(error), isTrue);
|
|
expect(isAuthSessionLostError(error), isFalse);
|
|
});
|
|
|
|
test('таймаут запроса — токен переиспользуем', () {
|
|
const error = PacketError('AUTH таймаут');
|
|
|
|
expect(isAuthSessionLostError(error), isFalse);
|
|
expect(isSessionStateError(error), isFalse);
|
|
});
|
|
});
|
|
|
|
group('мёртвая авторизационная сессия требует нового кода', () {
|
|
test('FAIL_LOGIN_TOKEN приходит как SessionExpiredException', () {
|
|
const error = SessionExpiredException(
|
|
'Ваш токен был отклонён сервером, хм... Попробуйте войти ещё раз.',
|
|
);
|
|
|
|
expect(isAuthSessionLostError(error), isTrue);
|
|
});
|
|
|
|
test('сервер сообщает, что авторизационная сессия потеряна', () {
|
|
const lost = PacketError('Авторизационная сессия не найдена');
|
|
const missing = PacketError('Сессия не найдена');
|
|
|
|
expect(isAuthSessionLostError(lost), isTrue);
|
|
expect(isAuthSessionLostError(missing), isTrue);
|
|
});
|
|
});
|
|
|
|
group('ошибка самого кода не трогает токен', () {
|
|
test('неверный код — ни восстановление, ни перезапрос', () {
|
|
const error = PacketError('Неверный код');
|
|
|
|
expect(isAuthSessionLostError(error), isFalse);
|
|
expect(isSessionStateError(error), isFalse);
|
|
});
|
|
|
|
test('исчерпаны попытки — ни восстановление, ни перезапрос', () {
|
|
const error = PacketError('Слишком много попыток, попробуйте позже');
|
|
|
|
expect(isAuthSessionLostError(error), isFalse);
|
|
expect(isSessionStateError(error), isFalse);
|
|
});
|
|
});
|
|
}
|