Improve User validation, add tests and factories