[14:58:05] OpenAPI: http://localhost:8080/openapi.json [14:58:05] ✔ OpenAPI fetched (32448 bytes) [14:58:05] Prepare tokens [14:58:05] REGISTER admin+20250810_145805@audit.dev → http://localhost:8080/auth/v1/register HTTP: 201 [14:58:05] TOKEN for admin+20250810_145805@audit.dev → http://localhost:8080/auth/v1/token HTTP: 200 {"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NWEzMDU2Mi0yZWZkLTQwODgtODljNi1mZDViYTE2NzlhMGEiLCJlbWFpbCI6ImFkbWluKzIwMjUwODEwXzE0NTgwNUBhdWRpdC5kZXYiLCJyb2xlIjoiQ0xJRU5UIiwidHlwZSI6ImFjY2VzcyIsImV4cCI6MTc1NDgwNjM4NX0.jpBrPjuIurUlY2FzmOjOeiH82Y0OuujKxK10uykHPWc","refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NWEzMDU2Mi0yZWZkLTQwODgtODljNi1mZDViYTE2NzlhMGEiLCJlbWFpbCI6ImFkbWluKzIwMjUwODEwXzE0NTgwNUBhdWRpdC5kZXYiLCJyb2xlIjoiQ0xJRU5UIiwidHlwZSI6InJlZnJlc2giLCJ[14:58:05] REGISTER client+20250810_145805@audit.dev → http://localhost:8080/auth/v1/register HTTP: 201 [14:58:06] TOKEN for client+20250810_145805@audit.dev → http://localhost:8080/auth/v1/token HTTP: 200 {"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5ODA2YWExMS0xYzQ0LTRjZWMtYjA1Ni1kOWViMjk2ZjNiN2MiLCJlbWFpbCI6ImNsaWVudCsyMDI1MDgxMF8xNDU4MDVAYXVkaXQuZGV2Iiwicm9sZSI6IkNMSUVOVCIsInR5cGUiOiJhY2Nlc3MiLCJleHAiOjE3NTQ4MDYzODZ9.LIs31GuKJTlwWO9L5jCWj6CgQ_cX9go4r4WCtKC5LDc","refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5ODA2YWExMS0xYzQ0LTRjZWMtYjA1Ni1kOWViMjk2ZjNiN2MiLCJlbWFpbCI6ImNsaWVudCsyMDI1MDgxMF8xNDU4MDVAYXVkaXQuZGV2Iiwicm9sZSI6IkNMSUVOVCIsInR5cGUiOiJyZWZyZXNoIi[14:58:06] ✔ Tokens acquired [14:58:06] Analyze path‑parameters in schema… [14:58:06] ✖ Найдены операции без объявленных path‑параметров: 19 [ { "path": "/auth/v1/users/{user_id}", "method": "get", "needed": [ [ "user_id" ] ], "defined": [ "user_id" ], "missing": [ [ "user_id" ] ], "opId": "get_user_v1_users__user_id__get", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/auth/v1/users/{user_id}", "method": "delete", "needed": [ [ "user_id" ] ], "defined": [ "user_id" ], "missing": [ [ "user_id" ] ], "opId": "delete_user_v1_users__user_id__delete", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/auth/v1/users/{user_id}", "method": "patch", "needed": [ [ "user_id" ] ], "defined": [ "user_id" ], "missing": [ [ "user_id" ] ], "opId": "update_user_v1_users__user_id__patch", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/profiles/v1/profiles/{profile_id}", "method": "get", "needed": [ [ "profile_id" ] ], "defined": [ "profile_id" ], "missing": [ [ "profile_id" ] ], "opId": "get_profile_v1_profiles__profile_id__get", "security": [ { "HTTPBearer": [] } ] }, { "path": "/profiles/v1/profiles/by-user/{user_id}", "method": "get", "needed": [ [ "user_id" ] ], "defined": [ "user_id" ], "missing": [ [ "user_id" ] ], "opId": "get_by_user_v1_profiles_by_user__user_id__get", "security": [ { "HTTPBearer": [] } ] }, { "path": "/profiles/v1/likes/{target_user_id}", "method": "put", "needed": [ [ "target_user_id" ] ], "defined": [ "target_user_id" ], "missing": [ [ "target_user_id" ] ], "opId": "put_like_v1_likes__target_user_id__put", "security": [ { "HTTPBearer": [] } ] }, { "path": "/profiles/v1/likes/{target_user_id}", "method": "delete", "needed": [ [ "target_user_id" ] ], "defined": [ "target_user_id" ], "missing": [ [ "target_user_id" ] ], "opId": "delete_like_v1_likes__target_user_id__delete", "security": [ { "HTTPBearer": [] } ] }, { "path": "/match/v1/pairs/{pair_id}", "method": "get", "needed": [ [ "pair_id" ] ], "defined": [ "pair_id" ], "missing": [ [ "pair_id" ] ], "opId": "get_pair_v1_pairs__pair_id__get", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/match/v1/pairs/{pair_id}", "method": "delete", "needed": [ [ "pair_id" ] ], "defined": [ "pair_id" ], "missing": [ [ "pair_id" ] ], "opId": "delete_pair_v1_pairs__pair_id__delete", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/match/v1/pairs/{pair_id}", "method": "patch", "needed": [ [ "pair_id" ] ], "defined": [ "pair_id" ], "missing": [ [ "pair_id" ] ], "opId": "update_pair_v1_pairs__pair_id__patch", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/match/v1/pairs/{pair_id}/accept", "method": "post", "needed": [ [ "pair_id" ] ], "defined": [ "pair_id" ], "missing": [ [ "pair_id" ] ], "opId": "accept_v1_pairs__pair_id__accept_post", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/match/v1/pairs/{pair_id}/reject", "method": "post", "needed": [ [ "pair_id" ] ], "defined": [ "pair_id" ], "missing": [ [ "pair_id" ] ], "opId": "reject_v1_pairs__pair_id__reject_post", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/chat/v1/rooms/{room_id}", "method": "get", "needed": [ [ "room_id" ] ], "defined": [ "room_id" ], "missing": [ [ "room_id" ] ], "opId": "get_room_v1_rooms__room_id__get", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/chat/v1/rooms/{room_id}/messages", "method": "get", "needed": [ [ "room_id" ] ], "defined": [ "room_id" ], "missing": [ [ "room_id" ] ], "opId": "list_messages_v1_rooms__room_id__messages_get", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/chat/v1/rooms/{room_id}/messages", "method": "post", "needed": [ [ "room_id" ] ], "defined": [ "room_id" ], "missing": [ [ "room_id" ] ], "opId": "send_message_v1_rooms__room_id__messages_post", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/payments/v1/invoices/{inv_id}", "method": "get", "needed": [ [ "inv_id" ] ], "defined": [ "inv_id" ], "missing": [ [ "inv_id" ] ], "opId": "get_invoice_v1_invoices__inv_id__get", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/payments/v1/invoices/{inv_id}", "method": "delete", "needed": [ [ "inv_id" ] ], "defined": [ "inv_id" ], "missing": [ [ "inv_id" ] ], "opId": "delete_invoice_v1_invoices__inv_id__delete", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/payments/v1/invoices/{inv_id}", "method": "patch", "needed": [ [ "inv_id" ] ], "defined": [ "inv_id" ], "missing": [ [ "inv_id" ] ], "opId": "update_invoice_v1_invoices__inv_id__patch", "security": [ { "OAuth2PasswordBearer": [] } ] }, { "path": "/payments/v1/invoices/{inv_id}/mark-paid", "method": "post", "needed": [ [ "inv_id" ] ], "defined": [ "inv_id" ], "missing": [ [ "inv_id" ] ], "opId": "mark_paid_v1_invoices__inv_id__mark_paid_post", "security": [ { "OAuth2PasswordBearer": [] } ] } ] [14:58:06] SMOKE missing-param operations… [14:58:06] → get http://localhost:8080/auth/v1/users/{user_id} (security: [{OAuth2PasswordBearer:[]}]) HTTP: 403 {"detail":"Insufficient role"}[14:58:06] → delete http://localhost:8080/auth/v1/users/{user_id} (security: [{OAuth2PasswordBearer:[]}]) HTTP: 403 {"detail":"Insufficient role"}[14:58:06] → patch http://localhost:8080/auth/v1/users/{user_id} (security: [{OAuth2PasswordBearer:[]}]) HTTP: 403 {"detail":"Insufficient role"}[14:58:06] → get http://localhost:8080/profiles/v1/profiles/{profile_id} (security: [{HTTPBearer:[]}]) HTTP: 500 Internal Server Error[14:58:06] → get http://localhost:8080/profiles/v1/profiles/by-user/{user_id} (security: [{HTTPBearer:[]}]) HTTP: 500 Internal Server Error[14:58:06] → put http://localhost:8080/profiles/v1/likes/{target_user_id} (security: [{HTTPBearer:[]}]) HTTP: 204 [14:58:06] → delete http://localhost:8080/profiles/v1/likes/{target_user_id} (security: [{HTTPBearer:[]}]) HTTP: 204 [14:58:06] → get http://localhost:8080/match/v1/pairs/{pair_id} (security: [{OAuth2PasswordBearer:[]}]) HTTP: 500 Internal Server Error[14:58:06] → delete http://localhost:8080/match/v1/pairs/{pair_id} (security: [{OAuth2PasswordBearer:[]}]) HTTP: 403 {"detail":"Insufficient role"}[14:58:06] → patch http://localhost:8080/match/v1/pairs/{pair_id} (security: [{OAuth2PasswordBearer:[]}]) HTTP: 403 {"detail":"Insufficient role"}[14:58:06] → post http://localhost:8080/match/v1/pairs/{pair_id}/accept (security: [{OAuth2PasswordBearer:[]}]) HTTP: 500 Internal Server Error[14:58:06] → post http://localhost:8080/match/v1/pairs/{pair_id}/reject (security: [{OAuth2PasswordBearer:[]}]) HTTP: 500 Internal Server Error[14:58:06] → get http://localhost:8080/chat/v1/rooms/{room_id} (security: [{OAuth2PasswordBearer:[]}]) HTTP: 500 Internal Server Error[14:58:06] → get http://localhost:8080/chat/v1/rooms/{room_id}/messages (security: [{OAuth2PasswordBearer:[]}]) HTTP: 500 Internal Server Error[14:58:06] → post http://localhost:8080/chat/v1/rooms/{room_id}/messages (security: [{OAuth2PasswordBearer:[]}]) HTTP: 422 {"detail":[{"type":"missing","loc":["body"],"msg":"Field required","input":null}]}[14:58:06] → get http://localhost:8080/payments/v1/invoices/{inv_id} (security: [{OAuth2PasswordBearer:[]}]) HTTP: 500 Internal Server Error[14:58:06] → delete http://localhost:8080/payments/v1/invoices/{inv_id} (security: [{OAuth2PasswordBearer:[]}]) HTTP: 403 {"detail":"Insufficient role"}[14:58:06] → patch http://localhost:8080/payments/v1/invoices/{inv_id} (security: [{OAuth2PasswordBearer:[]}]) HTTP: 403 {"detail":"Insufficient role"}[14:58:06] → post http://localhost:8080/payments/v1/invoices/{inv_id}/mark-paid (security: [{OAuth2PasswordBearer:[]}]) HTTP: 403 {"detail":"Insufficient role"}[14:58:06] Report: logs/audit_20250810_145805.json [14:58:06] Log: logs/audit_20250810_145805.log