forked from eatvio/eatvio_app
feat(test): oauth, prefs, credentials
This commit is contained in:
@@ -71,9 +71,9 @@ void main() {
|
||||
test('signInViaSocialMedia - успешный вход через соцсеть', () async {
|
||||
final oauthRequest = OAuthLoginRequest(
|
||||
provider: oauthSignInFixture['provider'] as String,
|
||||
accessToken: oauthSignInFixture['accessToken'] as String,
|
||||
refreshToken: oauthSignInFixture['refreshToken'] as String,
|
||||
clientId: oauthSignInFixture['clientId'] as String,
|
||||
accessToken: oauthSignInFixture['access_token'] as String,
|
||||
refreshToken: oauthSignInFixture['refresh_token'] as String,
|
||||
clientId: oauthSignInFixture['client_id'] as String,
|
||||
);
|
||||
|
||||
when(mockAuthService.signInViaSocialMedia(body: oauthRequest))
|
||||
@@ -81,9 +81,9 @@ void main() {
|
||||
|
||||
final result = await authRepository.signInViaSocialMedia(
|
||||
provider: oauthSignInFixture['provider'] as String,
|
||||
accessToken: oauthSignInFixture['accessToken'] as String,
|
||||
refreshToken: oauthSignInFixture['refreshToken'] as String,
|
||||
clientId: oauthSignInFixture['clientId'] as String,
|
||||
accessToken: oauthSignInFixture['access_token'] as String,
|
||||
refreshToken: oauthSignInFixture['refresh_token'] as String,
|
||||
clientId: oauthSignInFixture['client_id'] as String,
|
||||
);
|
||||
|
||||
expect(result, isA<TokenModel>());
|
||||
@@ -94,9 +94,9 @@ void main() {
|
||||
test('signInViaSocialMedia - пробрасывает исключение', () async {
|
||||
final oauthRequest = OAuthLoginRequest(
|
||||
provider: oauthSignInFixture['provider'] as String,
|
||||
accessToken: oauthSignInFixture['accessToken'] as String,
|
||||
refreshToken: oauthSignInFixture['refreshToken'] as String,
|
||||
clientId: oauthSignInFixture['clientId'] as String,
|
||||
accessToken: oauthSignInFixture['access_token'] as String,
|
||||
refreshToken: oauthSignInFixture['refresh_token'] as String,
|
||||
clientId: oauthSignInFixture['client_id'] as String,
|
||||
);
|
||||
|
||||
when(mockAuthService.signInViaSocialMedia(body: oauthRequest))
|
||||
@@ -105,9 +105,9 @@ void main() {
|
||||
expect(
|
||||
() => authRepository.signInViaSocialMedia(
|
||||
provider: oauthSignInFixture['provider'] as String,
|
||||
accessToken: oauthSignInFixture['accessToken'] as String,
|
||||
refreshToken: oauthSignInFixture['refreshToken'] as String,
|
||||
clientId: oauthSignInFixture['clientId'] as String,
|
||||
accessToken: oauthSignInFixture['access_token'] as String,
|
||||
refreshToken: oauthSignInFixture['refresh_token'] as String,
|
||||
clientId: oauthSignInFixture['client_id'] as String,
|
||||
),
|
||||
throwsException,
|
||||
);
|
||||
@@ -116,18 +116,18 @@ void main() {
|
||||
test('signUpViaSocialMedia - успешная регистрация через соцсеть', () async {
|
||||
final oauthModel = OAuthModel(
|
||||
provider: oauthSignUpFixture['provider'] as String,
|
||||
accessToken: oauthSignUpFixture['accessToken'] as String,
|
||||
accessToken: oauthSignUpFixture['access_token'] as String,
|
||||
id: oauthSignUpFixture['id'] as String,
|
||||
refreshToken: oauthSignUpFixture['refreshToken'] as String,
|
||||
firstName: oauthSignUpFixture['firstName'] as String,
|
||||
lastName: oauthSignUpFixture['lastName'] as String,
|
||||
refreshToken: oauthSignUpFixture['refresh_token'] as String,
|
||||
firstName: oauthSignUpFixture['first_name'] as String,
|
||||
lastName: oauthSignUpFixture['last_name'] as String,
|
||||
email: oauthSignUpFixture['email'] as String,
|
||||
phone: oauthSignUpFixture['phone'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['dateOfBirth'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['date_of_birth'] as String,
|
||||
gender: 'male', // Преобразуется из 'М'
|
||||
weight: oauthSignUpFixture['weight'] as int,
|
||||
height: oauthSignUpFixture['height'] as int,
|
||||
clientId: oauthSignUpFixture['clientId'] as String,
|
||||
clientId: oauthSignUpFixture['client_id'] as String,
|
||||
);
|
||||
|
||||
when(mockAuthService.signUpViaSocialMedia(body: oauthModel))
|
||||
@@ -135,18 +135,18 @@ void main() {
|
||||
|
||||
final result = await authRepository.signUpViaSocialMedia(
|
||||
provider: oauthSignUpFixture['provider'] as String,
|
||||
accessToken: oauthSignUpFixture['accessToken'] as String,
|
||||
accessToken: oauthSignUpFixture['access_token'] as String,
|
||||
id: oauthSignUpFixture['id'] as String,
|
||||
refreshToken: oauthSignUpFixture['refreshToken'] as String,
|
||||
firstName: oauthSignUpFixture['firstName'] as String,
|
||||
lastName: oauthSignUpFixture['lastName'] as String,
|
||||
refreshToken: oauthSignUpFixture['refresh_token'] as String,
|
||||
firstName: oauthSignUpFixture['first_name'] as String,
|
||||
lastName: oauthSignUpFixture['last_name'] as String,
|
||||
email: oauthSignUpFixture['email'] as String,
|
||||
phone: oauthSignUpFixture['phone'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['dateOfBirth'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['date_of_birth'] as String,
|
||||
gender: oauthSignUpFixture['gender'] as String,
|
||||
weight: oauthSignUpFixture['weight'] as int,
|
||||
height: oauthSignUpFixture['height'] as int,
|
||||
clientId: oauthSignUpFixture['clientId'] as String,
|
||||
clientId: oauthSignUpFixture['client_id'] as String,
|
||||
);
|
||||
|
||||
expect(result, tokenFixture.token);
|
||||
@@ -156,18 +156,18 @@ void main() {
|
||||
test('signUpViaSocialMedia - преобразует женский пол', () async {
|
||||
final oauthModel = OAuthModel(
|
||||
provider: oauthSignUpFixture['provider'] as String,
|
||||
accessToken: oauthSignUpFixture['accessToken'] as String,
|
||||
accessToken: oauthSignUpFixture['access_token'] as String,
|
||||
id: oauthSignUpFixture['id'] as String,
|
||||
refreshToken: oauthSignUpFixture['refreshToken'] as String,
|
||||
firstName: oauthSignUpFixture['firstName'] as String,
|
||||
lastName: oauthSignUpFixture['lastName'] as String,
|
||||
refreshToken: oauthSignUpFixture['refresh_token'] as String,
|
||||
firstName: oauthSignUpFixture['first_name'] as String,
|
||||
lastName: oauthSignUpFixture['last_name'] as String,
|
||||
email: oauthSignUpFixture['email'] as String,
|
||||
phone: oauthSignUpFixture['phone'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['dateOfBirth'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['date_of_birth'] as String,
|
||||
gender: 'female', // Преобразуется из 'Ж'
|
||||
weight: oauthSignUpFixture['weight'] as int,
|
||||
height: oauthSignUpFixture['height'] as int,
|
||||
clientId: oauthSignUpFixture['clientId'] as String,
|
||||
clientId: oauthSignUpFixture['client_id'] as String,
|
||||
);
|
||||
|
||||
when(mockAuthService.signUpViaSocialMedia(body: oauthModel))
|
||||
@@ -175,18 +175,18 @@ void main() {
|
||||
|
||||
final result = await authRepository.signUpViaSocialMedia(
|
||||
provider: oauthSignUpFixture['provider'] as String,
|
||||
accessToken: oauthSignUpFixture['accessToken'] as String,
|
||||
accessToken: oauthSignUpFixture['access_token'] as String,
|
||||
id: oauthSignUpFixture['id'] as String,
|
||||
refreshToken: oauthSignUpFixture['refreshToken'] as String,
|
||||
firstName: oauthSignUpFixture['firstName'] as String,
|
||||
lastName: oauthSignUpFixture['lastName'] as String,
|
||||
refreshToken: oauthSignUpFixture['refresh_token'] as String,
|
||||
firstName: oauthSignUpFixture['first_name'] as String,
|
||||
lastName: oauthSignUpFixture['last_name'] as String,
|
||||
email: oauthSignUpFixture['email'] as String,
|
||||
phone: oauthSignUpFixture['phone'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['dateOfBirth'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['date_of_birth'] as String,
|
||||
gender: 'Ж',
|
||||
weight: oauthSignUpFixture['weight'] as int,
|
||||
height: oauthSignUpFixture['height'] as int,
|
||||
clientId: oauthSignUpFixture['clientId'] as String,
|
||||
clientId: oauthSignUpFixture['client_id'] as String,
|
||||
);
|
||||
|
||||
expect(result, tokenFixture.token);
|
||||
@@ -196,18 +196,18 @@ void main() {
|
||||
test('signUpViaSocialMedia - пробрасывает исключение', () async {
|
||||
final oauthModel = OAuthModel(
|
||||
provider: oauthSignUpFixture['provider'] as String,
|
||||
accessToken: oauthSignUpFixture['accessToken'] as String,
|
||||
accessToken: oauthSignUpFixture['access_token'] as String,
|
||||
id: oauthSignUpFixture['id'] as String,
|
||||
refreshToken: oauthSignUpFixture['refreshToken'] as String,
|
||||
firstName: oauthSignUpFixture['firstName'] as String,
|
||||
lastName: oauthSignUpFixture['lastName'] as String,
|
||||
refreshToken: oauthSignUpFixture['refresh_token'] as String,
|
||||
firstName: oauthSignUpFixture['first_name'] as String,
|
||||
lastName: oauthSignUpFixture['last_name'] as String,
|
||||
email: oauthSignUpFixture['email'] as String,
|
||||
phone: oauthSignUpFixture['phone'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['dateOfBirth'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['date_of_birth'] as String,
|
||||
gender: 'male', // Преобразуется из 'М'
|
||||
weight: oauthSignUpFixture['weight'] as int,
|
||||
height: oauthSignUpFixture['height'] as int,
|
||||
clientId: oauthSignUpFixture['clientId'] as String,
|
||||
clientId: oauthSignUpFixture['client_id'] as String,
|
||||
);
|
||||
|
||||
when(mockAuthService.signUpViaSocialMedia(body: oauthModel))
|
||||
@@ -216,18 +216,18 @@ void main() {
|
||||
expect(
|
||||
() => authRepository.signUpViaSocialMedia(
|
||||
provider: oauthSignUpFixture['provider'] as String,
|
||||
accessToken: oauthSignUpFixture['accessToken'] as String,
|
||||
accessToken: oauthSignUpFixture['access_token'] as String,
|
||||
id: oauthSignUpFixture['id'] as String,
|
||||
refreshToken: oauthSignUpFixture['refreshToken'] as String,
|
||||
firstName: oauthSignUpFixture['firstName'] as String,
|
||||
lastName: oauthSignUpFixture['lastName'] as String,
|
||||
refreshToken: oauthSignUpFixture['refresh_token'] as String,
|
||||
firstName: oauthSignUpFixture['first_name'] as String,
|
||||
lastName: oauthSignUpFixture['last_name'] as String,
|
||||
email: oauthSignUpFixture['email'] as String,
|
||||
phone: oauthSignUpFixture['phone'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['dateOfBirth'] as String,
|
||||
dateOfBirth: oauthSignUpFixture['date_of_birth'] as String,
|
||||
gender: oauthSignUpFixture['gender'] as String,
|
||||
weight: oauthSignUpFixture['weight'] as int,
|
||||
height: oauthSignUpFixture['height'] as int,
|
||||
clientId: oauthSignUpFixture['clientId'] as String,
|
||||
clientId: oauthSignUpFixture['client_id'] as String,
|
||||
),
|
||||
throwsException,
|
||||
);
|
||||
|
||||
@@ -0,0 +1,182 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:eatvio_app/features/auth/repositories/reset_password_repository.dart';
|
||||
import 'package:eatvio_app/features/auth/services/reset_password_service.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:mockito/annotations.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import 'package:retrofit/retrofit.dart';
|
||||
|
||||
import '../../../fixtures/fixture_reader.dart';
|
||||
import 'reset_password_repository_test.mocks.dart';
|
||||
|
||||
@GenerateNiceMocks([MockSpec<ResetPasswordService>()])
|
||||
void main() {
|
||||
group('ResetPasswordRepository', () {
|
||||
late ResetPasswordRepository resetPasswordRepository;
|
||||
late MockResetPasswordService mockResetPasswordService;
|
||||
late Map<String, dynamic> resetPasswordFixture;
|
||||
|
||||
setUp(() {
|
||||
resetPasswordFixture = FixtureReader.readAsMap('auth/reset_password_request.json');
|
||||
mockResetPasswordService = MockResetPasswordService();
|
||||
resetPasswordRepository = ResetPasswordRepository(
|
||||
resetPasswordService: mockResetPasswordService,
|
||||
);
|
||||
});
|
||||
|
||||
test('sendEmailCodeForPasswordChange - успешная отправка кода (200)', () async {
|
||||
final email = resetPasswordFixture['email'] as String;
|
||||
final response = HttpResponse(
|
||||
{'success': true},
|
||||
Response(
|
||||
statusCode: 200,
|
||||
requestOptions: RequestOptions(path: '/api/send_password_reset_code'),
|
||||
),
|
||||
);
|
||||
|
||||
when(mockResetPasswordService.sendEmailCodeForPasswordChange(
|
||||
data: {'email': email},
|
||||
)).thenAnswer((_) async => response);
|
||||
|
||||
final result = await resetPasswordRepository.sendEmailCodeForPasswordChange(email);
|
||||
|
||||
expect(result, isTrue);
|
||||
verify(mockResetPasswordService.sendEmailCodeForPasswordChange(
|
||||
data: {'email': email},
|
||||
)).called(1);
|
||||
});
|
||||
|
||||
test('sendEmailCodeForPasswordChange - ошибка отправки кода (400)', () async {
|
||||
final email = resetPasswordFixture['email'] as String;
|
||||
final response = HttpResponse(
|
||||
{'error': 'Invalid email'},
|
||||
Response(
|
||||
statusCode: 400,
|
||||
requestOptions: RequestOptions(path: '/api/send_password_reset_code'),
|
||||
),
|
||||
);
|
||||
|
||||
when(mockResetPasswordService.sendEmailCodeForPasswordChange(
|
||||
data: {'email': email},
|
||||
)).thenAnswer((_) async => response);
|
||||
|
||||
final result = await resetPasswordRepository.sendEmailCodeForPasswordChange(email);
|
||||
|
||||
expect(result, isFalse);
|
||||
});
|
||||
|
||||
test('sendEmailCodeForPasswordChange - пробрасывает исключение', () async {
|
||||
final email = resetPasswordFixture['email'] as String;
|
||||
|
||||
when(mockResetPasswordService.sendEmailCodeForPasswordChange(
|
||||
data: {'email': email},
|
||||
)).thenThrow(Exception('Ошибка сети'));
|
||||
|
||||
expect(
|
||||
() => resetPasswordRepository.sendEmailCodeForPasswordChange(email),
|
||||
throwsException,
|
||||
);
|
||||
});
|
||||
|
||||
test('confirmPasswordChange - успешный сброс пароля (200)', () async {
|
||||
final code = resetPasswordFixture['code'] as String;
|
||||
final password = resetPasswordFixture['password'] as String;
|
||||
final passwordConfirmation = resetPasswordFixture['passwordConfirmation'] as String;
|
||||
final email = resetPasswordFixture['email'] as String;
|
||||
|
||||
final response = HttpResponse(
|
||||
{'success': true},
|
||||
Response(
|
||||
statusCode: 200,
|
||||
requestOptions: RequestOptions(path: '/api/confirm_password_reset_code'),
|
||||
),
|
||||
);
|
||||
|
||||
when(mockResetPasswordService.confirmPasswordChange(
|
||||
data: {
|
||||
'code': code,
|
||||
'password': password,
|
||||
'password_confirmation': passwordConfirmation,
|
||||
'email': email,
|
||||
},
|
||||
)).thenAnswer((_) async => response);
|
||||
|
||||
final result = await resetPasswordRepository.confirmPasswordChange(
|
||||
code,
|
||||
password,
|
||||
passwordConfirmation,
|
||||
email,
|
||||
);
|
||||
|
||||
expect(result, isTrue);
|
||||
verify(mockResetPasswordService.confirmPasswordChange(
|
||||
data: {
|
||||
'code': code,
|
||||
'password': password,
|
||||
'password_confirmation': passwordConfirmation,
|
||||
'email': email,
|
||||
},
|
||||
)).called(1);
|
||||
});
|
||||
|
||||
test('confirmPasswordChange - ошибка сброса пароля (400)', () async {
|
||||
final code = resetPasswordFixture['code'] as String;
|
||||
final password = resetPasswordFixture['password'] as String;
|
||||
final passwordConfirmation = resetPasswordFixture['passwordConfirmation'] as String;
|
||||
final email = resetPasswordFixture['email'] as String;
|
||||
|
||||
final response = HttpResponse(
|
||||
{'error': 'Invalid code'},
|
||||
Response(
|
||||
statusCode: 400,
|
||||
requestOptions: RequestOptions(path: '/api/confirm_password_reset_code'),
|
||||
),
|
||||
);
|
||||
|
||||
when(mockResetPasswordService.confirmPasswordChange(
|
||||
data: {
|
||||
'code': code,
|
||||
'password': password,
|
||||
'password_confirmation': passwordConfirmation,
|
||||
'email': email,
|
||||
},
|
||||
)).thenAnswer((_) async => response);
|
||||
|
||||
final result = await resetPasswordRepository.confirmPasswordChange(
|
||||
code,
|
||||
password,
|
||||
passwordConfirmation,
|
||||
email,
|
||||
);
|
||||
|
||||
expect(result, isFalse);
|
||||
});
|
||||
|
||||
test('confirmPasswordChange - пробрасывает исключение', () async {
|
||||
final code = resetPasswordFixture['code'] as String;
|
||||
final password = resetPasswordFixture['password'] as String;
|
||||
final passwordConfirmation = resetPasswordFixture['passwordConfirmation'] as String;
|
||||
final email = resetPasswordFixture['email'] as String;
|
||||
|
||||
when(mockResetPasswordService.confirmPasswordChange(
|
||||
data: {
|
||||
'code': code,
|
||||
'password': password,
|
||||
'password_confirmation': passwordConfirmation,
|
||||
'email': email,
|
||||
},
|
||||
)).thenThrow(Exception('Ошибка сети'));
|
||||
|
||||
expect(
|
||||
() => resetPasswordRepository.confirmPasswordChange(
|
||||
code,
|
||||
password,
|
||||
passwordConfirmation,
|
||||
email,
|
||||
),
|
||||
throwsException,
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user