コード例 #1
0
        public void ReturnNewUser(string userName)
        {
            var result = sutBuilder.BuildUser(userName);

            Assert.That(result, Is.AssignableTo <IUser>());
            Assert.That(result.UserName, Is.EqualTo(userName));
        }
コード例 #2
0
        public HttpResponseMessage Register(JObject userObject)
        {
            IList <string> errorMessages;

            if (!_userDraftValidationService.IsValid(userObject, out errorMessages))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, errorMessages));
            }

            var userDraft = userObject.ToObject <UserDraft>();

            string[] logins = { userDraft.email, userDraft.userName, userDraft.mobilePhone };

            try
            {
                _userService.CheckIfUserExistByLogin(logins);
            }
            catch (UserAlreadyExistException ex)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message));
            }

            var userBuilder = new UserBuilder();
            var user        = userBuilder.BuildUser(userDraft);

            if (!_registrationService.TryRegisterUser(user))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, "User with this email already exist"));
            }

            _confirmationSenderService.SendConfirmation(userDraft.email, ConfirmationCodeType.EmailConfirmation);

            return(Request.CreateResponse(HttpStatusCode.OK, "Registration has complete. Email with confirmation code was sended on your email address. Please, confirm you address to login in system."));
        }
コード例 #3
0
        protected override void Before_all_specs()
        {
            SetupDatabase(ShopGunSpecBase.Database.ShopGun, typeof(Base).Assembly);
            _statisticsDomainService = new StatisticsDomainService(new Repository <Brand>(GetNewDataContext()),
                                                                   new Repository <Company>(GetNewDataContext()),
                                                                   new Repository <Country>(GetNewDataContext()),
                                                                   new Repository <Product>(GetNewDataContext()),
                                                                   new Repository <Ingredient>(GetNewDataContext()),
                                                                   new Repository <Concept>(GetNewDataContext()),
                                                                   new Repository <AdviceBase>(GetNewDataContext()));

            _productBuilder = new ProductBuilder();
            _product        = ProductBuilder.BuildProduct();
            _user           = UserBuilder.BuildUser();
            using (var dataContext = GetNewDataContext())
            {
                dataContext.GetTable <Product>().InsertOnSubmit(_product);
                dataContext.GetTable <User>().InsertOnSubmit(_user);
                dataContext.SubmitChanges();
            }
            _searchResultMessageEntity = new SearchResultMessageEntity {
                Products = new List <Product> {
                    _product
                }
            };
            base.Before_all_specs();
        }
