Example #1
0
        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);
        }
Example #2
0
        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);
        }