Exemplo n.º 1
0
        public async Task TestRegisterPost()
        {
            var registrationRequest = new RegistrationRequest
            {
                CompanyName  = "Test Company",
                EMailAddress = "*****@*****.**",
                Password     = "******",
                UserName     = "******"
            };
            var regService = new RegistrationService(_loggerMock.Object);
            RegistrationPostResponse response = await regService.RegisterUserAsync(registrationRequest);


            Assert.True(response.success);

            _dataStoreMock.Verify();
        }
        /// <summary>
        /// Start signup process for new user in Cognito user pool
        /// </summary>
        /// <param name="regReq"></param>
        /// <returns></returns>
        public async Task <RegistrationPostResponse> RegisterUserAsync(RegistrationRequest regReq)
        {
            // Register the user using Cognito
            var signUpRequest = new SignUpRequest
            {
                ClientId = CognitoClientId,
                Password = regReq.Password,
                Username = regReq.UserName,
            };

            var emailAttribute = new AttributeType
            {
                Name  = "email",
                Value = regReq.EMailAddress
            };

            signUpRequest.UserAttributes.Add(emailAttribute);
            // Add custom attributes
            signUpRequest.UserAttributes.Add(new AttributeType
            {
                Name  = CompanyNameAttribute,
                Value = regReq.CompanyName
            });

            RegistrationPostResponse regPostResponse = new RegistrationPostResponse();

            try {
                var getResponse = await Cognito.SignUpAsync(signUpRequest);

                regPostResponse.success       = true;
                regPostResponse.statusCode    = getResponse.HttpStatusCode.ToString();
                regPostResponse.userSub       = getResponse.UserSub;
                regPostResponse.userConfirmed = getResponse.UserConfirmed;
            }
            catch (AmazonCognitoIdentityProviderException ace) {
                regPostResponse.error.message = ace.Message;
                regPostResponse.success       = false;
                switch (ace.ErrorCode)
                {
                case "UsernameExistsException":
                    regPostResponse.error.error = ErrorEnum.UserAlreadyExists;
                    break;

                case "email already exists":                          // not sure what this exception is
                    regPostResponse.error.error = ErrorEnum.UserAlreadyExists;
                    break;

                default:
                    regPostResponse.error.error = ErrorEnum.Unknown;
                    break;
                }
                regPostResponse.error.message = ace.ErrorCode + ":" + ace.Message;
            }
            catch (Exception e) {
                regPostResponse.success       = false;
                regPostResponse.error.error   = ErrorEnum.Unknown;
                regPostResponse.error.message = e.Message;
            }

            return(regPostResponse);
        }