user model and controller and tests