public async Task ShouldUpdateUser() { // Arrange var userIdentifier = Guid.NewGuid().ToString(); const string userName = "******"; var payload = new UserControllerRootPut { UserIdentifier = userIdentifier, UserName = userName }; // Prepare PUT Request var getUserRequest = new HttpRequestMessage(HttpMethod.Put, "api/User") { Content = Shared.FormatContent <UserControllerRootPut>(payload) }; // Act // Create User first await Shared.CreateUser(Client, payload); // Update User var updateUserResponse = await Client.SendAsync(getUserRequest); // Get User var getUserResponse = await Shared.GetUser(Client, payload); // Assert var user = JsonConvert.DeserializeObject <User>(await getUserResponse.Content.ReadAsStringAsync()); Assert.Equal(HttpStatusCode.OK, updateUserResponse.StatusCode); Assert.Equal(user.UserIdentifier, payload.UserIdentifier); Assert.Equal(userName, user.UserName); }
public ActionResult Put([FromBody] UserControllerRootPut payload) { // Check if payload is present if (payload == null) { return(BadRequest("UserController (POST) - Missing payload.")); } try { _userService.UpdateUser(payload); return(Ok()); } catch (JsonSerializationException e) { // Return 422 if we can't parse the payload as JSON return(UnprocessableEntity(e.Message)); } catch (InvalidDataException e) { // Return 400 if the payload doesn't contain any user identifier return(BadRequest(e.Message)); } catch (NoNullAllowedException e) { // Return 400 if no updates were performed return(BadRequest(e.Message)); } catch (KeyNotFoundException e) { // Return 404 if we couldn't find the user we wanted to update return(NotFound(e.Message)); } catch (InvalidOperationException e) { // Return 409 if more than one update was performed return(Conflict(e.Message)); } catch (Exception e) { // Return 500 if any other exception occurred return(Problem(e.Message, e.Source, 500, "UserController (PUT)", e.GetType().ToString())); } }
public void UpdateUser(UserControllerRootPut payload) { // Validate Payload DataValidator.ValidateField(nameof(payload.UserIdentifier), payload.UserIdentifier); DataValidator.ValidateGuid(payload.UserIdentifier); DataValidator.ValidateField(nameof(payload.UserIdentifier), payload.UserName); // Update User var updateResult = _storageService.UpdateUser(payload.UserIdentifier, payload.UserName); // Check Update Result if (updateResult.ModifiedCount == 0) { throw new NoNullAllowedException("UserService (UpdateUser) - No updates were performed."); } if (updateResult.ModifiedCount > 1) { throw new InvalidOperationException("UserService (UpdateUser) - More than one user was updated."); } }