Пример #1
0
        public async Task <IHttpActionResult> Put(Guid id, [FromBody] UpdateUserInfoRequestDto updateUserData)
        {
            var validator = new UpdatedUserInfoRequestDtoValidator(id, this._phoneValidationManager, this._userService);
            var results   = await validator.ValidateAsync(updateUserData);

            var detailedError = new StringBuilder();

            foreach (var error in results.Errors.Select(e => e.ErrorMessage))
            {
                detailedError.Append(error + "; ");
            }

            if (!results.IsValid)
            {
                return(BadRequest(detailedError.ToString())); // TODO: Think of returning the errors in a better way
            }
            try
            {
                this._userService.UpdateUserInfo(id, updateUserData);

                return(Ok());
            }
            catch (Exception ex)
            {
                var errorMessage = _apiLogger.OnActionException(ActionContext, ex);
                return(InternalServerError(new HttpException(errorMessage)));
            }
        }
Пример #2
0
        public void UpdateUserInfo(Guid uid, UpdateUserInfoRequestDto updatedInfo)
        {
            var userEntity = this._unitOfWork.UserRepository.GetAllUsers().FirstOrDefault(u => u.Id == uid);

            if (userEntity == null)
            {
                throw new ArgumentException("User not available in Database");
            }

            this._mapper.Map <UpdateUserInfoRequestDto, User>(updatedInfo, userEntity);

            if (userEntity.Languages != null)
            {
                userEntity.Languages.Clear();
            }
            else
            {
                userEntity.Languages = new List <Language>();
            }

            var languages =
                this._unitOfWork.LanguageRepository.GetAlLanguages().Where(l => updatedInfo.LanguageIds.Contains(l.Id));

            foreach (var language in languages)
            {
                userEntity.Languages.Add(language);
            }

            this._unitOfWork.Save();

            if (updatedInfo.AutomaticSubscriptionSettings != null)
            {
                this.UpdateUserAutomaticSubscriptionSettings(uid, new EditUserAutomaticSubscriptionSettingsRequestDto()
                {
                    AutomaticallySubscribeToAllGroups        = updatedInfo.AutomaticSubscriptionSettings.AutomaticallySubscribeToAllGroups,
                    AutomaticallySubscribeToAllGroupsWithTag = updatedInfo.AutomaticSubscriptionSettings.AutomaticallySubscribeToAllGroupsWithTag,
                    SubscribedTagIds = updatedInfo.AutomaticSubscriptionSettings.SubscribedTagIds
                });
            }

            if (updatedInfo.SocialLinks != null)
            {
                this.UpdateSocialLinksForUser(uid, new UpdateSocialLinksRequestDto()
                {
                    FacebookUsername  = updatedInfo.SocialLinks.FacebookUsername,
                    TwitterUsername   = updatedInfo.SocialLinks.TwitterUsername,
                    InstagramUsername = updatedInfo.SocialLinks.InstagramUsername
                });
            }
        }
Пример #3
0
        public async Task We_Validate_Automatic_Subscr_Settings_If_Avail_When_Updating_User()
        {
            // arrange
            var request = new UpdateUserInfoRequestDto()
            {
                AutomaticSubscriptionSettings = new AutomaticSubscriptionSettingsDto
                {
                    AutomaticallySubscribeToAllGroups        = true,
                    AutomaticallySubscribeToAllGroupsWithTag = true
                },
                Email     = "*****@*****.**",
                FirstName = "Stefcho",
                LastName  = "Mefcho"
            };

            var userController = new UserController(this._mockedUserService.Object, null, null, null, null);

            // act
            var actionResult = await userController.Put(Guid.NewGuid(), request);

            var contentResult = actionResult as BadRequestErrorMessageResult;

            // assert
            Assert.IsNotNull(contentResult);
            Assert.AreEqual("The options for AutomaticallySubscribeToAllGroups and AutomaticallySubscribeToAllGroupsWithTag can not be both set to 'true'.; ", contentResult.Message);
            this._mockedUserService.Verify(m => m.UpdateUserInfo(It.IsAny <Guid>(), It.IsAny <UpdateUserInfoRequestDto>()), Times.Never);

            // act
            request.AutomaticSubscriptionSettings = null;

            actionResult = await userController.Put(Guid.NewGuid(), request);

            var secondContentResult = actionResult as OkResult;

            // assert
            this._mockedUserService.Verify(m => m.UpdateUserInfo(It.IsAny <Guid>(), It.IsAny <UpdateUserInfoRequestDto>()), Times.Once);
            Assert.IsNotNull(secondContentResult);
        }
