public async Task AccountProfileTestsAsync()
        {
            if (!EndToEndTestConfig.ShouldRunEndToEndTests)
            {
                return;
            }

            var initialProfile = await _protectedClient.Users.GetAuthenticatedUserAsync();

            // act
            var updatedProfileParameters = new UpdateProfileParameters
            {
                Name             = $"{initialProfile.Name}_42",
                Description      = "new_desc",
                Location         = "new_loc",
                WebsiteUrl       = "https://www.twitter.com/artwolkt",
                ProfileLinkColor = "F542B9"
            };

            var newProfile = await _protectedClient.AccountSettings.UpdateProfileAsync(updatedProfileParameters);

            var restoredProfileParameters = new UpdateProfileParameters
            {
                Name             = initialProfile.Name,
                Description      = initialProfile.Description,
                Location         = initialProfile.Location,
                WebsiteUrl       = initialProfile.Url,
                ProfileLinkColor = initialProfile.ProfileLinkColor
            };

            var restoredProfile = await _protectedClient.AccountSettings.UpdateProfileAsync(restoredProfileParameters);

            // assert
            Assert.Equal($"{initialProfile.Name}_42", newProfile.Name);
            Assert.NotEqual(initialProfile.Name, newProfile.Name);
            Assert.Equal(initialProfile.Name, restoredProfile.Name);

            Assert.Equal("new_desc", newProfile.Description);
            Assert.NotEqual(initialProfile.Description, updatedProfileParameters.Description);
            Assert.Equal(initialProfile.Description, restoredProfile.Description);

            Assert.Equal("new_loc", newProfile.Location);
            Assert.NotEqual(initialProfile.Location, newProfile.Location);
            Assert.Equal(initialProfile.Location, restoredProfile.Location);

            // cannot test url equality as twitter uses tiny url
            Assert.NotEqual(initialProfile.Url, newProfile.Url);
            Assert.Equal(initialProfile.Url, restoredProfile.Url);

            Assert.Equal("F542B9", newProfile.ProfileLinkColor);
            Assert.NotEqual(initialProfile.ProfileLinkColor, newProfile.ProfileLinkColor);
            Assert.Equal(initialProfile.ProfileLinkColor, restoredProfile.ProfileLinkColor);
        }
Beispiel #2
0
        public async Task <IActionResult> UpdateProfile(
            [FromRoute] string userName,
            [FromBody] UpdateProfileParameters parameters)
        {
            if (parameters == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(UnprocessableEntity(ModelState));
            }

            User user = await _identityBusiness.FindByNameAsync(userName);

            if (user == null)
            {
                return(NotFound());
            }

            User loggedOnUser = await _identityBusiness.GetUserAsync(User);

            if (user.Id != loggedOnUser.Id)
            {
                return(Forbid());
            }

            _mapper.Map(parameters, loggedOnUser);

            IdentityResult result = await _identityBusiness.UpdateAsync(loggedOnUser);

            if (!result.Succeeded)
            {
                foreach (IdentityError error in result.Errors)
                {
                    ModelState.AddModelError(error.Code, error.Description);
                }

                return(UnprocessableEntity(ModelState));
            }

            User updatedUser = await _identityBusiness.GetUserAsync(User);

            var profile = _mapper.Map <ProfileViewModel>(updatedUser);

            return(Ok(profile));
        }
Beispiel #3
0
        public async Task UpdateProfile_ReturnsFromQueryExecutor()
        {
            // Arrange
            var controller    = CreateAccountSettingsController();
            var parameters    = new UpdateProfileParameters();
            var request       = A.Fake <ITwitterRequest>();
            var twitterResult = A.Fake <ITwitterResult <IUserDTO> >();

            A.CallTo(() => _fakeAccountSettingsQueryExecutor.UpdateProfile(parameters, request)).Returns(twitterResult);

            // Act
            var result = await controller.UpdateProfile(parameters, request);

            // Assert
            Assert.Equal(result, twitterResult);
        }
        public async Task UpdateProfile_ReturnsAccountUserDTOAsync()
        {
            // Arrange
            var queryExecutor = CreateAccountSettingsQueryExecutor();
            var parameters    = new UpdateProfileParameters();

            var url            = TestHelper.GenerateString();
            var request        = A.Fake <ITwitterRequest>();
            var expectedResult = A.Fake <ITwitterResult <IUserDTO> >();

            A.CallTo(() => _fakeAccountSettingsQueryGenerator.GetUpdateProfileQuery(parameters)).Returns(url);
            A.CallTo(() => _fakeTwitterAccessor.ExecuteRequestAsync <IUserDTO>(request)).Returns(expectedResult);

            // Act
            var result = await queryExecutor.UpdateProfileAsync(parameters, request);

            // Assert
            Assert.Equal(result, expectedResult);
            Assert.Equal(request.Query.Url, url);
            Assert.Equal(HttpMethod.POST, request.Query.HttpMethod);
        }
        public void GetUpdateProfileQuery_ReturnsExpectedQuery()
        {
            // arrange
            var queryGenerator = CreateAccountSettingsQueryGenerator();
            var parameters     = new UpdateProfileParameters
            {
                Name                  = "name",
                WebsiteUrl            = "url",
                Location              = "loc",
                Description           = "desc",
                IncludeEntities       = true,
                SkipStatus            = true,
                ProfileLinkColor      = "blue",
                CustomQueryParameters = { new Tuple <string, string>("hello", "world") }
            };

            // act
            var result = queryGenerator.GetUpdateProfileQuery(parameters);

            // assert
            Assert.Equal(result, $"https://api.twitter.com/1.1/account/update_profile.json?name=name&url=url&location=loc&description=desc&profile_link_color=blue&include_entities=true&skip_status=true&hello=world");
        }