コード例 #4
0
        public void AddUserTest()
        {
            var userBuilder = new UserBuilder();

            var randomUserDraftGenerator = new RandomUserDraftGenerator();
            var userDraft = randomUserDraftGenerator.GenerateUserDraft();

            var user = userBuilder.BuildUser(userDraft);

            var registrationService = _container.GetInstance <RegistrationService>();

            registrationService.RegisterUser(user);

            var addedUser = _userManager.GetUserByLogin(userDraft.userName);

            Assert.AreEqual(user.DateOfBirth.ToString(), addedUser.DateOfBirth.ToString());
            Assert.AreEqual(user.FirstName, addedUser.FirstName);
            Assert.AreEqual(user.LastName, addedUser.LastName);
            Assert.AreEqual(user.UserName, addedUser.UserName);

            Assert.AreEqual(user.Address.Country, addedUser.Address.Country);
            Assert.AreEqual(user.Address.City, addedUser.Address.City);
            Assert.AreEqual(user.Address.State, addedUser.Address.State);
            Assert.AreEqual(user.Address.Zipcode, addedUser.Address.Zipcode);
            Assert.AreSame(addedUser.Address.User, addedUser);

            Assert.IsNotNull(addedUser.MobilePhone);
            Assert.AreEqual(user.MobilePhone.Value, addedUser.MobilePhone.Value);
            Assert.AreEqual(user.MobilePhone.IsConfirmed, addedUser.MobilePhone.IsConfirmed);
            Assert.AreSame(addedUser.MobilePhone.User, addedUser);

            Assert.IsNotNull(addedUser.Emails[0]);
            Assert.AreEqual(user.Emails[0].Value, addedUser.Emails[0].Value);
            Assert.AreEqual(user.Emails[0].IsConfirmed, addedUser.Emails[0].IsConfirmed);
            Assert.AreSame(addedUser.Emails[0].User, addedUser);

            Assert.IsNotNull(addedUser.Credentials);
            Assert.IsNotNull(addedUser.Credentials.Logins);
            Assert.AreEqual(user.Credentials.Logins.Find(x => x.Type == LoginType.Email).Value, addedUser.Emails[0].Value);
            Assert.AreSame(addedUser.Credentials.Logins.Find(x => x.Type == LoginType.Email).Credentials, addedUser.Credentials);
            Assert.AreEqual(user.Credentials.Logins.Find(x => x.Type == LoginType.MobilePhone).Value, addedUser.MobilePhone.Value);
            Assert.AreSame(addedUser.Credentials.Logins.Find(x => x.Type == LoginType.MobilePhone).Credentials, addedUser.Credentials);
            Assert.AreEqual(user.Credentials.Logins.Find(x => x.Type == LoginType.Username).Value, addedUser.UserName);
            Assert.AreSame(addedUser.Credentials.Logins.Find(x => x.Type == LoginType.Username).Credentials, addedUser.Credentials);
            Assert.IsNotNull(addedUser.Credentials.Passwords);
            Assert.AreEqual(addedUser.Credentials.Passwords.Count, 1);
            Assert.AreEqual(user.Credentials.Passwords[0].Value, addedUser.Credentials.Passwords[0].Value);
            Assert.AreEqual(user.Credentials.Passwords[0].IsActive, addedUser.Credentials.Passwords[0].IsActive);
            Assert.IsNotNull(addedUser.Credentials.Passwords[0].ExpirationDate);
            Assert.AreSame(addedUser.Credentials.Passwords[0].Credentials, addedUser.Credentials);
            Assert.AreEqual(addedUser.Credentials.User, addedUser);

            Assert.IsNotNull(addedUser.UserRoles);
            Assert.AreEqual(addedUser.UserRoles.Count, 1);
            Assert.AreEqual(user.UserRoles[0].Name, addedUser.UserRoles[0].Name);
        }
コード例 #5
0
        public void Initialize()
        {
            _container = new Container();

            _container.Register <BookLibraryContext, BookLibraryContext>(Lifestyle.Singleton);
            _container.Register <IUserManager, UserManager>(Lifestyle.Singleton);
            _container.Register <IConfirmationCodeManager, ConfirmationCodeManager>(Lifestyle.Singleton);
            _container.Register <IEmailManager, EmailManager>(Lifestyle.Singleton);
            _container.Register <IPasswordPolicy, PasswordPolicy>();
            _container.Register <ICodeValidationRule, CodeValidationRule>();
            _container.Register <IConfirmationCodeService, ConfirmationCodeService>();
            _container.Register <IEmailConfirmationService, EmailConfirmationService>();
            _container.Register <IConfirmationSenderService, ConfirmationSenderService>();
            _container.Register <IPasswordHasher, PasswordHasher>();
            _container.Register <ICodeGenerator, CodeGenerator>();
            _container.Register <INotificationTransportService, NotificationTransportService>();

            _context = _container.GetInstance <BookLibraryContext>();
            var userBuilder = new UserBuilder();

            _userManager = _container.GetInstance <UserManager>();

            _confirmationCodeManager = _container.GetInstance <ConfirmationCodeManager>();

            _emailManager = _container.GetInstance <EmailManager>();

            var confirmationSenderService = _container.GetInstance <ConfirmationSenderService>();

            var randomUserDraftGenerator = new RandomUserDraftGenerator();
            var userDraft = randomUserDraftGenerator.GenerateUserDraft();

            var user = userBuilder.BuildUser(userDraft);

            user.Emails[0].IsConfirmed = true;
            user.ChangeEmailTo(userDraft.email);

            var registrationService = _container.GetInstance <RegistrationService>();

            registrationService.RegisterUser(user);

            confirmationSenderService.SendConfirmation(user.Email, ConfirmationCodeType.EmailConfirmation);

            confirmationSenderService.SendConfirmation(user.Email, ConfirmationCodeType.EmailConfirmation);

            _context.Codes.ToList()[1].IsActive = false;

            confirmationSenderService.SendConfirmation(user.Email, ConfirmationCodeType.EmailConfirmation);

            _context.Codes.ToList()[2].ExpirationDate = new DateTimeOffset(1971, 1, 1, 0, 0, 0, 0, TimeSpan.Zero);

            _context.SaveChanges();
        }