Пример #4
0
        public async Task We_Validate_Social_Links_If_Avail_When_Updating_User()
        {
            // arrange
            var request = new UpdateUserInfoRequestDto()
            {
                SocialLinks = new SocialLinksDto()
                {
                    FacebookUsername = "******"
                }
                ,
                Email     = "*****@*****.**",
                FirstName = "Stefcho",
                LastName  = "Mefcho"
            };

            var userController = new UserController(this._mockedUserService.Object, null, null, null, null);

            // act
            var actionResult = await userController.Put(Guid.NewGuid(), request);

            var contentResult = actionResult as BadRequestErrorMessageResult;

            // assert
            Assert.IsNotNull(contentResult);
            Assert.AreEqual("Facebook username must have the prefix: m.me/; ", contentResult.Message);
            this._mockedUserService.Verify(m => m.UpdateUserInfo(It.IsAny <Guid>(), It.IsAny <UpdateUserInfoRequestDto>()), Times.Never);

            // act
            request.SocialLinks = null;

            actionResult = await userController.Put(Guid.NewGuid(), request);

            var secondContentResult = actionResult as OkResult;

            // assert
            this._mockedUserService.Verify(m => m.UpdateUserInfo(It.IsAny <Guid>(), It.IsAny <UpdateUserInfoRequestDto>()), Times.Once);
            Assert.IsNotNull(secondContentResult);
        }
Пример #5
0
        public void Updating_Non_Existing_User_Throws_ArgumentException()
        {
            // arrange
            var newUserStsId = "https://boongaloocompanysts/identity3025f46b-3070-4f75-809d-44b7ae5b8e6a";
            // TODO: Extract this as a common part between this one and the one above
            var newUserRequest = new NewUserRequestDto()
            {
                About         = "About",
                Email         = "*****@*****.**",
                FirstName     = "Stecho",
                LastName      = "Stefchev",
                Gender        = GenderEnum.Male,
                IdsrvUniqueId = newUserStsId,
                PhoneNumber   = "+359886585549"
            };

            // act
            var newUserId = this._userService.InsertNewUser(newUserRequest);

            // assert
            var newUser = this._userService.GetUserById(newUserId);

            Assert.IsNotNull(newUser);
            Assert.AreEqual(newUser.IdsrvUniqueId, newUserStsId);
            Assert.IsNotNull(newUser.AutomaticSubscriptionSettings);
            Assert.IsNotNull(newUser.BirthDate);
            Assert.AreEqual(newUser.BirthDate, DateTime.Parse(this.InitialDateString));

            var updatedBirthDate = DateTime.UtcNow;
            var updatedAbout     = "UpdatedAbout";
            var updatedEmail     = "*****@*****.**";
            var firstNameUpdated = "UpdatedStecho";
            var lastNameUpdated  = "UpdatedStefchev";
            var firstLanguageId  = Guid.Parse("e9260fb3-5183-4c3e-9bd2-c606d03b7bcb");
            var secondLanguageId = Guid.Parse("05872235-365b-41f8-ab50-3913ffe9c601");

            var updateData = new UpdateUserInfoRequestDto()
            {
                About       = updatedAbout,
                BirthDate   = updatedBirthDate,
                Email       = updatedEmail,
                FirstName   = firstNameUpdated,
                Gender      = GenderEnum.Female,
                LastName    = lastNameUpdated,
                LanguageIds = new List <Guid>()
                {
                    firstLanguageId,
                    secondLanguageId
                },
                PhoneNumber = "Updated+359886585549"
            };

            // act

            Guid notValidUserId = Guid.NewGuid();

            while (notValidUserId == newUserId)
            {
                notValidUserId = Guid.NewGuid();
            }


            this._userService.UpdateUserInfo(notValidUserId, updateData);
        }
