Beispiel #1
0
        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);
        }