Cleaning user implementation

- Adding unit test for User
- Refactoring providers: BaseProvider, UserProvider, DocumentProvider