Chris Coutinho
2f1bd1bbe9
test: Move client integration tests to mocked unit tests
2025-10-24 05:50:25 +02:00
Chris Coutinho
d452684535
feat: Split read/write scopes into app:read/write scopes
2025-10-24 04:38:49 +02:00
Chris Coutinho
d55e5708c7
ci: fix imports
2025-10-24 01:04:30 +02:00
Chris Coutinho
d4ee5a74c2
test: Update default tokens to JWT, add to introspection tests
2025-10-24 00:51:50 +02:00
Chris Coutinho
261749fcdc
ci: Update oidc app
2025-10-23 22:45:22 +02:00
Chris Coutinho
bdb0e17401
chore: Add logging to token introspection
2025-10-23 21:18:14 +02:00
Chris Coutinho
a93e7a1e3b
build: Update submodule
2025-10-23 16:56:18 +02:00
Chris Coutinho
f2d2dd8068
feat: Enable token introspection for opaque tokens
2025-10-23 15:51:27 +02:00
Chris Coutinho
d915efd3f6
docs: Update jwt docs [skip ci]
2025-10-23 15:26:51 +02:00
Chris Coutinho
053cf7798b
fix: Add CORS middleware to allow browser-based clients like MCP Inspector
2025-10-23 15:23:41 +02:00
Chris Coutinho
1a7ce5b7a7
docs: Update jwt docs [skip ci]
2025-10-23 12:22:34 +02:00
Chris Coutinho
737780b417
chore: Make all env vars available to be overriden as cli options
2025-10-23 11:48:01 +02:00
Chris Coutinho
b4039e2e40
docs: Update jwt docs
2025-10-23 11:20:49 +02:00
Chris Coutinho
54e975198f
test: Update all test network hosts to respect iss claims from JWTs
2025-10-23 11:09:51 +02:00
Chris Coutinho
e9a16c43b5
refactor: Update JWT client to use DCR, re-enable tool filtering
2025-10-23 09:33:06 +02:00
Chris Coutinho
e48f5f3f30
feat(server): Add support for custom OIDC scopes and permissions via JWTs
2025-10-23 08:37:36 +02:00
Chris Coutinho
3ebc468a09
ci: Tasks has been updated, no longer a debug app
2025-10-23 07:53:52 +02:00
Chris Coutinho and Claude
1aecb099e6
fix: Use occ-created OAuth clients with allowed_scopes for all tests
...
The shared_oauth_client_credentials fixture was using Dynamic Client
Registration which doesn't support Nextcloud's allowed_scopes parameter.
This caused tokens to lack proper scope configuration, resulting in empty
tool lists when the server validated scopes.
Changes:
1. Updated shared_oauth_client_credentials to use occ oidc:create with
allowed_scopes="openid profile email nc:read nc:write"
2. Created opaque token client (not JWT) for port 8001 compatibility
3. Enhanced _create_oauth_client_with_scopes to support both JWT and
opaque token types via token_type parameter
This ensures:
- Regular OAuth tests (port 8001) get opaque tokens with proper scopes
- JWT OAuth tests (port 8002) get JWT tokens with embedded scopes
- Both token types have allowed_scopes configured on the OAuth client
Fixes test_mcp_oauth_server_connection which was getting empty tool list
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-10-22 07:38:16 +02:00
Chris Coutinho
2c35e07675
fix: Separate OAuth fixtures for opaque vs JWT tokens
...
Previous fix created a JWT OAuth client for all tests, which broke the
regular OAuth server (port 8001) that expects opaque tokens.
This commit:
1. Reverts shared_oauth_client_credentials to use regular OAuth (opaque tokens)
2. Creates new shared_jwt_oauth_client_credentials for JWT OAuth clients
3. Creates new playwright_oauth_token_jwt fixture using JWT credentials
4. Updates nc_mcp_oauth_jwt_client to use JWT token fixture
This ensures:
- Regular OAuth tests (port 8001) use opaque tokens
- JWT OAuth tests (port 8002) use JWT tokens with embedded scopes
Fixes remaining CI failure in test_mcp_oauth_server_connection
2025-10-22 07:17:43 +02:00
Chris Coutinho
5cfdff0faf
test: Create JWT OAuth client with explicit scopes for shared test fixture
...
The shared_oauth_client_credentials fixture was creating an OAuth client
without explicit allowed_scopes configuration. This caused JWT tokens to
lack nc:read and nc:write scope claims, resulting in the JWT MCP server
filtering out ALL tools when list_tools() was called.
Changed the fixture to use _create_oauth_client_with_scopes() helper to
create a JWT client with explicit allowed_scopes="openid profile email
nc:read nc:write", matching the scopes requested in the authorization
URL and the behavior of other scoped test fixtures.
This fixes CI test failures in:
- test_mcp_oauth.py::test_mcp_oauth_server_connection
- test_mcp_oauth_jwt.py::test_jwt_mcp_server_connection
- test_mcp_oauth_jwt.py::test_jwt_tool_list_operations
- test_mcp_oauth_jwt.py::test_jwt_automation_worked
All were failing with: assert len(result.tools) > 0 (result.tools was empty)
2025-10-22 07:02:40 +02:00
Chris Coutinho
894723c525
ci: Add missing files
2025-10-22 06:40:11 +02:00
Chris Coutinho
8a3269f366
test: Use separate docker compose command
2025-10-22 06:38:05 +02:00
Chris Coutinho
c069d78f80
feat: Initialize JWT-scoped tools
2025-10-22 06:21:16 +02:00
Chris Coutinho
7f5828390c
docs: Update README
2025-10-21 11:47:01 +02:00
Chris Coutinho
8ad1937347
docs: Update README
2025-10-21 11:26:11 +02:00
Chris Coutinho
a5a4e809c4
ci: Add smoke test during release
2025-10-20 23:39:47 +02:00
Chris Coutinho
48744e8a6c
ci: Publish to PyPI
2025-10-20 23:14:12 +02:00
Chris Coutinho
63b898c0e3
chore: Update logs
2025-10-20 22:57:18 +02:00
Chris Coutinho
e8f1340133
fix(caldav): Fix caldav search() due to missing todos
2025-10-20 22:18:46 +02:00
Chris Coutinho
fde68dac55
ci: Enable publish to test pypi
2025-10-20 20:27:01 +02:00
Chris Coutinho
460e2e190c
ci: set workflow to be on workflow_dispatch
2025-10-20 20:22:07 +02:00
Chris Coutinho
989b6de3c0
build: Switch to uv build backend
2025-10-20 20:10:57 +02:00
Chris Coutinho
aa0b6dc5dd
docs: Update docs
2025-10-20 19:10:23 +02:00
Chris Coutinho
71f09a47ca
docs: Update CalendarClient docstrings [skip ci]
2025-10-20 00:54:35 +02:00
Chris Coutinho
f4dd68735c
test: Fix how categories are handled in calendar
2025-10-20 00:04:38 +02:00
Chris Coutinho
c75f0c0a17
test: Revert creation
2025-10-19 23:59:07 +02:00
Chris Coutinho
a143123acc
fix(caldav): Check that calendar exists after creation to avoid race condition
...
Verify that field preservation tests still operate
2025-10-19 23:44:39 +02:00
Chris Coutinho
1dc2ddfdb7
fix(caldav): Properly parse datetimes as vDDDTypes
2025-10-19 20:13:05 +02:00
Chris Coutinho
92e18825bc
feat(caldav): Add support for tasks
2025-10-19 18:02:43 +02:00
Chris Coutinho
d398a8c8e6
refactor: Migrate from internal CalendarClient to caldav library
2025-10-19 15:47:17 +02:00
Chris Coutinho
39dfa13895
docs: Remove user API docs
2025-10-19 14:06:14 +02:00
Chris Coutinho
5395f8d3d6
chore: Update lock file
2025-10-19 02:02:05 +02:00
Chris Coutinho
198d7495f0
ci: Remove --setup-show from pytest args
2025-10-19 01:58:22 +02:00
Chris Coutinho
c2f6c6ce0d
ci: Set cookbook recipe import timeout to 5min
2025-10-19 01:49:21 +02:00
Chris Coutinho
5757f2582b
ci: Run oauth tests
2025-10-19 00:49:55 +02:00
Chris Coutinho
d5e6411c45
test: disable asyncio fixture
2025-10-19 00:49:24 +02:00
Chris Coutinho
7818eb104e
ci: Add --setup-show to pytest
2025-10-19 00:28:28 +02:00
Chris Coutinho
b72514bb32
ci: Add pytest-timeout to dev deps
2025-10-19 00:27:19 +02:00
Chris Coutinho
5de4055f9f
ci: Set log level INFO
2025-10-19 00:05:00 +02:00
Chris Coutinho
95da43ea0f
ci: Increase playwright timeout to 60s
2025-10-18 23:26:50 +02:00
Chris Coutinho
ae47c5f3e6
ci: Use chromium
2025-10-18 23:12:53 +02:00
Chris Coutinho
31ffeba69b
chore: Move timeout to recipe import
2025-10-18 23:12:31 +02:00
Chris Coutinho
963a504ae2
ci: Replace 0.5 stagger with 10s in CI
2025-10-18 22:57:47 +02:00
Chris Coutinho
ead298c132
chore: revert conftest.py
2025-10-18 22:44:51 +02:00
Chris Coutinho
2f805e54b7
test: Migrate load test benchmark scripts to anyio
...
Remove unused redis container
2025-10-18 22:40:50 +02:00
Chris Coutinho
6158a890af
feat(webdav): Add search and list favorite response tools
2025-10-18 22:02:26 +02:00
Chris Coutinho
240ceb3808
test: Migrate load test framework to anyio as well
2025-10-18 22:02:25 +02:00
Chris Coutinho
1459fe9bc8
test: Replace pytest-asyncio plugin fixtures with anyio fixtures
2025-10-18 22:02:25 +02:00
Chris Coutinho
37164dbdbc
chore: sort imports
2025-10-18 22:02:25 +02:00
Chris Coutinho
c3ff92a8c1
test: Cleanup testing fixtures regarding canceled scopes
2025-10-18 22:02:25 +02:00
Chris Coutinho
371d0c93a5
test: Update oauth benchmark tests
2025-10-18 22:02:25 +02:00
Chris Coutinho
644c59bf78
docs: remove old docs
2025-10-18 22:02:25 +02:00
Chris Coutinho
056b6fc9d6
test: Initialize load testing framework
2025-10-18 22:02:24 +02:00
Chris Coutinho
83917b3786
perf(notes): Improve notes search performance using async iterators
2025-10-18 22:02:19 +02:00
Chris Coutinho
955ad78f13
test: Add load testing framework
2025-10-18 22:02:19 +02:00
Chris Coutinho
5e829fc7e7
refactor: Unify logging & remove factory deployment
2025-10-18 01:15:06 +02:00
Chris Coutinho
b1207770ca
docs: revert README
2025-10-17 04:47:46 +02:00
Chris Coutinho
d694243723
test: Remove filter
2025-10-17 04:46:43 +02:00
Chris Coutinho
8e7191e0ea
fix: Increase HTTP client timeout to 30s
...
The default 5s timeout was too short for Nextcloud Cookbook app to fetch and process recipes from external URLs, causing intermittent test failures with ReadTimeout errors.
Fixes intermittent CI failures in cookbook import tests.
2025-10-17 04:41:28 +02:00
Chris Coutinho
dbcf9d93ca
chore: Improve RequestError message details
...
Show exception type and cause when str(e) is empty for better debugging
2025-10-17 04:37:31 +02:00
Chris Coutinho
27519d0f62
test: Replace http server for recipes with nginx container
2025-10-17 04:30:03 +02:00
Chris Coutinho
2999d4b65e
fix: Handle RequestError in mcp tools
2025-10-17 04:17:41 +02:00
Chris Coutinho
0fd32ecd34
test: Fix test networking
2025-10-17 03:58:36 +02:00
Chris Coutinho
604a2065cb
chore: trigger
2025-10-17 03:40:40 +02:00
Chris Coutinho
038fcddd48
docs: remove duplicate
2025-10-17 03:24:23 +02:00
Chris Coutinho
394b27ee4a
docs: Update README with experimental warnings of OIDC support
2025-10-17 03:21:54 +02:00
Chris Coutinho
9de59db718
feat(cookbook): Add full Cookbook app support with 13 tools and 2 resources
...
- Import recipes from URLs using schema.org metadata
- Full CRUD operations for recipes
- Search, categorize, and organize recipes
- Manage keywords/tags and categories
- Configure app settings and trigger reindexing
2025-10-17 03:08:16 +02:00
Chris Coutinho
51d1f075f5
test: Remove duplicated/interactive testing fixtures
...
All integration tests now run without interactive browser usage, simplifying CI and testing infrastructure
2025-10-16 19:46:29 +02:00
Chris Coutinho
3921d9b982
test: Refactor test fixtures into a oauth token factory
2025-10-15 21:15:18 +02:00
Chris Coutinho
46c6f2f294
test: Fix oauth tests by reusing callback server
2025-10-15 17:06:46 +02:00
Chris Coutinho
3ad9198f36
fix(oauth): Remove the option to force_register new clients
2025-10-15 16:27:22 +02:00
Chris Coutinho
dafac734e6
docs: Update README
2025-10-15 14:51:36 +02:00
Chris Coutinho
97bbc18121
docs: Update README
...
Add comparison to the Nextcloud Assistant & Context Agent
2025-10-15 14:47:43 +02:00
Chris Coutinho
cc2a5c9d58
test: Inc delay for alice
2025-10-15 11:36:54 +02:00
Chris Coutinho
26f8deff17
test: Increase stagger delay 0.5 -> 2s
2025-10-15 11:07:06 +02:00
Chris Coutinho
fb3063e94e
test: Increase callback timeout 10s -> 30s
2025-10-15 10:57:21 +02:00
Chris Coutinho
83f89e9394
chore: Update CLAUDE.md
2025-10-15 10:36:27 +02:00
Chris Coutinho
5db02313a1
test: Update share client to fix test, update passwords
2025-10-15 10:35:22 +02:00
Chris Coutinho
b50e212f05
test: Add tests for sharing/groups
2025-10-15 03:46:01 +02:00
Chris Coutinho
85f8522085
feat: Add Groups API client
2025-10-15 03:43:25 +02:00
Chris Coutinho
a38c795124
feat: add sharing API client and server tools
2025-10-15 02:59:26 +02:00
Chris Coutinho
7004104873
test: Fix multi-user tests
2025-10-15 02:11:17 +02:00
Chris Coutinho
7a4a31b52d
fix: Update user/groups API to OCS v2
2025-10-15 00:05:22 +02:00
Chris Coutinho
898c2e72ae
Merge remote-tracking branch 'origin/master' into feature/user-api
2025-10-14 23:43:03 +02:00
Chris Coutinho
72ace9da9e
ci: [skip ci] Move tests to subdirs
2025-10-14 02:08:45 +02:00
Chris Coutinho
ab40127811
ci: [skip ci] Remove
2025-10-14 01:32:30 +02:00
Chris Coutinho
3ed24bd5e3
docs: restructure documentation
2025-10-14 01:23:49 +02:00
Chris Coutinho
1023a7d9c7
chore: Remove comments
2025-10-14 01:23:49 +02:00
Chris Coutinho
afc82ce3dc
chore: Validate auth server support for PKCE on startup
2025-10-14 01:23:45 +02:00
Chris Coutinho
057e25b653
chore: Add support for overriding public issuer URL
...
test: Add patch for PKCE support
2025-10-14 01:23:41 +02:00