-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_report_20250906_002313.json
More file actions
66 lines (66 loc) · 291 KB
/
test_report_20250906_002313.json
File metadata and controls
66 lines (66 loc) · 291 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{
"summary": {
"total_tests": 8,
"passed": 1,
"failed": 7,
"success_rate": 12.5,
"start_time": "2025-09-06T00:20:14.241852",
"end_time": "2025-09-06T00:23:13.067564",
"duration": 178.825712
},
"tests": [
{
"test": "dependencies",
"success": false,
"output": "Traceback (most recent call last):\n File \"<string>\", line 1, in <module>\nModuleNotFoundError: No module named 'jwt'\n",
"duration": 0
},
{
"test": "database_migrations",
"success": true,
"output": "Database connection successful\n",
"duration": 0
},
{
"test": "unit_tests",
"success": false,
"output": "============================= test session starts ==============================\nplatform linux -- Python 3.12.3, pytest-7.4.0, pluggy-1.6.0\nrootdir: /home/husni/project-permit-api\nconfigfile: pytest.ini\nplugins: anyio-4.10.0\ncollected 76 items\n\ntests/quick_test.py s. [ 2%]\ntests/test_api.py .............. [ 21%]\ntests/test_auth.py FFFF.FFFFFFF [ 36%]\ntests/test_cevs.py ......... [ 48%]\ntests/test_global_routes.py sssssssssssssss [ 68%]\ntests/test_permits.py .. [ 71%]\ntests/test_search_params.py .... [ 76%]\ntests/test_search_permits.py .... [ 81%]\ntests/test_search_single_param.py . [ 82%]\ntests/test_security.py FFF.FF.FF.F.F [100%]\n\n=================================== FAILURES ===================================\n____________________________ test_user_registration ____________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:22: in test_user_registration\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('test_8832c15b-f826-4024-9064-07912e843c00@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:22,390 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n_______________________________ test_user_login ________________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:40: in test_user_login\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('login_test_2fbcb369-6a1d-4bb2-98c6-30a9adc806eb@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:24,213 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n______________________________ test_invalid_login ______________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:64: in test_invalid_login\n response = client.post(\"/auth/login\", json=login_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:117: in login\n user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('nonexistent@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:25,770 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n___________________________ test_password_validation ___________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:76: in test_password_validation\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('weak_pass_71d16fea-81b5-4b96-8a37-bd6a89d370a3@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:26,817 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n______________________ test_duplicate_email_registration _______________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:102: in test_duplicate_email_registration\n response1 = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('duplicate_87ad624f-fdc1-4782-a666-ec3d2aad7bee@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:27,946 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n______________________________ test_token_refresh ______________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:124: in test_token_refresh\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('refresh_test_8d95d962-c1ec-498f-b5ba-51f89f1955f8@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:29,242 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n_________________________ test_protected_route_access __________________________\ntests/test_auth.py:142: in test_protected_route_access\n assert response.status_code == 401\nE assert 403 == 401\nE + where 403 = <Response [403 Forbidden]>.status_code\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:30,467 - asyncio - DEBUG - Using selector: EpollSelector\n2025-09-06 00:20:30,471 - httpx - INFO - HTTP Request: GET http://testserver/user/profile \"HTTP/1.1 403 Forbidden\"\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\nINFO httpx:_client.py:1026 HTTP Request: GET http://testserver/user/profile \"HTTP/1.1 403 Forbidden\"\n______________________________ test_rate_limiting ______________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:165: in test_rate_limiting\n response = client.post(\"/auth/login\", json={\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:117: in login\n user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('test@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:30,482 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n___________________________ test_password_reset_flow ___________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:183: in test_password_reset_flow\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('reset_test_6f955cac-b686-45a2-9676-5623596f767a@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:31,564 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n___________________________ test_input_sanitization ____________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:201: in test_input_sanitization\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('sanitization_test_4ce1f91e-f11c-4287-a17f-0cb40481471d@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:32,549 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n_________________________________ test_logout __________________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:214: in test_logout\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('logout_test_ccf2228e-c81a-4943-8191-b72b50a9c658@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:20:33,714 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n____________________________ test_security_headers _____________________________\ntests/test_security.py:13: in test_security_headers\n assert \"X-XSS-Protection\" in response.headers\nE AssertionError: assert 'X-XSS-Protection' in Headers({'content-length': '380', 'content-type': 'application/json'})\nE + where Headers({'content-length': '380', 'content-type': 'application/json'}) = <Response [200 OK]>.headers\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:03,981 - asyncio - DEBUG - Using selector: EpollSelector\n2025-09-06 00:22:03,985 - httpx - INFO - HTTP Request: GET http://testserver/health \"HTTP/1.1 200 OK\"\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\nINFO httpx:_client.py:1026 HTTP Request: GET http://testserver/health \"HTTP/1.1 200 OK\"\n______________________________ test_cors_headers _______________________________\ntests/test_security.py:26: in test_cors_headers\n assert \"access-control-allow-origin\" in response.headers\nE AssertionError: assert 'access-control-allow-origin' in Headers({'vary': 'Origin', 'access-control-allow-methods': 'DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT', 'access-con...ith', 'access-control-allow-credentials': 'true', 'content-length': '22', 'content-type': 'text/plain; charset=utf-8'})\nE + where Headers({'vary': 'Origin', 'access-control-allow-methods': 'DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT', 'access-con...ith', 'access-control-allow-credentials': 'true', 'content-length': '22', 'content-type': 'text/plain; charset=utf-8'}) = <Response [400 Bad Request]>.headers\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:03,995 - asyncio - DEBUG - Using selector: EpollSelector\n2025-09-06 00:22:03,998 - httpx - INFO - HTTP Request: OPTIONS http://testserver/health \"HTTP/1.1 400 Bad Request\"\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\nINFO httpx:_client.py:1026 HTTP Request: OPTIONS http://testserver/health \"HTTP/1.1 400 Bad Request\"\n_____________________________ test_xss_protection ______________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:42: in test_xss_protection\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('xss_test_c6bede8a-76e6-4d33-89c3-3aad4e098348@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:04,007 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n_____________________________ test_csrf_protection _____________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:82: in test_csrf_protection\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('csrf_test_f8b9293f-150e-4f52-9421-04581c34fbdd@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:05,096 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n__________________________ test_rate_limit_protection __________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:91: in test_rate_limit_protection\n response = client.post(\"/auth/login\", json={\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:117: in login\n user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('test@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:06,185 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n___________________________ test_password_complexity ___________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:138: in test_password_complexity\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('weak_09b90361-07ad-4b4a-a8b5-dc601409cf4f@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:08,002 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n___________________________ test_jwt_token_security ____________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:151: in test_jwt_token_security\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('jwt_test_9516a723-8234-48d8-b5dc-52e1e14444f5@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:10,251 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n____________________________ test_session_security _____________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:192: in test_session_security\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('session_test_2bc93b7a-320c-4702-8cb2-bd4877dc1d8b@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:23,838 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n_________________________ test_content_security_policy _________________________\ntests/test_security.py:219: in test_content_security_policy\n assert csp_header is not None\nE assert None is not None\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:25,127 - asyncio - DEBUG - Using selector: EpollSelector\n2025-09-06 00:22:25,131 - httpx - INFO - HTTP Request: GET http://testserver/health \"HTTP/1.1 200 OK\"\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\nINFO httpx:_client.py:1026 HTTP Request: GET http://testserver/health \"HTTP/1.1 200 OK\"\n=============================== warnings summary ===============================\nvenv/lib/python3.12/site-packages/pydantic/_internal/_config.py:323\n /home/husni/project-permit-api/venv/lib/python3.12/site-packages/pydantic/_internal/_config.py:323: PydanticDeprecatedSince20: Support for class-based `config` is deprecated, use ConfigDict instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.11/migration/\n warnings.warn(DEPRECATION_MESSAGE, DeprecationWarning)\n\nvenv/lib/python3.12/site-packages/passlib/utils/__init__.py:854\n /home/husni/project-permit-api/venv/lib/python3.12/site-packages/passlib/utils/__init__.py:854: DeprecationWarning: 'crypt' is deprecated and slated for removal in Python 3.13\n from crypt import crypt as _crypt\n\napp/models/user.py:8\n /home/husni/project-permit-api/app/models/user.py:8: MovedIn20Warning: The ``declarative_base()`` function is now available as sqlalchemy.orm.declarative_base(). (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)\n Base = declarative_base()\n\napp/api_server.py:231\n /home/husni/project-permit-api/app/api_server.py:231: DeprecationWarning: \n on_event is deprecated, use lifespan event handlers instead.\n \n Read more about it in the\n [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).\n \n @app.on_event(\"startup\")\n\nvenv/lib/python3.12/site-packages/fastapi/applications.py:4495\n /home/husni/project-permit-api/venv/lib/python3.12/site-packages/fastapi/applications.py:4495: DeprecationWarning: \n on_event is deprecated, use lifespan event handlers instead.\n \n Read more about it in the\n [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).\n \n return self.router.on_event(event_type)\n\ntests/test_cevs.py: 20 warnings\n /home/husni/project-permit-api/venv/lib/python3.12/site-packages/openpyxl/packaging/core.py:99: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).\n now = datetime.datetime.utcnow()\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n=========================== short test summary info ============================\nFAILED tests/test_auth.py::test_user_registration - sqlalchemy.exc.Operationa...\nFAILED tests/test_auth.py::test_user_login - sqlalchemy.exc.OperationalError:...\nFAILED tests/test_auth.py::test_invalid_login - sqlalchemy.exc.OperationalErr...\nFAILED tests/test_auth.py::test_password_validation - sqlalchemy.exc.Operatio...\nFAILED tests/test_auth.py::test_duplicate_email_registration - sqlalchemy.exc...\nFAILED tests/test_auth.py::test_token_refresh - sqlalchemy.exc.OperationalErr...\nFAILED tests/test_auth.py::test_protected_route_access - assert 403 == 401\nFAILED tests/test_auth.py::test_rate_limiting - sqlalchemy.exc.OperationalErr...\nFAILED tests/test_auth.py::test_password_reset_flow - sqlalchemy.exc.Operatio...\nFAILED tests/test_auth.py::test_input_sanitization - sqlalchemy.exc.Operation...\nFAILED tests/test_auth.py::test_logout - sqlalchemy.exc.OperationalError: (sq...\nFAILED tests/test_security.py::test_security_headers - AssertionError: assert...\nFAILED tests/test_security.py::test_cors_headers - AssertionError: assert 'ac...\nFAILED tests/test_security.py::test_xss_protection - sqlalchemy.exc.Operation...\nFAILED tests/test_security.py::test_csrf_protection - sqlalchemy.exc.Operatio...\nFAILED tests/test_security.py::test_rate_limit_protection - sqlalchemy.exc.Op...\nFAILED tests/test_security.py::test_password_complexity - sqlalchemy.exc.Oper...\nFAILED tests/test_security.py::test_jwt_token_security - sqlalchemy.exc.Opera...\nFAILED tests/test_security.py::test_session_security - sqlalchemy.exc.Operati...\nFAILED tests/test_security.py::test_content_security_policy - assert None is ...\n====== 20 failed, 40 passed, 16 skipped, 25 warnings in 128.04s (0:02:08) ======\n",
"duration": 0
},
{
"test": "auth_tests",
"success": false,
"output": "============================= test session starts ==============================\nplatform linux -- Python 3.12.3, pytest-7.4.0, pluggy-1.6.0\nrootdir: /home/husni/project-permit-api\nconfigfile: pytest.ini\nplugins: anyio-4.10.0\ncollected 12 items\n\ntests/test_auth.py FFFF.FFFFFFF [100%]\n\n=================================== FAILURES ===================================\n____________________________ test_user_registration ____________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:22: in test_user_registration\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('test_5734147d-773f-46e7-ad36-882989883699@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:29,422 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n_______________________________ test_user_login ________________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:40: in test_user_login\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('login_test_267412b1-846a-489c-b6e9-cc7b4ba0d508@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:31,033 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n______________________________ test_invalid_login ______________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:64: in test_invalid_login\n response = client.post(\"/auth/login\", json=login_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:117: in login\n user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('nonexistent@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:32,056 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n___________________________ test_password_validation ___________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:76: in test_password_validation\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('weak_pass_87b4bfaa-03af-4f6a-9624-86cb8f242247@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:33,111 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n______________________ test_duplicate_email_registration _______________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:102: in test_duplicate_email_registration\n response1 = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('duplicate_aca451f3-ca78-4075-913e-e677048c1bce@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:34,087 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n______________________________ test_token_refresh ______________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:124: in test_token_refresh\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('refresh_test_6e1d49aa-1e42-4483-bc83-0d293759724c@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:35,039 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n_________________________ test_protected_route_access __________________________\ntests/test_auth.py:142: in test_protected_route_access\n assert response.status_code == 401\nE assert 403 == 401\nE + where 403 = <Response [403 Forbidden]>.status_code\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:36,247 - asyncio - DEBUG - Using selector: EpollSelector\n2025-09-06 00:22:36,251 - httpx - INFO - HTTP Request: GET http://testserver/user/profile \"HTTP/1.1 403 Forbidden\"\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\nINFO httpx:_client.py:1026 HTTP Request: GET http://testserver/user/profile \"HTTP/1.1 403 Forbidden\"\n______________________________ test_rate_limiting ______________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:165: in test_rate_limiting\n response = client.post(\"/auth/login\", json={\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:117: in login\n user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('test@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:36,261 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n___________________________ test_password_reset_flow ___________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:183: in test_password_reset_flow\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('reset_test_97dd9843-779c-43ca-9fd4-b422223a217a@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:37,320 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n___________________________ test_input_sanitization ____________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:201: in test_input_sanitization\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('sanitization_test_407b29df-3463-4189-b4eb-0c1f47e9bf17@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:38,236 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n_________________________________ test_logout __________________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_auth.py:214: in test_logout\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('logout_test_eac2b323-f182-446a-a4af-e9e371a3cc72@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:39,199 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n=============================== warnings summary ===============================\nvenv/lib/python3.12/site-packages/passlib/utils/__init__.py:854\n /home/husni/project-permit-api/venv/lib/python3.12/site-packages/passlib/utils/__init__.py:854: DeprecationWarning: 'crypt' is deprecated and slated for removal in Python 3.13\n from crypt import crypt as _crypt\n\napp/models/user.py:8\n /home/husni/project-permit-api/app/models/user.py:8: MovedIn20Warning: The ``declarative_base()`` function is now available as sqlalchemy.orm.declarative_base(). (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)\n Base = declarative_base()\n\napp/api_server.py:231\n /home/husni/project-permit-api/app/api_server.py:231: DeprecationWarning: \n on_event is deprecated, use lifespan event handlers instead.\n \n Read more about it in the\n [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).\n \n @app.on_event(\"startup\")\n\nvenv/lib/python3.12/site-packages/fastapi/applications.py:4495\n /home/husni/project-permit-api/venv/lib/python3.12/site-packages/fastapi/applications.py:4495: DeprecationWarning: \n on_event is deprecated, use lifespan event handlers instead.\n \n Read more about it in the\n [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).\n \n return self.router.on_event(event_type)\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n=========================== short test summary info ============================\nFAILED tests/test_auth.py::test_user_registration - sqlalchemy.exc.Operationa...\nFAILED tests/test_auth.py::test_user_login - sqlalchemy.exc.OperationalError:...\nFAILED tests/test_auth.py::test_invalid_login - sqlalchemy.exc.OperationalErr...\nFAILED tests/test_auth.py::test_password_validation - sqlalchemy.exc.Operatio...\nFAILED tests/test_auth.py::test_duplicate_email_registration - sqlalchemy.exc...\nFAILED tests/test_auth.py::test_token_refresh - sqlalchemy.exc.OperationalErr...\nFAILED tests/test_auth.py::test_protected_route_access - assert 403 == 401\nFAILED tests/test_auth.py::test_rate_limiting - sqlalchemy.exc.OperationalErr...\nFAILED tests/test_auth.py::test_password_reset_flow - sqlalchemy.exc.Operatio...\nFAILED tests/test_auth.py::test_input_sanitization - sqlalchemy.exc.Operation...\nFAILED tests/test_auth.py::test_logout - sqlalchemy.exc.OperationalError: (sq...\n================== 11 failed, 1 passed, 4 warnings in 13.68s ===================\n",
"duration": 0
},
{
"test": "security_tests",
"success": false,
"output": "============================= test session starts ==============================\nplatform linux -- Python 3.12.3, pytest-7.4.0, pluggy-1.6.0\nrootdir: /home/husni/project-permit-api\nconfigfile: pytest.ini\nplugins: anyio-4.10.0\ncollected 13 items\n\ntests/test_security.py FFF.FF.FF.F.F [100%]\n\n=================================== FAILURES ===================================\n____________________________ test_security_headers _____________________________\ntests/test_security.py:13: in test_security_headers\n assert \"X-XSS-Protection\" in response.headers\nE AssertionError: assert 'X-XSS-Protection' in Headers({'content-length': '380', 'content-type': 'application/json'})\nE + where Headers({'content-length': '380', 'content-type': 'application/json'}) = <Response [200 OK]>.headers\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:44,129 - asyncio - DEBUG - Using selector: EpollSelector\n2025-09-06 00:22:44,136 - httpx - INFO - HTTP Request: GET http://testserver/health \"HTTP/1.1 200 OK\"\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\nINFO httpx:_client.py:1026 HTTP Request: GET http://testserver/health \"HTTP/1.1 200 OK\"\n______________________________ test_cors_headers _______________________________\ntests/test_security.py:26: in test_cors_headers\n assert \"access-control-allow-origin\" in response.headers\nE AssertionError: assert 'access-control-allow-origin' in Headers({'vary': 'Origin', 'access-control-allow-methods': 'DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT', 'access-con...ith', 'access-control-allow-credentials': 'true', 'content-length': '22', 'content-type': 'text/plain; charset=utf-8'})\nE + where Headers({'vary': 'Origin', 'access-control-allow-methods': 'DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT', 'access-con...ith', 'access-control-allow-credentials': 'true', 'content-length': '22', 'content-type': 'text/plain; charset=utf-8'}) = <Response [400 Bad Request]>.headers\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:44,390 - asyncio - DEBUG - Using selector: EpollSelector\n2025-09-06 00:22:44,395 - httpx - INFO - HTTP Request: OPTIONS http://testserver/health \"HTTP/1.1 400 Bad Request\"\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\nINFO httpx:_client.py:1026 HTTP Request: OPTIONS http://testserver/health \"HTTP/1.1 400 Bad Request\"\n_____________________________ test_xss_protection ______________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:42: in test_xss_protection\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('xss_test_4c7e85ad-3858-437a-9770-804a6758f5a5@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:44,499 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n_____________________________ test_csrf_protection _____________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:82: in test_csrf_protection\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('csrf_test_afed9d14-8978-457e-8bc2-f90f7000b79f@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:45,725 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n__________________________ test_rate_limit_protection __________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:91: in test_rate_limit_protection\n response = client.post(\"/auth/login\", json={\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:117: in login\n user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('test@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:46,793 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n___________________________ test_password_complexity ___________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:138: in test_password_complexity\n response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('weak_fb2a116f-3a2a-49a4-94fa-5d7aa2bd4094@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:47,771 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n___________________________ test_jwt_token_security ____________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:151: in test_jwt_token_security\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('jwt_test_e22bf940-1ff4-4551-b6c5-77f8e2abf30c@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:22:48,725 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n____________________________ test_session_security _____________________________\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlite3.OperationalError: no such column: users.avatar_url\n\nThe above exception was the direct cause of the following exception:\ntests/test_security.py:192: in test_session_security\n register_response = client.post(\"/auth/register\", json=user_data)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:552: in post\n return super().post(\nvenv/lib/python3.12/site-packages/httpx/_client.py:1145: in post\n return self.request(\nvenv/lib/python3.12/site-packages/starlette/testclient.py:451: in request\n return super().request(\nvenv/lib/python3.12/site-packages/httpx/_client.py:827: in request\n return self.send(request, auth=auth, follow_redirects=follow_redirects)\nvenv/lib/python3.12/site-packages/httpx/_client.py:914: in send\n response = self._send_handling_auth(\nvenv/lib/python3.12/site-packages/httpx/_client.py:942: in _send_handling_auth\n response = self._send_handling_redirects(\nvenv/lib/python3.12/site-packages/httpx/_client.py:979: in _send_handling_redirects\n response = self._send_single_request(request)\nvenv/lib/python3.12/site-packages/httpx/_client.py:1015: in _send_single_request\n response = transport.handle_request(request)\nvenv/lib/python3.12/site-packages/starlette/testclient.py:354: in handle_request\n raise exc\nvenv/lib/python3.12/site-packages/starlette/testclient.py:351: in handle_request\n portal.call(self.app, scope, receive, send)\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:291: in call\n return cast(T_Retval, self.start_task_soon(func, *args).result())\n/usr/lib/python3.12/concurrent/futures/_base.py:456: in result\n return self.__get_result()\n/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result\n raise self._exception\nvenv/lib/python3.12/site-packages/anyio/from_thread.py:222: in _call_func\n retval = await retval_or_awaitable\nvenv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:186: in __call__\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/errors.py:164: in __call__\n await self.app(scope, receive, _send)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:182: in __call__\n with recv_stream, send_stream, collapse_excgroups():\n/usr/lib/python3.12/contextlib.py:158: in __exit__\n self.gen.throw(value)\nvenv/lib/python3.12/site-packages/starlette/_utils.py:85: in collapse_excgroups\n raise exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:184: in __call__\n response = await self.dispatch_func(request, call_next)\napp/utils/security_middleware.py:40: in dispatch\n response = await call_next(request)\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:159: in call_next\n raise app_exc\nvenv/lib/python3.12/site-packages/starlette/middleware/base.py:144: in coro\n await self.app(scope, receive_or_disconnect, send_no_error)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:29: in __call__\n await responder(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:130: in __call__\n await super().__call__(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/gzip.py:46: in __call__\n await self.app(scope, receive, self.send_with_compression)\nvenv/lib/python3.12/site-packages/starlette/middleware/cors.py:85: in __call__\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:63: in __call__\n await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:716: in __call__\n await self.middleware_stack(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:736: in app\n await route.handle(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:290: in handle\n await self.app(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/routing.py:78: in app\n await wrap_app_handling_exceptions(app, request)(scope, receive, send)\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app\n raise exc\nvenv/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app\n await app(scope, receive, sender)\nvenv/lib/python3.12/site-packages/starlette/routing.py:75: in app\n response = await f(request)\nvenv/lib/python3.12/site-packages/fastapi/routing.py:302: in app\n raw_response = await run_endpoint_function(\nvenv/lib/python3.12/site-packages/fastapi/routing.py:213: in run_endpoint_function\n return await dependant.call(**values)\napp/routes/auth.py:66: in register\n existing_user = db.query(User).filter(User.email == user_data.email).first()\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2759: in first\n return self.limit(1)._iter().first() # type: ignore\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/query.py:2857: in _iter\n result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2365: in execute\n return self._execute_internal(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2251: in _execute_internal\n result: Result[Any] = compile_state_cls.orm_execute_statement(\nvenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py:306: in orm_execute_statement\n result = conn.execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1419: in execute\n return meth(\nvenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:526: in _execute_on_connection\n return connection._execute_clauseelement(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1641: in _execute_clauseelement\n ret = self._execute_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context\n return self._exec_single_context(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context\n self._handle_dbapi_exception(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception\n raise sqlalchemy_exception.with_traceback(exc_info[2]) from e\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context\n self.dialect.do_execute(\nvenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:951: in do_execute\n cursor.execute(statement, parameters)\nE sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: users.avatar_url\nE [SQL: SELECT users.id AS users_id, users.email AS users_email, users.password_hash AS users_password_hash, users.name AS users_name, users.company AS users_company, users.job_title AS users_job_title, users.avatar_url AS users_avatar_url, users.timezone AS users_timezone, users.email_verified AS users_email_verified, users.email_verification_token AS users_email_verification_token, users.email_verification_expires AS users_email_verification_expires, users.password_reset_token AS users_password_reset_token, users.password_reset_expires AS users_password_reset_expires, users.last_login AS users_last_login, users.two_factor_secret AS users_two_factor_secret, users.two_factor_enabled AS users_two_factor_enabled, users.created_at AS users_created_at, users.updated_at AS users_updated_at \nE FROM users \nE WHERE users.email = ?\nE LIMIT ? OFFSET ?]\nE [parameters: ('session_test_7aaa5ce8-3b4f-4fd8-ad3f-b500fa5cd01f@example.com', 1, 0)]\nE (Background on this error at: https://sqlalche.me/e/20/e3q8)\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:23:09,798 - asyncio - DEBUG - Using selector: EpollSelector\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\n_________________________ test_content_security_policy _________________________\ntests/test_security.py:219: in test_content_security_policy\n assert csp_header is not None\nE assert None is not None\n----------------------------- Captured stderr call -----------------------------\n2025-09-06 00:23:11,127 - asyncio - DEBUG - Using selector: EpollSelector\n2025-09-06 00:23:11,131 - httpx - INFO - HTTP Request: GET http://testserver/health \"HTTP/1.1 200 OK\"\n------------------------------ Captured log call -------------------------------\nDEBUG asyncio:selector_events.py:64 Using selector: EpollSelector\nINFO httpx:_client.py:1026 HTTP Request: GET http://testserver/health \"HTTP/1.1 200 OK\"\n=============================== warnings summary ===============================\nvenv/lib/python3.12/site-packages/passlib/utils/__init__.py:854\n /home/husni/project-permit-api/venv/lib/python3.12/site-packages/passlib/utils/__init__.py:854: DeprecationWarning: 'crypt' is deprecated and slated for removal in Python 3.13\n from crypt import crypt as _crypt\n\napp/models/user.py:8\n /home/husni/project-permit-api/app/models/user.py:8: MovedIn20Warning: The ``declarative_base()`` function is now available as sqlalchemy.orm.declarative_base(). (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)\n Base = declarative_base()\n\napp/api_server.py:231\n /home/husni/project-permit-api/app/api_server.py:231: DeprecationWarning: \n on_event is deprecated, use lifespan event handlers instead.\n \n Read more about it in the\n [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).\n \n @app.on_event(\"startup\")\n\nvenv/lib/python3.12/site-packages/fastapi/applications.py:4495\n /home/husni/project-permit-api/venv/lib/python3.12/site-packages/fastapi/applications.py:4495: DeprecationWarning: \n on_event is deprecated, use lifespan event handlers instead.\n \n Read more about it in the\n [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).\n \n return self.router.on_event(event_type)\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n=========================== short test summary info ============================\nFAILED tests/test_security.py::test_security_headers - AssertionError: assert...\nFAILED tests/test_security.py::test_cors_headers - AssertionError: assert 'ac...\nFAILED tests/test_security.py::test_xss_protection - sqlalchemy.exc.Operation...\nFAILED tests/test_security.py::test_csrf_protection - sqlalchemy.exc.Operatio...\nFAILED tests/test_security.py::test_rate_limit_protection - sqlalchemy.exc.Op...\nFAILED tests/test_security.py::test_password_complexity - sqlalchemy.exc.Oper...\nFAILED tests/test_security.py::test_jwt_token_security - sqlalchemy.exc.Opera...\nFAILED tests/test_security.py::test_session_security - sqlalchemy.exc.Operati...\nFAILED tests/test_security.py::test_content_security_policy - assert None is ...\n=================== 9 failed, 4 passed, 4 warnings in 29.68s ===================\n",
"duration": 0
},
{
"test": "api_integration",
"success": false,
"output": "HTTPConnectionPool(host='localhost', port=8000): Max retries exceeded with url: /health (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x77e5f48da270>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"duration": 0
},
{
"test": "load_performance",
"success": false,
"output": "Traceback (most recent call last):\n File \"/home/husni/project-permit-api/scripts/load_test_auth.py\", line 8, in <module>\n import aiohttp\nModuleNotFoundError: No module named 'aiohttp'\n",
"duration": 0
},
{
"test": "security_scan",
"success": false,
"output": "Potential sensitive data in .env",
"duration": 0
}
],
"recommendations": [
"Review failed tests and fix issues before deployment",
"Address security scan findings",
"Investigate performance issues"
]
}