public async Task SuccessfulConfirmation_OfAccount_ReturnsStatusCode_Ok()
        {
            var user = new AwsCognitoUser
            {
                UserName         = "******",
                ConfirmationCode = "123456"
            };

            _cognitoAdapterHelper.UserExists(Arg.Any <AwsCognitoUser>()).Returns(true);
            _cognitoAdapterHelper.UserIsConfirmed(Arg.Any <AwsCognitoUser>()).Returns(false);
            _awsCognitoClient.ConfirmSignUpAsync(Arg.Any <ConfirmSignUpRequest>()).Returns(new ConfirmSignUpResponse());

            var confirmUserResponse = await _authAdapter.ConfirmUserAsync(user);

            Assert.AreEqual(HttpStatusCode.OK, confirmUserResponse.StatusCode);
        }
        public async Task <IActionResult> ConfirmAccount([FromBody] AwsCognitoUser cognitoUser)
        {
            HttpResponseMessage confirmSignUpResponse;

            try
            {
                confirmSignUpResponse = await _authAdapter.ConfirmUserAsync(cognitoUser);
            }
            catch (CodeMismatchException)
            {
                return(new ContentResult
                {
                    Content = "Invalid verification code provided.",
                    ContentType = "text/plain",
                    StatusCode = (int)HttpStatusCode.BadRequest
                });
            }
            catch (ExpiredCodeException)
            {
                return(new ContentResult
                {
                    Content = "Verification code expired. Client must request a new code.",
                    ContentType = "text/plain",
                    StatusCode = (int)HttpStatusCode.BadRequest
                });
            }

            switch (confirmSignUpResponse.StatusCode)
            {
            case HttpStatusCode.NotFound:
                return(new NotFoundObjectResult($"The username {cognitoUser.UserName} does not exist."));

            case HttpStatusCode.Conflict:
                return(new ConflictObjectResult($"The username {cognitoUser.UserName} is already confirmed. Login to continue."));

            case HttpStatusCode.OK:
                return(new OkObjectResult("Account confirmed. Please login to continue."));

            default:
                return(new ContentResult
                {
                    ContentType = "text/plain",
                    Content = "An error has occurred",
                    StatusCode = (int)confirmSignUpResponse.StatusCode
                });
            }
        }
        public async Task SuccessfulPostToConfirmAccount_RedirectsTo_GetLoginView()
        {
            _authAdapter.ConfirmUserAsync(Arg.Any <AwsCognitoUser>()).Returns(new HttpResponseMessage(HttpStatusCode.OK));
            var user = new AwsCognitoUser
            {
                UserName         = "******",
                ConfirmationCode = "123456"
            };

            var confirmAccountResponse = await _accountsController.ConfirmAccount(user) as RedirectToActionResult;

            Assert.AreEqual("GetLoginView", confirmAccountResponse.ActionName);
        }
Exemple #4
0
        public async Task <IActionResult> ConfirmAccount(AwsCognitoUser cognitoUser, string message = "")
        {
            ViewBag.InfoMessage = message;

            HttpResponseMessage confirmSignUpResponse;

            try
            {
                confirmSignUpResponse = await _authAdapter.ConfirmUserAsync(cognitoUser);
            }
            catch (CodeMismatchException ex)
            {
                _logger.LogError(ex);
                return(RedirectToAction("GetConfirmAccountView", "Accounts", new { message = "Invalid verification code provided. Please try again." }));
            }
            catch (ExpiredCodeException ex)
            {
                _logger.LogError(ex);
                return(RedirectToAction("GetResendConfirmationCodeView", "Accounts", new { message = "Verification code expired. Please request a new code." }));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex);
                return(RedirectToAction("GetConfirmAccountView", "Accounts", new { message = "An error has occurred." }));
            }

            switch (confirmSignUpResponse.StatusCode)
            {
            case HttpStatusCode.NotFound:
                return(RedirectToAction("GetCreateAccountView", "Accounts", new { message = $"The username {cognitoUser.UserName} does not exist. Please create an account." }));

            case HttpStatusCode.Conflict:
                return(RedirectToAction("GetLoginView", "Accounts", new { message = $"The username {cognitoUser.UserName} is already confirmed. Please login to continue." }));

            case HttpStatusCode.OK:
                return(RedirectToAction("GetLoginView", "Accounts", new { message = "Account confirmed. Please login to continue." }));

            default:
                _logger.LogError(confirmSignUpResponse);
                return(RedirectToAction("GetCreateAccountView", "Accounts", new { message = "An error has occurred." }));
            }
        }