public async Task UserTriesToRegister_FirstAttemptFailed_WrongPasswordInCredentials_PasswordMismatchErrorReturned() { _emailRestritionsServiceMock.Setup(x => x.IsEmailAllowed(It.IsAny <string>())) .Returns(true); _credentialsClient .Setup(x => x.Api.CreateAsync(It.IsAny <CredentialsCreateRequest>())) .ReturnsAsync(new CredentialsCreateResponse { Error = CredentialsError.LoginAlreadyExists }); var response = new CredentialsValidationResponse { Error = CredentialsError.PasswordMismatch }; _credentialsClient .Setup(x => x.Api.ValidateCredentialsAsync(It.IsAny <CredentialsValidationRequest>())) .ReturnsAsync(response); _customerProfileClient.Setup(x => x.CustomerProfiles.GetByEmailAsync(It.IsAny <GetByEmailRequestModel>())) .ReturnsAsync(new CustomerProfileResponse()); var registrationService = CreateSutInstance(); var result = await registrationService.RegisterAsync( new RegistrationRequestDto { Email = "email", Password = "******", ReferralCode = null }); Assert.NotNull(result); Assert.Equal(ServicesError.RegisteredWithAnotherPassword.ToString(), result.Error.ToString()); Assert.Null(result.CustomerId); }
public async Task UserTriesToLogIn_WithWrongPassword_PasswordMismatchErrorReturned() { var sessionsServiceClient = new Mock <ISessionsServiceClient>(); var credentialsClient = new Mock <ICredentialsClient>(); var customerProfileClient = new Mock <ICustomerProfileClient>(); var response = new CredentialsValidationResponse { Error = CredentialsError.PasswordMismatch }; credentialsClient .Setup(x => x.Api.ValidateCredentialsAsync(It.IsAny <CredentialsValidationRequest>())) .ReturnsAsync(response); var customerService = new Mock <ICustomersService>(); AuthService authService; using (var logFactory = LogFactory.Create().AddUnbufferedConsole()) { authService = new AuthService( sessionsServiceClient.Object, credentialsClient.Object, customerProfileClient.Object, customerService.Object, logFactory); } var result = await authService.AuthAsync("email", "password"); Assert.Equal(response.Error.ToString(), result.Error.ToString()); Assert.Null(result.CustomerId); Assert.Null(result.Token); }
public async Task UserTriesToLogIn_UnexpectedErrorInValidation_InvalidOperationIsThrown() { var sessionsServiceClient = new Mock <ISessionsServiceClient>(); var credentialsClient = new Mock <ICredentialsClient>(); var customerProfileClient = new Mock <ICustomerProfileClient>(); var response = new CredentialsValidationResponse { Error = CredentialsError.LoginAlreadyExists }; credentialsClient .Setup(x => x.Api.ValidateCredentialsAsync(It.IsAny <CredentialsValidationRequest>())) .ReturnsAsync(response); var customerService = new Mock <ICustomersService>(); AuthService authService; using (var logFactory = LogFactory.Create().AddUnbufferedConsole()) { authService = new AuthService( sessionsServiceClient.Object, credentialsClient.Object, customerProfileClient.Object, customerService.Object, logFactory); } await Assert.ThrowsAsync <InvalidOperationException>(() => authService.AuthAsync("email", "password")); }
public async Task UserTriesToLogIn_WithValidCredentials_SuccessfullyAuthenticated() { var sessionsServiceClient = new Mock <ISessionsServiceClient>(); var credentialsClient = new Mock <ICredentialsClient>(); var customerProfileClient = new Mock <ICustomerProfileClient>(); var credentialsResponse = new CredentialsValidationResponse { CustomerId = "1" }; credentialsClient .Setup(x => x.Api.ValidateCredentialsAsync(It.IsAny <CredentialsValidationRequest>())) .ReturnsAsync(credentialsResponse); customerProfileClient.Setup(x => x.CustomerProfiles.GetByCustomerIdAsync(It.IsAny <string>(), true, true)) .ReturnsAsync(new CustomerProfileResponse { Profile = new CustomerProfile.Client.Models.Responses.CustomerProfile { Status = CustomerProfileStatus.Active } }); var sessionResponse = new ClientSession { SessionToken = "token" }; sessionsServiceClient .Setup(x => x.SessionsApi.AuthenticateAsync(credentialsResponse.CustomerId, It.IsNotNull <CreateSessionRequest>())) .ReturnsAsync(sessionResponse); var customerService = new Mock <ICustomersService>(); customerService .Setup(x => x.IsCustomerBlockedAsync(It.IsAny <string>())) .ReturnsAsync(false); AuthService authService; using (var logFactory = LogFactory.Create().AddUnbufferedConsole()) { authService = new AuthService( sessionsServiceClient.Object, credentialsClient.Object, customerProfileClient.Object, customerService.Object, logFactory); } var result = await authService.AuthAsync("email", "password"); Assert.Equal(credentialsResponse.CustomerId, result.CustomerId); Assert.Equal(sessionResponse.SessionToken, result.Token); Assert.Equal(ServicesError.None, result.Error); }
public async Task UserTriesToLogIn_CustomerIsBlocked_CustomerBlockedErrorReturned() { var sessionsServiceClient = new Mock <ISessionsServiceClient>(); var credentialsClient = new Mock <ICredentialsClient>(); var customersProfileClient = new Mock <ICustomerProfileClient>(); var credentialsResponse = new CredentialsValidationResponse { CustomerId = "1" }; credentialsClient .Setup(x => x.Api.ValidateCredentialsAsync(It.IsAny <CredentialsValidationRequest>())) .ReturnsAsync(credentialsResponse); customersProfileClient.Setup(x => x.CustomerProfiles.GetByCustomerIdAsync(It.IsAny <string>(), true, true)) .ReturnsAsync(new CustomerProfileResponse { Profile = new CustomerProfile.Client.Models.Responses.CustomerProfile { Status = CustomerProfileStatus.Active } }); var customerService = new Mock <ICustomersService>(); customerService .Setup(x => x.IsCustomerBlockedAsync(It.IsAny <string>())) .ReturnsAsync(true); AuthService authService; using (var logFactory = LogFactory.Create().AddUnbufferedConsole()) { authService = new AuthService( sessionsServiceClient.Object, credentialsClient.Object, customersProfileClient.Object, customerService.Object, logFactory); } var result = await authService.AuthAsync("email", "password"); Assert.Equal(CustomerManagementError.CustomerBlocked.ToString(), result.Error.ToString()); Assert.Null(result.CustomerId); Assert.Null(result.Token); }
public async Task UserTriesToRegister_FirstAttemptFailed_CorrectPasswordInCredentials_SuccessfullyFinished() { _emailRestritionsServiceMock.Setup(x => x.IsEmailAllowed(It.IsAny <string>())) .Returns(true); _credentialsClient .Setup(x => x.Api.CreateAsync(It.IsAny <CredentialsCreateRequest>())) .ReturnsAsync(new CredentialsCreateResponse { Error = CredentialsError.LoginAlreadyExists }); var response = new CredentialsValidationResponse { CustomerId = FakeCustomerId }; _credentialsClient .Setup(x => x.Api.ValidateCredentialsAsync(It.IsAny <CredentialsValidationRequest>())) .ReturnsAsync(response); _customerProfileClient.Setup(x => x.CustomerProfiles.GetByEmailAsync(It.IsAny <GetByEmailRequestModel>())) .ReturnsAsync(new CustomerProfileResponse()); _customerProfileClient .Setup(x => x.CustomerProfiles.CreateIfNotExistAsync(It.IsAny <CustomerProfileRequestModel>())) .ReturnsAsync(CustomerProfileErrorCodes.None); _pbfClient .Setup(x => x.WalletsApi.CreateAsync(It.IsAny <CustomerWalletCreationRequestModel>())) .ReturnsAsync(new CustomerWalletCreationResponseModel { Error = CustomerWalletCreationError.None }); _pbfClient .Setup(x => x.CustomersApi.GetWalletAddress(It.IsAny <Guid>())) .ReturnsAsync(new CustomerWalletAddressResponseModel { WalletAddress = null }); var registrationService = CreateSutInstance(); var result = await registrationService.RegisterAsync( new RegistrationRequestDto { Email = "email", Password = "******", ReferralCode = null }); Assert.NotNull(result); Assert.Equal(response.CustomerId, result.CustomerId); Assert.Equal(ServicesError.None, result.Error); }