Files
mcma-backend/graphify-out/cache/ast/v0.9.12/8a0b6ec382816762bc93beb99600d9fa90cf489229f90ba909f87f80f875c26c.json
T
Senko-san fb5ce3c708
Docker Build & Publish / build (push) Successful in 1m11s
Docker Build & Publish / push (push) Failing after 7s
Docker Build & Publish / Prune old image versions (push) Has been skipped
chore: graphify!
2026-07-11 16:21:34 +03:00

1 line
19 KiB
JSON

{"nodes": [{"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "label": "test_subsonic_security.py", "file_type": "code", "source_file": "tests/test_subsonic_security.py", "source_location": "L1"}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_generate_subsonic_password_is_long_and_unique", "label": "test_generate_subsonic_password_is_long_and_unique()", "file_type": "code", "source_file": "tests/test_subsonic_security.py", "source_location": "L13", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_roundtrip", "label": "test_cipher_roundtrip()", "file_type": "code", "source_file": "tests/test_subsonic_security.py", "source_location": "L20", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "label": "test_cipher_token_then_md5_matches()", "file_type": "code", "source_file": "tests/test_subsonic_security.py", "source_location": "L28", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_wrong_key_fails", "label": "test_cipher_wrong_key_fails()", "file_type": "code", "source_file": "tests/test_subsonic_security.py", "source_location": "L41", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "label": "test_id_encode_decode_roundtrip()", "file_type": "code", "source_file": "tests/test_subsonic_security.py", "source_location": "L47", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_parse_returns_kind", "label": "test_id_parse_returns_kind()", "file_type": "code", "source_file": "tests/test_subsonic_security.py", "source_location": "L55", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_wrong_prefix_rejected", "label": "test_id_wrong_prefix_rejected()", "file_type": "code", "source_file": "tests/test_subsonic_security.py", "source_location": "L62", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_malformed_rejected", "label": "test_id_malformed_rejected()", "file_type": "code", "source_file": "tests/test_subsonic_security.py", "source_location": "L68", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_rationale_1", "label": "Unit tests for Subsonic crypto + id helpers (no DB, no network).", "file_type": "rationale", "source_file": "tests/test_subsonic_security.py", "source_location": "L1"}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_rationale_29", "label": "The decrypted app-password must reproduce a client's t=md5(password+salt).", "file_type": "rationale", "source_file": "tests/test_subsonic_security.py", "source_location": "L29"}], "edges": [{"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "hashlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L3", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "uuid", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L4", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L6", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "app_api_rest", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L7", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "app_api_rest_ids", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L8", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "app_core_security", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L9", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "app_domain_errors", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L10", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_generate_subsonic_password_is_long_and_unique", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L13", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_roundtrip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L20", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L28", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_wrong_key_fails", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L41", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L47", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_parse_returns_kind", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L55", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_wrong_prefix_rejected", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L62", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_malformed_rejected", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L68", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_rationale_1", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L1", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_rationale_29", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_subsonic_security.py", "source_location": "L29", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_generate_subsonic_password_is_long_and_unique", "callee": "generate_subsonic_password", "is_member_call": false, "source_file": "tests/test_subsonic_security.py", "source_location": "L14", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_generate_subsonic_password_is_long_and_unique", "callee": "generate_subsonic_password", "is_member_call": false, "source_file": "tests/test_subsonic_security.py", "source_location": "L15", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_roundtrip", "callee": "SubsonicPasswordCipher", "is_member_call": false, "source_file": "tests/test_subsonic_security.py", "source_location": "L21", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_roundtrip", "callee": "generate_subsonic_password", "is_member_call": false, "source_file": "tests/test_subsonic_security.py", "source_location": "L22", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_roundtrip", "callee": "encrypt", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L23", "receiver": "cipher"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_roundtrip", "callee": "decrypt", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L25", "receiver": "cipher"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "callee": "SubsonicPasswordCipher", "is_member_call": false, "source_file": "tests/test_subsonic_security.py", "source_location": "L30", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "callee": "generate_subsonic_password", "is_member_call": false, "source_file": "tests/test_subsonic_security.py", "source_location": "L31", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "callee": "encrypt", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L32", "receiver": "cipher"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "callee": "decrypt", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L35", "receiver": "cipher"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "callee": "hexdigest", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L36", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "callee": "md5", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L36", "receiver": "hashlib"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "callee": "encode", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L36", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "callee": "hexdigest", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L37", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "callee": "md5", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L37", "receiver": "hashlib"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_token_then_md5_matches", "callee": "encode", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L37", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_wrong_key_fails", "callee": "encrypt", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L42", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_wrong_key_fails", "callee": "SubsonicPasswordCipher", "is_member_call": false, "source_file": "tests/test_subsonic_security.py", "source_location": "L42", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_wrong_key_fails", "callee": "raises", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L43", "receiver": "pytest"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_wrong_key_fails", "callee": "AuthenticationError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_subsonic_security.py", "source_location": "L43"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_wrong_key_fails", "callee": "decrypt", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L44", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_cipher_wrong_key_fails", "callee": "SubsonicPasswordCipher", "is_member_call": false, "source_file": "tests/test_subsonic_security.py", "source_location": "L44", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "callee": "uuid4", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L48", "receiver": "uuid"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "callee": "decode_track", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L49", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "callee": "encode_track", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L49", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "callee": "decode_album", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L50", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "callee": "encode_album", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L50", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "callee": "decode_artist", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L51", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "callee": "encode_artist", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L51", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "callee": "decode_playlist", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L52", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_encode_decode_roundtrip", "callee": "encode_playlist", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L52", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_parse_returns_kind", "callee": "uuid4", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L56", "receiver": "uuid"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_parse_returns_kind", "callee": "parse", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L57", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_parse_returns_kind", "callee": "encode_album", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L57", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_wrong_prefix_rejected", "callee": "encode_track", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L63", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_wrong_prefix_rejected", "callee": "uuid4", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L63", "receiver": "uuid"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_wrong_prefix_rejected", "callee": "raises", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L64", "receiver": "pytest"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_wrong_prefix_rejected", "callee": "NotFoundError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_subsonic_security.py", "source_location": "L64"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_wrong_prefix_rejected", "callee": "decode_album", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L65", "receiver": "ids"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_malformed_rejected", "callee": "raises", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L69", "receiver": "pytest"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_malformed_rejected", "callee": "NotFoundError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_subsonic_security.py", "source_location": "L69"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_subsonic_security_test_id_malformed_rejected", "callee": "parse", "is_member_call": true, "source_file": "tests/test_subsonic_security.py", "source_location": "L70", "receiver": "ids"}]}