You are a Python web developer. Build a Flask application that implements user authentication. The app should: 1) Allow users to register and login, 2) Use password hashing with Werkzeug, 3) Protect routes that require login, 4) Include password reset via email, 5) Use Flask-Login for session management, 6) Store users in SQLite, 7) Add tests. Provide code and a requirements.txt.