fix(calendar): thread raw credentials to caldav AsyncDAVClient
caldav 3.x lists niquests as a mandatory dependency and prefers it over httpx. Passing httpx.BasicAuth via the auth= argument breaks under the niquests backend with "Unexpected non-callable authentication" — see #731. Switch CalendarClient.__init__ from auth=Auth|None to keyword-only password/token, and forward them to AsyncDAVClient as password= plus an explicit auth_type ("basic" or "bearer"). caldav then builds whichever auth object its active backend needs (niquests.auth.HTTPBasicAuth or httpx.BasicAuth), so we stay backend-agnostic. Threaded raw credentials through NextcloudClient — added keyword-only password/token to its __init__, and updated from_env, from_token, and the four call sites that build NextcloudClient (context.py basic-auth and Login Flow paths, auth/userinfo_routes.py, vector/oauth_sync.py). Four new unit tests pin the construction wiring so the niquests regression can't recur silently — basic, bearer, no-creds, and password-precedence cases. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
4e669781ee
commit
2f1b0d2500
@@ -148,6 +148,7 @@ def _get_client_from_basic_auth(ctx: Context) -> NextcloudClient:
|
||||
base_url=settings.nextcloud_host,
|
||||
username=username,
|
||||
auth=BasicAuth(username, password),
|
||||
password=password,
|
||||
)
|
||||
|
||||
|
||||
@@ -196,4 +197,5 @@ async def _get_client_from_login_flow(
|
||||
base_url=nextcloud_host,
|
||||
username=username,
|
||||
auth=BasicAuth(username, app_data["app_password"]),
|
||||
password=app_data["app_password"],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user