Files
IKAR/test/auth_session_error_test.dart
T

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);
});
});
}