コード例 #6
0
        public void WhenTheUserExecutesAGETUserCall()
        {
            var userDTO = UserBuilder.BuildUser();

            var result = RESTHelpers.GETRequestAsync <UserResponseDTO>(
                ConfigurationManager.AppSettings["URL"],
                ConfigurationManager.AppSettings["UserResource"],
                HeaderBuilder.BuildHeader(),
                ConfigurationManager.AppSettings["UserName"],
                ConfigurationManager.AppSettings["Password"]).Result;

            context.Add("UserDTO", userDTO);
            context.Add("UserResponseDTO", result);
        }
コード例 #7
0
        public HttpResponseMessage UpdateUser(HttpRequestMessage request, JObject userObject)
        {
            if (request.Headers.Authorization == null || !_jwtService.ValidateToken(request.Headers.Authorization.Scheme))
            {
                return(Request.CreateResponse(HttpStatusCode.Forbidden, "Not authorized!"));
            }

            IList <string> errorMessages;

            if (!_userDraftValidationService.IsValid(userObject, out errorMessages))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, errorMessages));
            }

            var userDraft = userObject.ToObject <UserDraft>();

            var tokenValue = request.Headers.Authorization.Scheme;
            var userId     = _jwtService.GetUserIdFromToken(tokenValue);
            var token      = _jwtService.CreateToken(userId);

            var userBuilder  = new UserBuilder();
            var updatedUser  = userBuilder.BuildUser(userDraft);
            var userToUpdate = _userService.GetUserByLogin(updatedUser.Emails.First().Value);

            if (userToUpdate.UserName != updatedUser.UserName)
            {
                string[] logins = { userDraft.userName };

                try
                {
                    _userService.CheckIfUserExistByLogin(logins);
                }
                catch (UserAlreadyExistException ex)
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, new { message = ex.Message, token = token }));
                }
            }

            if (userToUpdate.MobilePhone.Value != updatedUser.MobilePhone.Value)
            {
                string[] logins = { userDraft.mobilePhone };

                try
                {
                    _userService.CheckIfUserExistByLogin(logins);
                }
                catch (UserAlreadyExistException ex)
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, new { message = ex.Message, token = token }));
                }
            }

            User user = _userService.UpdateUser(userToUpdate, updatedUser);

            var userDTO = new UserDTO()
            {
                Id          = user.UserId,
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                UserName    = user.UserName,
                Email       = user.Email,
                MobilePhone = user.MobilePhone.Value,
                DateOfBirth = (int)user.DateOfBirth.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds,
                Country     = user.Address.Country,
                State       = user.Address.State,
                City        = user.Address.City,
                Zipcode     = user.Address.Zipcode,
                AddressLine = user.Address.AddressLine,
                Roles       = user.UserRoles.Select(x => x.Name).ToArray()
            };

            return(Request.CreateResponse(HttpStatusCode.OK, new { user = userDTO, token = token }));
        }