public async Task ReturnsActivationRequestParams() { var otp = "123456"; var password = "******"; var secretKey = new byte[] { 1 }; var userId = new Guid("{289D2B80-8FFA-43FC-996A-871CC5145308}"); var user = new User { Id = userId }; var credentials = new OtpDeactivationRequest { Otp = otp, Password = password }; var claimsPrincipal = _mock.Mock <ClaimsPrincipal>().Object; var httpContext = _mock.Mock <HttpContext>().Object; _mock.Mock <IOtpSecretKeyProvider>() .Setup(instance => instance.ReadAsync(userId)) .ReturnsAsync(secretKey); _mock.Mock <HttpContext>() .SetupGet(context => context.User) .Returns(claimsPrincipal); _mock.Mock <IHttpContextAccessor>() .SetupGet(accessor => accessor.HttpContext) .Returns(httpContext); _mock.Mock <ICurrentUserProvider>() .Setup(instance => instance.GetUserAsync(claimsPrincipal)) .ReturnsAsync(user); var provider = _mock.Create <OtpDeactivationRequestParamProvider>(); var actual = await provider.GetAsync(credentials); var expected = new OtpActivationRequestParams { Otp = otp, Password = password, SecretKey = secretKey, UserId = userId }; ContentAssert.AreEqual(expected, actual); }
public async Task <OtpActivationRequestParams> GetAsync(OtpDeactivationRequest credentials) { var principal = _httpContextAccessor.HttpContext.User; var user = await _currentUserProvider.GetUserAsync(principal); var userId = user.Id; var secretKeyBytes = await _otpSecretKeyProvider.ReadAsync(userId); return(new OtpActivationRequestParams { UserId = userId, SecretKey = secretKeyBytes, Otp = credentials.Otp, Password = credentials.Password }); }
public async Task <UserSettingsDTO> Deactivate([FromBody] OtpDeactivationRequest credentials) { var deactivationParams = await _otpDeactivationRequestParamProvider.GetAsync(credentials); if (deactivationParams == null) { throw new BadRequestException("OTP_INVALID_REQUEST"); } var result = await _otpActivationRequestValidationService.ValidateAsync(deactivationParams); if (result != "VALID") { throw new BadRequestException(result); } return(await _optDeactivationService.DeactivateAsync(deactivationParams)); }
public async Task DeactivateReturnsSuccessResponse() { var credentials = new OtpDeactivationRequest(); var activationParams = new OtpActivationRequestParams(); var userSettings = new UserSettingsDTO(); _mock.Mock <IOtpDeactivationRequestParamProvider>() .Setup(instance => instance.GetAsync(credentials)) .ReturnsAsync(activationParams); _mock.Mock <IOtpActivationRequestValidationService>() .Setup(instance => instance.ValidateAsync(activationParams)) .ReturnsAsync("VALID"); _mock.Mock <IOtpDeactivationService>() .Setup(instance => instance.DeactivateAsync(activationParams)) .ReturnsAsync(userSettings); var controller = _mock.Create <AuthOtpController>(); var actual = await controller.Deactivate(credentials); ContentAssert.AreEqual(userSettings, actual); }