user model and tests