[ { "id": "fresh-csrf", "method": "GET", "path": "/refresh-csrf", "expected_status": 200, "expect_text_token": true }, { "id": "login", "method": "POST", "path": "/user/login", "expected_status": 200, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" }, "json": { "email": "compat@example.invalid", "password": "Synthetic-compat-password-4620" } }, { "id": "current-user", "method": "GET", "path": "/api/v1/user", "expected_status": 200, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "create-hotp", "method": "POST", "path": "/api/v1/twofaccounts", "expected_status": 201, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" }, "json": { "service": "compat-fixture", "account": "fixture@example.invalid", "otp_type": "hotp", "secret": "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ", "digits": 6, "algorithm": "sha1", "counter": 0 }, "capture_json": { "account_id": "/id" }, "ignore_json_pointers": [ "/id" ] }, { "id": "read-created", "method": "GET", "path": "/api/v1/twofaccounts/{{account_id}}", "expected_status": 200, "ignore_json_pointers": [ "/id" ], "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "hotp-counter-zero", "method": "GET", "path": "/api/v1/twofaccounts/{{account_id}}/otp", "expected_status": 200, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "hotp-counter-one", "method": "GET", "path": "/api/v1/twofaccounts/{{account_id}}/otp", "expected_status": 200, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "read-counter-effect", "method": "GET", "path": "/api/v1/twofaccounts/{{account_id}}", "expected_status": 200, "ignore_json_pointers": [ "/id" ], "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "group-create", "method": "POST", "path": "/api/v1/groups", "json": { "name": "Compat group" }, "expected_status": 201, "capture_json": { "group_id": "/id" }, "ignore_json_pointers": [ "/id" ], "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "group-read", "path": "/api/v1/groups/{{group_id}}", "expected_status": 200, "ignore_json_pointers": [ "/id" ], "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "group-delete", "method": "DELETE", "path": "/api/v1/groups/{{group_id}}", "expected_status": 204, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "settings-admin-denial", "path": "/api/v1/settings", "expected_status": 403, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "users-admin-denial", "path": "/api/v1/users", "expected_status": 403, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "sharing-disabled-denial", "path": "/api/v1/twofaccounts/{{account_id}}/shares", "expected_status": 403, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "qr-encode-account", "path": "/api/v1/twofaccounts/{{account_id}}/qrcode", "expected_status": 200, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "qr-decode-invalid", "method": "POST", "path": "/api/v1/qrcode/decode", "json": {}, "expected_status": 422, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "migration-empty-validation", "method": "POST", "path": "/api/v1/twofaccounts/migration", "json": {}, "expected_status": 422, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "invalid-account-validation", "method": "POST", "path": "/api/v1/twofaccounts", "json": {}, "expected_status": 422, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "feature-flags", "path": "/api/v1/features", "expected_status": 200, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "delete-created", "method": "DELETE", "path": "/api/v1/twofaccounts/{{account_id}}", "expected_status": 204, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "read-deletion-effect", "method": "GET", "path": "/api/v1/twofaccounts/{{account_id}}", "expected_status": 404, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "logout", "method": "GET", "path": "/user/logout", "expected_status": 200, "headers_from_cookies": { "X-XSRF-TOKEN": "XSRF-TOKEN" } }, { "id": "read-logout-effect", "method": "GET", "path": "/api/v1/user", "expected_status": 401 } ]