finished user model + tests