public HttpResponseMessage Update(UserUpdateData userUpdateData) { int authUserId = credentialsChecker.GetAuthUserId(HttpContext.Current); if (authUserId == -1) throw new HttpResponseException(HttpStatusCode.Unauthorized); if(userUpdateData==null) throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest)); //at least one param must be if ((userUpdateData.Email == null) && (userUpdateData.FirstName == null) && (userUpdateData.LastName == null)) throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest)); //update onky changed fields User user=repositoryUsers.GetSingleUser(authUserId); if (userUpdateData.Email != null) user.Email = userUpdateData.Email; if (userUpdateData.FirstName != null) user.FirstName = userUpdateData.FirstName; if (userUpdateData.LastName != null) user.LastName = userUpdateData.LastName; repositoryUsers.UpdateUser(user); return Request.CreateResponse(HttpStatusCode.OK); }
public void UpdateShuldCallRepositoryTest() { UserRepositorySpy spy_repository = new UserRepositorySpy(); CredentialsCheckerSpy_AlwaysPass spy_checker = new CredentialsCheckerSpy_AlwaysPass(); UsersController target = new UsersController(spy_repository, spy_checker); UserUpdateData userUpdateData = new UserUpdateData() { Email = "*****@*****.**", FirstName = "First name", LastName = "Last name" }; spy_repository.GetSingleUserResult = new User() { Id = 1, Login = "******" }; var config = new HttpConfiguration(); var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/1.0/users/update"); var route = config.Routes.MapHttpRoute("TestApi", "api/1.0/{controller}/{action}"); var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "users" }, { "action", "update" } }); target.ControllerContext = new HttpControllerContext(config, routeData, request); target.Request = request; target.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config; var actual = target.Update(userUpdateData); Assert.IsTrue (spy_repository.UpdateUserUser != null && spy_repository.UpdateUserUser.Email == userUpdateData.Email && spy_repository.UpdateUserUser.FirstName == userUpdateData.FirstName && spy_repository.UpdateUserUser.LastName == userUpdateData.LastName && spy_repository.UpdateUserUser.Id == 1); }