basic user model with validations and tests