// Copyright (C) 2023 WYATT GROUP
// Please see the AUTHORS file for details.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:wyatt_authentication_bloc/wyatt_authentication_bloc.dart';
class MockAccount extends Mock implements Account {}
void main() {
group('AuthenticationState', () {
group('unauthenticated', () {
test('has correct status', () {
const AuthenticationState state =
AuthenticationState.unauthenticated();
expect(state.status, AuthenticationStatus.unauthenticated);
expect(state.session, null);
});
});
group('authenticated', () {
test('has correct status', () {
final MockAccount account = MockAccount();
final AuthenticationState state =
AuthenticationState.authenticated(
AuthenticationSession.fromEvent(
SignedInEvent(account: account),
),
);
expect(state.status, AuthenticationStatus.authenticated);
expect(state.session?.account, account);
});
});
group('authenticated with extra data', () {
test('has correct status', () {
final MockAccount account = MockAccount();
const String extra = 'AwesomeExtraData';
final AuthenticationState state =
AuthenticationState.authenticated(
AuthenticationSession.fromEvent(
SignedInEvent(account: account),
data: extra,
),
);
expect(state.status, AuthenticationStatus.authenticated);
expect(state.session?.account, account);
expect(state.session?.data, extra);
});
});
});
}