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); }
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)); }
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"); }