예제 #1
0
        public async Task SuccessfulPostToCreateAccount_CallsAppRepositoryMethod_AndRedirectsToCorrectAction()
        {
            _authAdapter.RegisterNewUserAsync(Arg.Any <AwsCognitoUser>()).Returns(new HttpResponseMessage(HttpStatusCode.Created));
            var user = new AwsCognitoUser
            {
                UserName = "******",
                Password = "******"
            };

            var createAccountResponse = await _accountsController.CreateAccount(user) as RedirectToActionResult;

            await _userRepository.Received(1).AddUserAsync(Arg.Any <string>());

            Assert.AreEqual("GetConfirmAccountView", createAccountResponse.ActionName);
        }
예제 #2
0
        public async Task SuccessfulCreationOfAccount_ReturnsStatusCode_Created()
        {
            var user = new AwsCognitoUser
            {
                UserName = "******",
                Password = "******"
            };

            _cognitoAdapterHelper.UserExists(Arg.Any <AwsCognitoUser>()).Returns(false);
            _awsCognitoClient.SignUpAsync(Arg.Any <SignUpRequest>()).Returns(new SignUpResponse());

            var registerUserResponse = await _authAdapter.RegisterNewUserAsync(user);

            Assert.AreEqual(HttpStatusCode.Created, registerUserResponse.StatusCode);
        }
예제 #3
0
        public async Task <IActionResult> CreateAccount([FromBody] AwsCognitoUser cognitoUser)
        {
            try
            {
                var signUpResponse = await _authAdapter.RegisterNewUserAsync(cognitoUser);

                switch (signUpResponse.StatusCode)
                {
                case HttpStatusCode.Conflict:
                    return(new ConflictObjectResult($"The email address {cognitoUser.UserName} already has an account associated with it."));

                case HttpStatusCode.Created:
                    return(new OkObjectResult($"Account successfully created. Please check your email for a confirmation code."));

                default:
                    return(new ContentResult
                    {
                        ContentType = "text/plain",
                        Content = "An error has occurred",
                        StatusCode = (int)signUpResponse.StatusCode
                    });
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
예제 #4
0
        public async Task <IActionResult> CreateAccount(AwsCognitoUser cognitoUser, string message = "")
        {
            //use this to display info messages after redirect
            ViewBag.InfoMessage = message;

            HttpResponseMessage signUpResponse;

            try
            {
                signUpResponse = await _authAdapter.RegisterNewUserAsync(cognitoUser);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex);
                return(RedirectToAction("GetCreateAccountView", "Accounts", new { message = "An error has occurred." }));
            }

            switch (signUpResponse.StatusCode)
            {
            case HttpStatusCode.Conflict:
                return(RedirectToAction("GetCreateAccountView", "Accounts", new { message = $"The email address {cognitoUser.UserName} already has an account associated with it." }));

            case HttpStatusCode.Created:
                await _userRepository.AddUserAsync(cognitoUser.UserName);

                return(RedirectToAction("GetConfirmAccountView", "Accounts", new { message = $"Account successfully created. Please check your email for a confirmation code." }));

            default:
                _logger.LogError(signUpResponse);
                return(RedirectToAction("GetCreateAccountView", "Accounts", new { message = "An error has occurred." }));
            }
        }
예제 #5
0
        public async Task AccountsController_CreateAccountEndpoint_AddsUserToDatabase()
        {
            var testCognitoUser = new AwsCognitoUser
            {
                UserName = "******",
                Password = "******"
            };

            _mockAuthAdapter.RegisterNewUserAsync(Arg.Any <AwsCognitoUser>()).Returns(new HttpResponseMessage(HttpStatusCode.Created));

            var formContent = new FormUrlEncodedContent(new []
            {
                new KeyValuePair <string, string>("UserName", testCognitoUser.UserName),
                new KeyValuePair <string, string>("Password", testCognitoUser.Password)
            });
            await _httpClient.PostAsync("accounts/create", formContent);

            var testUsers = await _testDbContext.GetTestUsers();

            Assert.AreEqual(testCognitoUser.UserName, testUsers.First().Username);
        }