Пример #6
0
        public void We_Can_Update_Initially_Created_User()
        {
            // arrange
            var newUserStsId = "https://boongaloocompanysts/identity3025f46b-3070-4f75-809d-44b7ae5b8e6a";

            var newUserRequest = new NewUserRequestDto()
            {
                About         = "About",
                Email         = "*****@*****.**",
                FirstName     = "Stecho",
                LastName      = "Stefchev",
                Gender        = GenderEnum.Male,
                IdsrvUniqueId = newUserStsId,
                PhoneNumber   = "+359886585549",
                LanguageIds   = new List <Guid>()
                {
                    Guid.Parse("e9260fb3-5183-4c3e-9bd2-c606d03b7bcb")
                }
            };

            // act
            var newUserId = this._userService.InsertNewUser(newUserRequest);

            // assert
            var newUser = this._userService.GetUserById(newUserId);

            Assert.IsNotNull(newUser);
            Assert.AreEqual(newUser.IdsrvUniqueId, newUserStsId);
            Assert.IsNotNull(newUser.AutomaticSubscriptionSettings);
            Assert.IsNotNull(newUser.BirthDate);
            Assert.AreEqual(newUser.BirthDate, DateTime.Parse(this.InitialDateString));

            // arrange
            var updatedBirthDate = DateTime.UtcNow;
            var updatedAbout     = "UpdatedAbout";
            var updatedEmail     = "*****@*****.**";
            var firstNameUpdated = "UpdatedStecho";
            var lastNameUpdated  = "UpdatedStefchev";
            var firstLanguageId  = Guid.Parse("e9260fb3-5183-4c3e-9bd2-c606d03b7bcb");
            var secondLanguageId = Guid.Parse("05872235-365b-41f8-ab50-3913ffe9c601");

            var updateData = new UpdateUserInfoRequestDto()
            {
                About       = updatedAbout,
                BirthDate   = updatedBirthDate,
                Email       = updatedEmail,
                FirstName   = firstNameUpdated,
                Gender      = GenderEnum.Female,
                LastName    = lastNameUpdated,
                LanguageIds = new List <Guid>()
                {
                    firstLanguageId,
                    secondLanguageId
                },
                PhoneNumber = "Updated+359886585549",
                AutomaticSubscriptionSettings = new AutomaticSubscriptionSettingsDto()
                {
                    AutomaticallySubscribeToAllGroups        = true,
                    AutomaticallySubscribeToAllGroupsWithTag = false,
                    SubscribedTagIds = new List <Guid>()
                }
            };

            // act
            this._userService.UpdateUserInfo(newUserId, updateData);

            // assert
            newUser = this._userService.GetUserById(newUserId);

            Assert.IsNotNull(newUser);
            Assert.AreEqual(newUser.IdsrvUniqueId, newUserStsId);
            Assert.AreEqual(newUser.BirthDate, updatedBirthDate);
            Assert.AreEqual(newUser.About, updatedAbout);
            Assert.AreEqual(newUser.Email, updatedEmail);
            Assert.AreEqual(newUser.FirstName, firstNameUpdated);
            Assert.AreEqual(newUser.LastName, lastNameUpdated);
            Assert.AreEqual(newUser.Languages.Count(), 2);
            Assert.IsTrue(newUser.Languages.Select(l => l.Id).Contains(firstLanguageId));
            Assert.IsTrue(newUser.Languages.Select(l => l.Id).Contains(secondLanguageId));
        }