Add user sign up feature and unit tests