From 57f5fd4618148889a06ff752e794a7a661257811 Mon Sep 17 00:00:00 2001 From: Krrish Ghimire Date: Tue, 14 Apr 2026 21:17:20 +0545 Subject: [PATCH 1/4] update supported ai providers --- backend/core/consts.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/backend/core/consts.py b/backend/core/consts.py index 9a2c1d5..39fc2cf 100644 --- a/backend/core/consts.py +++ b/backend/core/consts.py @@ -12,11 +12,6 @@ 'id': 'gemini', 'label': 'Google Gemini', 'base_url': 'https://generativelanguage.googleapis.com/v1beta' - }, - { - 'id': 'custom', - 'label': 'Custom Provider', - 'base_url': '' } ] From 617a18e53f90e54b09d977ab8fe1565ca825eec6 Mon Sep 17 00:00:00 2001 From: Krrish Ghimire Date: Tue, 14 Apr 2026 21:26:40 +0545 Subject: [PATCH 2/4] update test case --- backend/.coverage | Bin 0 -> 77824 bytes backend/core/tests/test_ai_provider.py | 33 ++++--------------------- backend/test-results.json | 1 + 3 files changed, 6 insertions(+), 28 deletions(-) create mode 100644 backend/.coverage create mode 100644 backend/test-results.json diff --git a/backend/.coverage b/backend/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..7fd868f0c404b669865447c69004c1eeb913e1a7 GIT binary patch literal 77824 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 z zlRd75NH3UTJId;TyQv8pKgknO>fY+q+R)e{ldCD<2A={n}%m58lXMEez-1;UDLh@;vt&?f^H> z@v-AOj;)UI_A~Ye>`Uyd?Ps>#w%P2T+2`46cDVH;>-Vf4>qJYp}zV zA-aKX={;0U2CPxKv2NQlugwFz$-40p4H*ot1`dSECIPDEYIVCQ(Y1GedEEvM{gzJz zRL#~Jw~nM7tBkF30>J4n+ytBoYdw6BPcGD57zr0n?U~17!ICS-rKDpFA;~pdHx{r8 zbnBRK^VK>gMh}%^Qc^JitDo3lq7QL9#@r1hebQJ{oXYtp!xsYkZO zPJl4$hEOpvZKM(Tv;w%JiwY$p^k^PkLQlR~qkK3(Xl{X{5dB;tu-l4Z05e#t{!tjU zeJN3ZR6aBXg|IWKLIaqR+!UxuhA0~X5Sp9DSf2VXq?YHTm>-oV1oez%Y;6;mL%zxxrp2Rf^=@X84nFB7bw>}S8pQyA0ie@h&M#QaeTUuZPEX^aw zeptAXgAbhQwqIx~V-^Dt#a4jO+;c@$NV@Y0J}00*6RMtXx>-lnjo*+u)nr7CS{o0@ zGHxX18+Diu+^7mOcwoVGID}Ihbf;G3awcO$A+7qV(&6zxx&QxFu~~EqJ+L~zNf^wZ zfzkgG?k0Db+s=)3{JZ0uj#`J){+7MXKF#(=+jF*UwhZp@V3G*)V2-91pCev8s2gaw3n~WKT*9}2KK68wTF!Rt&c#;6V)fwOB1dOOntK!KI z02KMbGBnrs7O&JADyWV4d~Gfq#+3VXP_Cp`Q8&9uhew$7{K29|P&{30rhQ(R3%cd= z2Z8N?<4FxCrRNVyy>LP8t#m?h6>U`wfT6jcSE>pAz1`wsReg$hs*W}Uv&)j(AHmD9 z<#m9k*<)4dr@{l6A_-tL8>b2e8b7ZG0G8AOfaacG1u)QAUEl#I&HaD^6(3JwN@`N1 zB-!Dub^}bgR&$LHgc1Yfe&d3HQ>9haa0Sh_rMkjx);2f00B_D;QDap-DBA|un%#xC zuKn(YnZH#>6Q)cZ0s;x(g1sAb&}{2*9r`awF5dz$`X^Fuw@kWnGr*12&3ZpL_4v7D z6Ci4K#1)#Na51VXHUfm^5h%Xf2%MP+JY-OS!|`QTAbsHmKyql!o*GGIJ>}~GM1RTk zzYA*SIvs9(?V5DTmsyoz{lmm!ne@3050b}GvWvOzL?4wmK1ROn0 zP~2Rw4JKnPDos@IGh|Eh~SdT+(Ty8s|1qf>R0Mf3G&k(joR-+5X!4*)cKlq!=*e#AKbAVkGnz|-6e zC*j2$lISBEWpe;YbGML$q!4W1OKO^DW|i45)w5mLrIhhn znr3a(BN-_e39yaK$G1K&keA>;M5l%O!I`kDKsGG15Hyzrye$`f?AHo5RKitv=4 z*Mt4PWino0(|m(W5?b^gNcGrnk&M^bG`n?bI2=Q4Ym?gs^TSRL*7?s4|+OSN<3vHSU zDXA}v_NrLPBZDrCISrkN9UMqqvw zZt6=s=~XJ@6*tZ9zd~<+kYd>kAUcgC`PPwQ*`yyL*;LD9BS7dZk-9*zJ`h$vMz>Hl z0F36bNW$QfP!`AxplF_kS5R>Ei%sDa%Sb;V(JtE^3FDVyl{cC}UeYU{7PRQOGBiEPbU`HcDDC`+jx`J=*Q$A? zg<-h5&bm2ZMrlq+$7D(LKA32gDh|T+H8*te+^e2$E#9FAA#Tp9Nu$}#I?7G~h|aRu ztxuup=xGG^`m@}xxrewaPH_CfvBxpb{<;0{?Q88KdRqK3(FcrMMMlM!67Nv;^W2cG<6bfTzTF(juzNU|%2I(0pzr<84fUu>_gXCM`f zWM8a9*LyG&1hp^LuIrg*B|Tw2J9Nt$#=pg)EB1lFu_#dheYUbSB3)AR19*i!KlU9TchI}tdno}S#OtK`*4syuAa z^~kvD#QAk*I)kp%cdq@lw90C^+FU{XweyYb zn)?d{A>psiK!{m2uo"}]}, "teardown": {"duration": 0.00041502500243950635, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_delete_own_provider", "lineno": 212, "outcome": "passed", "keywords": ["test_delete_own_provider", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001180459003080614, "outcome": "passed"}, "call": {"duration": 0.011003863997757435, "outcome": "passed"}, "teardown": {"duration": 0.00043487899529282004, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_list_ai_providers_authenticated_user", "lineno": 18, "outcome": "passed", "keywords": ["test_list_ai_providers_authenticated_user", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001392399994074367, "outcome": "passed"}, "call": {"duration": 0.018018502989434637, "outcome": "passed"}, "teardown": {"duration": 0.0004117370117455721, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_list_ai_providers_includes_builtin_and_user_owned", "lineno": 49, "outcome": "passed", "keywords": ["test_list_ai_providers_includes_builtin_and_user_owned", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012444710009731352, "outcome": "passed"}, "call": {"duration": 0.018337141009396873, "outcome": "passed"}, "teardown": {"duration": 0.0007142100075725466, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_list_ai_providers_unauthenticated", "lineno": 87, "outcome": "passed", "keywords": ["test_list_ai_providers_unauthenticated", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0021209569968050346, "outcome": "passed"}, "call": {"duration": 0.0038186080055311322, "outcome": "passed", "log": [{"name": "django.request", "msg": "Forbidden: /api/ai-providers/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181284.4550736, "msecs": 455.0, "relativeCreated": 7147.146463394165, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 403, "request": ""}]}, "teardown": {"duration": 0.00044449300912674516, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_retrieve_other_users_provider", "lineno": 92, "outcome": "passed", "keywords": ["test_retrieve_other_users_provider", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0013269290066091344, "outcome": "passed"}, "call": {"duration": 0.010130406997632235, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/ai-providers/47943e12-6ea6-41a1-b9f4-8681855847be/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181284.4678557, "msecs": 467.0, "relativeCreated": 7159.928560256958, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00045889698958490044, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_other_users_provider", "lineno": 106, "outcome": "passed", "keywords": ["test_update_other_users_provider", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0013277719990583137, "outcome": "passed"}, "call": {"duration": 0.011086080005043186, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/ai-providers/f3f783fc-93b6-4a21-894d-cd5607070092/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181284.481942, "msecs": 481.0, "relativeCreated": 7174.0148067474365, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00046585600648541003, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_own_provider", "lineno": 167, "outcome": "passed", "keywords": ["test_update_own_provider", "__wrapped__", "patchings", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012300730013521388, "outcome": "passed"}, "call": {"duration": 0.016603217998635955, "outcome": "passed"}, "teardown": {"duration": 0.000433533001341857, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_with_api_key_changes_api_key", "lineno": 247, "outcome": "passed", "keywords": ["test_update_with_api_key_changes_api_key", "__wrapped__", "patchings", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001439669998944737, "outcome": "passed"}, "call": {"duration": 0.016677724997862242, "outcome": "passed"}, "teardown": {"duration": 0.0004550789890345186, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_with_empty_api_key_does_not_change_api_key", "lineno": 270, "outcome": "passed", "keywords": ["test_update_with_empty_api_key_does_not_change_api_key", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011495060025481507, "outcome": "passed"}, "call": {"duration": 0.015856617988902144, "outcome": "passed"}, "teardown": {"duration": 0.00045489899639505893, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_with_whitespace_api_key_does_not_change_api_key", "lineno": 290, "outcome": "passed", "keywords": ["test_update_with_whitespace_api_key_does_not_change_api_key", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011315790034132078, "outcome": "passed"}, "call": {"duration": 0.015224550006678328, "outcome": "passed"}, "teardown": {"duration": 0.0004421740013640374, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_without_api_key_does_not_change_api_key", "lineno": 227, "outcome": "passed", "keywords": ["test_update_without_api_key_does_not_change_api_key", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012487250060075894, "outcome": "passed"}, "call": {"duration": 0.014455901007750072, "outcome": "passed"}, "teardown": {"duration": 0.0008773010049480945, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_create_app_ai_provider", "lineno": 24, "outcome": "passed", "keywords": ["test_create_app_ai_provider", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.006043397996108979, "outcome": "passed"}, "call": {"duration": 0.23905202699825168, "outcome": "passed"}, "teardown": {"duration": 0.0003812039940385148, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_delete_app_ai_provider", "lineno": 119, "outcome": "passed", "keywords": ["test_delete_app_ai_provider", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010910790006164461, "outcome": "passed"}, "call": {"duration": 0.18509346900100354, "outcome": "passed"}, "teardown": {"duration": 0.0003962250048061833, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_different_apps_can_have_same_context_capability", "lineno": 297, "outcome": "passed", "keywords": ["test_different_apps_can_have_same_context_capability", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010814080014824867, "outcome": "passed"}, "call": {"duration": 0.36005260900128633, "outcome": "passed"}, "teardown": {"duration": 0.0003654489992186427, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_filter_by_capability", "lineno": 78, "outcome": "passed", "keywords": ["test_filter_by_capability", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010440070036565885, "outcome": "passed"}, "call": {"duration": 0.18367654700705316, "outcome": "passed"}, "teardown": {"duration": 0.0004029730043839663, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_filter_by_context", "lineno": 57, "outcome": "passed", "keywords": ["test_filter_by_context", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010724500025389716, "outcome": "passed"}, "call": {"duration": 0.18069980600557756, "outcome": "passed"}, "teardown": {"duration": 0.00041428599797654897, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_invalid_ai_provider", "lineno": 206, "outcome": "passed", "keywords": ["test_invalid_ai_provider", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010685650049708784, "outcome": "passed"}, "call": {"duration": 0.17911925401131157, "outcome": "passed", "log": [{"name": "django.request", "msg": "Bad Request: /api/applications/52e153b8-2550-4719-b21d-9ebad05a5e18/ai-providers/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181285.9198716, "msecs": 919.0, "relativeCreated": 8611.944437026978, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 400, "request": ""}]}, "teardown": {"duration": 0.0004436349991010502, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_list_app_ai_providers", "lineno": 41, "outcome": "passed", "keywords": ["test_list_app_ai_providers", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010811520041897893, "outcome": "passed"}, "call": {"duration": 0.18505994199949782, "outcome": "passed"}, "teardown": {"duration": 0.0004107300046598539, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_multiple_different_context_capability_pairs_allowed", "lineno": 250, "outcome": "passed", "keywords": ["test_multiple_different_context_capability_pairs_allowed", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0013887789973523468, "outcome": "passed"}, "call": {"duration": 0.20978864500648342, "outcome": "passed"}, "teardown": {"duration": 0.00043502300104591995, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_priority_auto_assignment", "lineno": 134, "outcome": "passed", "keywords": ["test_priority_auto_assignment", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0017002520035021007, "outcome": "passed"}, "call": {"duration": 0.179360515990993, "outcome": "passed"}, "teardown": {"duration": 0.0004920460050925612, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_unauthorized_access", "lineno": 159, "outcome": "passed", "keywords": ["test_unauthorized_access", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011583529994823039, "outcome": "passed"}, "call": {"duration": 0.36033111599681433, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/applications/6a3a114b-4c25-41ae-9af8-0da2460aa5f1/ai-providers/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181286.856342, "msecs": 856.0, "relativeCreated": 9548.414945602417, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}, {"name": "django.request", "msg": "Not Found: /api/applications/6a3a114b-4c25-41ae-9af8-0da2460aa5f1/ai-providers/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181286.8592904, "msecs": 859.0, "relativeCreated": 9551.363229751587, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}, {"name": "django.request", "msg": "Not Found: /api/applications/6a3a114b-4c25-41ae-9af8-0da2460aa5f1/ai-providers/37f7fe15-f035-479a-9cf7-ee29b2363677/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181286.8613145, "msecs": 861.0, "relativeCreated": 9553.38740348816, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}, {"name": "django.request", "msg": "Not Found: /api/applications/6a3a114b-4c25-41ae-9af8-0da2460aa5f1/ai-providers/37f7fe15-f035-479a-9cf7-ee29b2363677/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181286.863109, "msecs": 863.0, "relativeCreated": 9555.181980133057, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}, {"name": "django.request", "msg": "Not Found: /api/applications/6a3a114b-4c25-41ae-9af8-0da2460aa5f1/ai-providers/37f7fe15-f035-479a-9cf7-ee29b2363677/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181286.8649907, "msecs": 864.0, "relativeCreated": 9557.063579559326, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00046389900671783835, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_uniqueness_constraint_same_app_context_capability", "lineno": 217, "outcome": "passed", "keywords": ["test_uniqueness_constraint_same_app_context_capability", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011537249956745654, "outcome": "passed"}, "call": {"duration": 0.2212437569978647, "outcome": "passed"}, "teardown": {"duration": 0.00037019100273028016, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_update_app_ai_provider", "lineno": 99, "outcome": "passed", "keywords": ["test_update_app_ai_provider", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010496180038899183, "outcome": "passed"}, "call": {"duration": 0.19532733400410507, "outcome": "passed"}, "teardown": {"duration": 0.0007784440094837919, "outcome": "passed"}}, {"nodeid": "core/tests/test_basic.py::TestBasic::test_math", "lineno": 4, "outcome": "passed", "keywords": ["test_math", "unit", "pytestmark", "TestBasic", "test_basic.py", "tests", "core", "backend", ""], "setup": {"duration": 0.005228598005487584, "outcome": "passed"}, "call": {"duration": 0.00025656999787315726, "outcome": "passed"}, "teardown": {"duration": 0.0010828220110852271, "outcome": "passed"}}, {"nodeid": "core/tests/test_basic.py::TestBasic::test_strings", "lineno": 10, "outcome": "passed", "keywords": ["test_strings", "unit", "pytestmark", "TestBasic", "test_basic.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001307602011365816, "outcome": "passed"}, "call": {"duration": 0.00020315300207585096, "outcome": "passed"}, "teardown": {"duration": 0.0009407699981238693, "outcome": "passed"}}, {"nodeid": "core/tests/test_basic.py::TestBasic::test_lists", "lineno": 16, "outcome": "passed", "keywords": ["test_lists", "unit", "pytestmark", "TestBasic", "test_basic.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0013082090008538216, "outcome": "passed"}, "call": {"duration": 0.00021072098752483726, "outcome": "passed"}, "teardown": {"duration": 0.0012070520024280995, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_create_integration_invalid_token", "lineno": 64, "outcome": "passed", "keywords": ["test_create_integration_invalid_token", "__wrapped__", "patchings", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001393874001223594, "outcome": "passed"}, "call": {"duration": 0.009926540005835705, "outcome": "passed", "log": [{"name": "django.request", "msg": "Bad Request: /api/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.3124948, "msecs": 312.0, "relativeCreated": 10004.567623138428, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 400, "request": ""}]}, "teardown": {"duration": 0.0006418970006052405, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_create_integration_unsupported_provider", "lineno": 79, "outcome": "passed", "keywords": ["test_create_integration_unsupported_provider", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001788313005818054, "outcome": "passed"}, "call": {"duration": 0.006100049999076873, "outcome": "passed", "log": [{"name": "django.request", "msg": "Bad Request: /api/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.3224847, "msecs": 322.0, "relativeCreated": 10014.557600021362, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 400, "request": ""}]}, "teardown": {"duration": 0.0006312510085990652, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_create_integration_valid_token", "lineno": 49, "outcome": "passed", "keywords": ["test_create_integration_valid_token", "__wrapped__", "patchings", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001716074999421835, "outcome": "passed"}, "call": {"duration": 0.009730186997330748, "outcome": "passed"}, "teardown": {"duration": 0.0003875440015690401, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_delete_other_users_integration", "lineno": 152, "outcome": "passed", "keywords": ["test_delete_other_users_integration", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011089440085925162, "outcome": "passed"}, "call": {"duration": 0.009175705999950878, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/integrations/a63b4f17-67a7-4700-bab3-523aee185700/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.347297, "msecs": 347.0, "relativeCreated": 10039.369821548462, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00037684899871237576, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_delete_own_integration", "lineno": 142, "outcome": "passed", "keywords": ["test_delete_own_integration", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001040315008140169, "outcome": "passed"}, "call": {"duration": 0.009914520996971987, "outcome": "passed"}, "teardown": {"duration": 0.00040277300286106765, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_integration_model_has_no_type_field", "lineno": 162, "outcome": "passed", "keywords": ["test_integration_model_has_no_type_field", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010722419974626973, "outcome": "passed"}, "call": {"duration": 0.001212488001328893, "outcome": "passed"}, "teardown": {"duration": 0.00030980000155977905, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_integration_uses_base_model", "lineno": 167, "outcome": "passed", "keywords": ["test_integration_uses_base_model", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012377560051390901, "outcome": "passed"}, "call": {"duration": 0.0013114519970258698, "outcome": "passed"}, "teardown": {"duration": 0.00039109800127334893, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_list_integrations_authenticated", "lineno": 26, "outcome": "passed", "keywords": ["test_list_integrations_authenticated", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0015222189977066591, "outcome": "passed"}, "call": {"duration": 0.010699221005779691, "outcome": "passed"}, "teardown": {"duration": 0.00037331100611481816, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_list_integrations_unauthenticated", "lineno": 44, "outcome": "passed", "keywords": ["test_list_integrations_unauthenticated", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012164530053269118, "outcome": "passed"}, "call": {"duration": 0.00364985600754153, "outcome": "passed", "log": [{"name": "django.request", "msg": "Forbidden: /api/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.3855271, "msecs": 385.0, "relativeCreated": 10077.600002288818, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 403, "request": ""}]}, "teardown": {"duration": 0.00035174300137441605, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_retrieve_other_users_integration", "lineno": 102, "outcome": "passed", "keywords": ["test_retrieve_other_users_integration", "__wrapped__", "patchings", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010451559937791899, "outcome": "passed"}, "call": {"duration": 0.008570900987251662, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/integrations/c987c159-cee5-4c9d-ab74-b2ab10b97a84/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.396222, "msecs": 396.0, "relativeCreated": 10088.294982910156, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00038663699524477124, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_retrieve_own_integration", "lineno": 92, "outcome": "passed", "keywords": ["test_retrieve_own_integration", "__wrapped__", "patchings", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011760080087697133, "outcome": "passed"}, "call": {"duration": 0.008696657008840702, "outcome": "passed"}, "teardown": {"duration": 0.0004248949990142137, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_update_other_users_integration", "lineno": 128, "outcome": "passed", "keywords": ["test_update_other_users_integration", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011719330068444833, "outcome": "passed"}, "call": {"duration": 0.007985835007275455, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/integrations/02d048c4-ff47-4241-83dc-241755c35edc/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.4177387, "msecs": 417.0, "relativeCreated": 10109.811544418335, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00036798600922338665, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_update_own_integration", "lineno": 113, "outcome": "passed", "keywords": ["test_update_own_integration", "__wrapped__", "patchings", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011289319954812527, "outcome": "passed"}, "call": {"duration": 0.011343823003699072, "outcome": "passed"}, "teardown": {"duration": 0.0009205759997712448, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_app_integration_unique_constraint", "lineno": 274, "outcome": "passed", "keywords": ["test_app_integration_unique_constraint", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.005380590999266133, "outcome": "passed"}, "call": {"duration": 0.008013572005438618, "outcome": "passed"}, "teardown": {"duration": 0.00037111699930392206, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_app_integration_upsert", "lineno": 254, "outcome": "passed", "keywords": ["test_app_integration_upsert", "__wrapped__", "patchings", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010510930005693808, "outcome": "passed"}, "call": {"duration": 0.02764326501346659, "outcome": "passed"}, "teardown": {"duration": 0.0003983719943789765, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_other_users_app", "lineno": 217, "outcome": "passed", "keywords": ["test_create_app_integration_other_users_app", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011067909945268184, "outcome": "passed"}, "call": {"duration": 0.008377723002922721, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/applications/f7a0f678-3352-4838-b1ca-ef7846f5be40/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.4869912, "msecs": 486.0, "relativeCreated": 10179.06403541565, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.000369897999917157, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_other_users_integration", "lineno": 235, "outcome": "passed", "keywords": ["test_create_app_integration_other_users_integration", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011212230019737035, "outcome": "passed"}, "call": {"duration": 0.01266723099979572, "outcome": "passed", "log": [{"name": "django.request", "msg": "Bad Request: /api/applications/aadd07b9-1c85-44db-985a-d2987b6840d0/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.5016766, "msecs": 501.0, "relativeCreated": 10193.74942779541, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 400, "request": ""}]}, "teardown": {"duration": 0.0004016430029878393, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_unsupported_type", "lineno": 199, "outcome": "passed", "keywords": ["test_create_app_integration_unsupported_type", "__wrapped__", "patchings", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001322832002188079, "outcome": "passed"}, "call": {"duration": 0.01148052400094457, "outcome": "passed", "log": [{"name": "django.request", "msg": "Bad Request: /api/applications/d356a3e4-db46-4750-98be-5c3d108a80fc/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.515882, "msecs": 515.0, "relativeCreated": 10207.95488357544, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 400, "request": ""}]}, "teardown": {"duration": 0.0003818620025413111, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_valid", "lineno": 181, "outcome": "passed", "keywords": ["test_create_app_integration_valid", "__wrapped__", "patchings", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010942029912257567, "outcome": "passed"}, "call": {"duration": 0.0155070920009166, "outcome": "passed"}, "teardown": {"duration": 0.0003974659921368584, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_delete_app_integration", "lineno": 293, "outcome": "passed", "keywords": ["test_delete_app_integration", "__wrapped__", "patchings", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011087079910794273, "outcome": "passed"}, "call": {"duration": 0.012893702005385421, "outcome": "passed"}, "teardown": {"duration": 0.0008087369933491573, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestDeletedFilesAbsent::test_pms_github_file_does_not_exist", "lineno": 21, "outcome": "passed", "keywords": ["test_pms_github_file_does_not_exist", "TestDeletedFilesAbsent", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.005511419993126765, "outcome": "passed"}, "call": {"duration": 0.0003053399996133521, "outcome": "passed"}, "teardown": {"duration": 0.0011657900031423196, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestDeletedFilesAbsent::test_vc_validator_file_does_not_exist", "lineno": 26, "outcome": "passed", "keywords": ["test_vc_validator_file_does_not_exist", "TestDeletedFilesAbsent", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0014509230095427483, "outcome": "passed"}, "call": {"duration": 0.0002543190057622269, "outcome": "passed"}, "teardown": {"duration": 0.001550626999232918, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable::test_vc_validator_module_not_importable", "lineno": 35, "outcome": "passed", "keywords": ["test_vc_validator_module_not_importable", "TestValidateVcCredentialsNotImportable", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0017191039951285347, "outcome": "passed"}, "call": {"duration": 0.0008303270005853847, "outcome": "passed"}, "teardown": {"duration": 0.0012113799893995747, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable::test_validate_vc_credentials_not_in_integrations_init", "lineno": 40, "outcome": "passed", "keywords": ["test_validate_vc_credentials_not_in_integrations_init", "TestValidateVcCredentialsNotImportable", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001349489000858739, "outcome": "passed"}, "call": {"duration": 0.00020508399757090956, "outcome": "passed"}, "teardown": {"duration": 0.001089619006961584, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable::test_validate_vc_credentials_not_importable_directly", "lineno": 47, "outcome": "passed", "keywords": ["test_validate_vc_credentials_not_importable_directly", "TestValidateVcCredentialsNotImportable", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012868799967691302, "outcome": "passed"}, "call": {"duration": 0.00043869001092389226, "outcome": "passed"}, "teardown": {"duration": 0.0011104169971076772, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestPreservedModulesImportable::test_validate_github_token_importable", "lineno": 59, "outcome": "passed", "keywords": ["test_validate_github_token_importable", "TestPreservedModulesImportable", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0014101139968261123, "outcome": "passed"}, "call": {"duration": 0.0002022780099650845, "outcome": "passed"}, "teardown": {"duration": 0.0010681940038921311, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestPreservedModulesImportable::test_parse_url_schema_importable", "lineno": 64, "outcome": "passed", "keywords": ["test_parse_url_schema_importable", "TestPreservedModulesImportable", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0019253510108683258, "outcome": "passed"}, "call": {"duration": 0.00021399800607468933, "outcome": "passed"}, "teardown": {"duration": 0.0012503520119935274, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_create_email_notification_profile", "lineno": 97, "outcome": "passed", "keywords": ["test_create_email_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0014816510083619505, "outcome": "passed"}, "call": {"duration": 0.010093383010826074, "outcome": "passed"}, "teardown": {"duration": 0.0005059499962953851, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_create_notification_profile", "lineno": 71, "outcome": "passed", "keywords": ["test_create_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001217321987496689, "outcome": "passed"}, "call": {"duration": 0.00985042899264954, "outcome": "passed"}, "teardown": {"duration": 0.0004231029888615012, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_delete_other_users_notification_profile", "lineno": 315, "outcome": "passed", "keywords": ["test_delete_other_users_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011217749997740611, "outcome": "passed"}, "call": {"duration": 0.010189360997173935, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/notification-profiles/3/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.6167197, "msecs": 616.0, "relativeCreated": 10308.79259109497, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.0005533760122489184, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_delete_own_notification_profile", "lineno": 300, "outcome": "passed", "keywords": ["test_delete_own_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0014903520059306175, "outcome": "passed"}, "call": {"duration": 0.011377688992070034, "outcome": "passed"}, "teardown": {"duration": 0.0003949390084017068, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_list_notification_profiles_authenticated_user", "lineno": 15, "outcome": "passed", "keywords": ["test_list_notification_profiles_authenticated_user", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011334150040056556, "outcome": "passed"}, "call": {"duration": 0.015147149009862915, "outcome": "passed"}, "teardown": {"duration": 0.0004821339971385896, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_list_notification_profiles_unauthenticated", "lineno": 38, "outcome": "passed", "keywords": ["test_list_notification_profiles_unauthenticated", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012665480026043952, "outcome": "passed"}, "call": {"duration": 0.004900026993709616, "outcome": "passed", "log": [{"name": "django.request", "msg": "Forbidden: /api/notification-profiles/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.662405, "msecs": 662.0, "relativeCreated": 10354.477882385254, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 403, "request": ""}]}, "teardown": {"duration": 0.0004476589965634048, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_put_method_not_allowed", "lineno": 282, "outcome": "passed", "keywords": ["test_put_method_not_allowed", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011480950051918626, "outcome": "passed"}, "call": {"duration": 0.007466362993000075, "outcome": "passed", "log": [{"name": "django.request", "msg": "Method Not Allowed: /api/notification-profiles/8/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.6724389, "msecs": 672.0, "relativeCreated": 10364.511728286743, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 405, "request": ""}]}, "teardown": {"duration": 0.00043643299432005733, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_retrieve_other_users_notification_profile", "lineno": 57, "outcome": "passed", "keywords": ["test_retrieve_other_users_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001142747001722455, "outcome": "passed"}, "call": {"duration": 0.010378133010817692, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/notification-profiles/9/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.685277, "msecs": 685.0, "relativeCreated": 10377.349853515625, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.0004092210001545027, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_retrieve_own_notification_profile", "lineno": 43, "outcome": "passed", "keywords": ["test_retrieve_own_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001120317989261821, "outcome": "passed"}, "call": {"duration": 0.0076045229943702, "outcome": "passed"}, "teardown": {"duration": 0.00038365299405995756, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_notification_profile_email", "lineno": 181, "outcome": "passed", "keywords": ["test_update_notification_profile_email", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011426499986555427, "outcome": "passed"}, "call": {"duration": 0.011156430002301931, "outcome": "passed"}, "teardown": {"duration": 0.0003741160035133362, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_notification_profile_webhook_url", "lineno": 154, "outcome": "passed", "keywords": ["test_update_notification_profile_webhook_url", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010386920039309189, "outcome": "passed"}, "call": {"duration": 0.01277080801082775, "outcome": "passed"}, "teardown": {"duration": 0.0004425950028235093, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_other_users_notification_profile", "lineno": 139, "outcome": "passed", "keywords": ["test_update_other_users_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001220216989167966, "outcome": "passed"}, "call": {"duration": 0.009218533014063723, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/notification-profiles/13/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.735822, "msecs": 735.0, "relativeCreated": 10427.894830703735, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00048261499614454806, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_own_notification_profile_name", "lineno": 119, "outcome": "passed", "keywords": ["test_update_own_notification_profile_name", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001180780993308872, "outcome": "passed"}, "call": {"duration": 0.012037933003739454, "outcome": "passed"}, "teardown": {"duration": 0.00041039798816200346, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_with_empty_webhook_does_not_change_webhook", "lineno": 230, "outcome": "passed", "keywords": ["test_update_with_empty_webhook_does_not_change_webhook", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011471460020402446, "outcome": "passed"}, "call": {"duration": 0.010851896004169248, "outcome": "passed"}, "teardown": {"duration": 0.0004276489926269278, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_with_whitespace_webhook_does_not_change_webhook", "lineno": 256, "outcome": "passed", "keywords": ["test_update_with_whitespace_webhook_does_not_change_webhook", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012030200014123693, "outcome": "passed"}, "call": {"duration": 0.01297024599625729, "outcome": "passed"}, "teardown": {"duration": 0.00040756700036581606, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_without_config_does_not_change_config", "lineno": 207, "outcome": "passed", "keywords": ["test_update_without_config_does_not_change_config", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011571690120035782, "outcome": "passed"}, "call": {"duration": 0.010889080003835261, "outcome": "passed"}, "teardown": {"duration": 0.025139771998510696, "outcome": "passed"}}], "warnings": [{"message": "PyPDF2 is deprecated. Please move to the pypdf library instead.", "category": "DeprecationWarning", "when": "collect", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/PyPDF2/__init__.py", "lineno": 21}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "Pagination may yield inconsistent results with an unordered object_list: QuerySet.", "category": "UnorderedObjectListWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/rest_framework/pagination.py", "lineno": 207}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}]} \ No newline at end of file From e611ec3c5c672b2a8e2de04a5a47418cf16dbb28 Mon Sep 17 00:00:00 2001 From: Krrish Ghimire Date: Tue, 14 Apr 2026 21:29:59 +0545 Subject: [PATCH 3/4] remove unnecessary files --- backend/test-results.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 backend/test-results.json diff --git a/backend/test-results.json b/backend/test-results.json deleted file mode 100644 index 4fd4624..0000000 --- a/backend/test-results.json +++ /dev/null @@ -1 +0,0 @@ -{"created": 1776181288.8626137, "duration": 10.936042547225952, "exitcode": 0, "root": "/home/krrish/projects/ch8r/backend", "environment": {}, "summary": {"passed": 75, "total": 75, "collected": 75}, "collectors": [{"nodeid": "", "outcome": "passed", "result": [{"nodeid": ".", "type": "Dir"}]}, {"nodeid": "config/test_settings.py", "outcome": "passed", "result": []}, {"nodeid": "config", "outcome": "passed", "result": [{"nodeid": "config/test_settings.py", "type": "Module"}]}, {"nodeid": "core/consumer_modules", "outcome": "passed", "result": []}, {"nodeid": "core/integrations/providers/project_management/github", "outcome": "passed", "result": []}, {"nodeid": "core/integrations/providers/project_management", "outcome": "passed", "result": [{"nodeid": "core/integrations/providers/project_management/github", "type": "Dir"}]}, {"nodeid": "core/integrations/providers", "outcome": "passed", "result": [{"nodeid": "core/integrations/providers/project_management", "type": "Dir"}]}, {"nodeid": "core/integrations", "outcome": "passed", "result": [{"nodeid": "core/integrations/providers", "type": "Dir"}]}, {"nodeid": "core/management/commands", "outcome": "passed", "result": []}, {"nodeid": "core/management", "outcome": "passed", "result": [{"nodeid": "core/management/commands", "type": "Package"}]}, {"nodeid": "core/migrations", "outcome": "passed", "result": []}, {"nodeid": "core/models", "outcome": "passed", "result": []}, {"nodeid": "core/prompts", "outcome": "passed", "result": []}, {"nodeid": "core/serializers", "outcome": "passed", "result": []}, {"nodeid": "core/services/contracts", "outcome": "passed", "result": []}, {"nodeid": "core/services/factories", "outcome": "passed", "result": []}, {"nodeid": "core/services/providers/ai", "outcome": "passed", "result": []}, {"nodeid": "core/services/providers/version_control", "outcome": "passed", "result": []}, {"nodeid": "core/services/providers", "outcome": "passed", "result": [{"nodeid": "core/services/providers/ai", "type": "Package"}, {"nodeid": "core/services/providers/version_control", "type": "Package"}]}, {"nodeid": "core/services", "outcome": "passed", "result": [{"nodeid": "core/services/contracts", "type": "Package"}, {"nodeid": "core/services/factories", "type": "Package"}, {"nodeid": "core/services/providers", "type": "Package"}]}, {"nodeid": "core/tasks", "outcome": "passed", "result": []}, {"nodeid": "core/tests/test_ai_provider.py::BaseAPITestCase", "outcome": "passed", "result": []}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI", "outcome": "passed", "result": [{"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_api_key_is_encrypted_in_database", "type": "TestCaseFunction", "lineno": 310}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_cannot_update_provider_field", "type": "TestCaseFunction", "lineno": 190}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_create_ai_provider", "type": "TestCaseFunction", "lineno": 135}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_create_with_supported_provider_gemini", "type": "TestCaseFunction", "lineno": 341}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_create_with_unsupported_provider_fails", "type": "TestCaseFunction", "lineno": 364}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_delete_other_users_provider", "type": "TestCaseFunction", "lineno": 121}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_delete_own_provider", "type": "TestCaseFunction", "lineno": 212}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_list_ai_providers_authenticated_user", "type": "TestCaseFunction", "lineno": 18}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_list_ai_providers_includes_builtin_and_user_owned", "type": "TestCaseFunction", "lineno": 49}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_list_ai_providers_unauthenticated", "type": "TestCaseFunction", "lineno": 87}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_retrieve_other_users_provider", "type": "TestCaseFunction", "lineno": 92}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_other_users_provider", "type": "TestCaseFunction", "lineno": 106}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_own_provider", "type": "TestCaseFunction", "lineno": 167}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_with_api_key_changes_api_key", "type": "TestCaseFunction", "lineno": 247}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_with_empty_api_key_does_not_change_api_key", "type": "TestCaseFunction", "lineno": 270}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_with_whitespace_api_key_does_not_change_api_key", "type": "TestCaseFunction", "lineno": 290}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_without_api_key_does_not_change_api_key", "type": "TestCaseFunction", "lineno": 227}]}, {"nodeid": "core/tests/test_ai_provider.py", "outcome": "passed", "result": [{"nodeid": "core/tests/test_ai_provider.py::BaseAPITestCase", "type": "UnitTestCase"}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI", "type": "UnitTestCase"}]}, {"nodeid": "core/tests/test_app_ai_provider.py::APITestCase", "outcome": "passed", "result": []}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest", "outcome": "passed", "result": [{"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_create_app_ai_provider", "type": "TestCaseFunction", "lineno": 24}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_delete_app_ai_provider", "type": "TestCaseFunction", "lineno": 119}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_different_apps_can_have_same_context_capability", "type": "TestCaseFunction", "lineno": 297}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_filter_by_capability", "type": "TestCaseFunction", "lineno": 78}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_filter_by_context", "type": "TestCaseFunction", "lineno": 57}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_invalid_ai_provider", "type": "TestCaseFunction", "lineno": 206}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_list_app_ai_providers", "type": "TestCaseFunction", "lineno": 41}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_multiple_different_context_capability_pairs_allowed", "type": "TestCaseFunction", "lineno": 250}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_priority_auto_assignment", "type": "TestCaseFunction", "lineno": 134}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_unauthorized_access", "type": "TestCaseFunction", "lineno": 159}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_uniqueness_constraint_same_app_context_capability", "type": "TestCaseFunction", "lineno": 217}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_update_app_ai_provider", "type": "TestCaseFunction", "lineno": 99}]}, {"nodeid": "core/tests/test_app_ai_provider.py", "outcome": "passed", "result": [{"nodeid": "core/tests/test_app_ai_provider.py::APITestCase", "type": "UnitTestCase"}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest", "type": "UnitTestCase"}]}, {"nodeid": "core/tests/test_basic.py::TestBasic", "outcome": "passed", "result": [{"nodeid": "core/tests/test_basic.py::TestBasic::test_math", "type": "Function", "lineno": 4}, {"nodeid": "core/tests/test_basic.py::TestBasic::test_strings", "type": "Function", "lineno": 10}, {"nodeid": "core/tests/test_basic.py::TestBasic::test_lists", "type": "Function", "lineno": 16}]}, {"nodeid": "core/tests/test_basic.py", "outcome": "passed", "result": [{"nodeid": "core/tests/test_basic.py::TestBasic", "type": "Class"}]}, {"nodeid": "core/tests/test_integration.py::BaseAPITestCase", "outcome": "passed", "result": []}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI", "outcome": "passed", "result": [{"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_create_integration_invalid_token", "type": "TestCaseFunction", "lineno": 64}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_create_integration_unsupported_provider", "type": "TestCaseFunction", "lineno": 79}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_create_integration_valid_token", "type": "TestCaseFunction", "lineno": 49}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_delete_other_users_integration", "type": "TestCaseFunction", "lineno": 152}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_delete_own_integration", "type": "TestCaseFunction", "lineno": 142}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_integration_model_has_no_type_field", "type": "TestCaseFunction", "lineno": 162}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_integration_uses_base_model", "type": "TestCaseFunction", "lineno": 167}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_list_integrations_authenticated", "type": "TestCaseFunction", "lineno": 26}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_list_integrations_unauthenticated", "type": "TestCaseFunction", "lineno": 44}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_retrieve_other_users_integration", "type": "TestCaseFunction", "lineno": 102}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_retrieve_own_integration", "type": "TestCaseFunction", "lineno": 92}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_update_other_users_integration", "type": "TestCaseFunction", "lineno": 128}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_update_own_integration", "type": "TestCaseFunction", "lineno": 113}]}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI", "outcome": "passed", "result": [{"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_app_integration_unique_constraint", "type": "TestCaseFunction", "lineno": 274}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_app_integration_upsert", "type": "TestCaseFunction", "lineno": 254}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_other_users_app", "type": "TestCaseFunction", "lineno": 217}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_other_users_integration", "type": "TestCaseFunction", "lineno": 235}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_unsupported_type", "type": "TestCaseFunction", "lineno": 199}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_valid", "type": "TestCaseFunction", "lineno": 181}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_delete_app_integration", "type": "TestCaseFunction", "lineno": 293}]}, {"nodeid": "core/tests/test_integration.py", "outcome": "passed", "result": [{"nodeid": "core/tests/test_integration.py::BaseAPITestCase", "type": "UnitTestCase"}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI", "type": "UnitTestCase"}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI", "type": "UnitTestCase"}]}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestDeletedFilesAbsent", "outcome": "passed", "result": [{"nodeid": "core/tests/test_integrations_cleanup.py::TestDeletedFilesAbsent::test_pms_github_file_does_not_exist", "type": "Function", "lineno": 21}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestDeletedFilesAbsent::test_vc_validator_file_does_not_exist", "type": "Function", "lineno": 26}]}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable", "outcome": "passed", "result": [{"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable::test_vc_validator_module_not_importable", "type": "Function", "lineno": 35}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable::test_validate_vc_credentials_not_in_integrations_init", "type": "Function", "lineno": 40}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable::test_validate_vc_credentials_not_importable_directly", "type": "Function", "lineno": 47}]}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestPreservedModulesImportable", "outcome": "passed", "result": [{"nodeid": "core/tests/test_integrations_cleanup.py::TestPreservedModulesImportable::test_validate_github_token_importable", "type": "Function", "lineno": 59}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestPreservedModulesImportable::test_parse_url_schema_importable", "type": "Function", "lineno": 64}]}, {"nodeid": "core/tests/test_integrations_cleanup.py", "outcome": "passed", "result": [{"nodeid": "core/tests/test_integrations_cleanup.py::TestDeletedFilesAbsent", "type": "Class"}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable", "type": "Class"}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestPreservedModulesImportable", "type": "Class"}]}, {"nodeid": "core/tests/test_models", "outcome": "passed", "result": []}, {"nodeid": "core/tests/test_notification_profile.py::BaseAPITestCase", "outcome": "passed", "result": []}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI", "outcome": "passed", "result": [{"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_create_email_notification_profile", "type": "TestCaseFunction", "lineno": 97}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_create_notification_profile", "type": "TestCaseFunction", "lineno": 71}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_delete_other_users_notification_profile", "type": "TestCaseFunction", "lineno": 315}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_delete_own_notification_profile", "type": "TestCaseFunction", "lineno": 300}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_list_notification_profiles_authenticated_user", "type": "TestCaseFunction", "lineno": 15}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_list_notification_profiles_unauthenticated", "type": "TestCaseFunction", "lineno": 38}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_put_method_not_allowed", "type": "TestCaseFunction", "lineno": 282}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_retrieve_other_users_notification_profile", "type": "TestCaseFunction", "lineno": 57}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_retrieve_own_notification_profile", "type": "TestCaseFunction", "lineno": 43}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_notification_profile_email", "type": "TestCaseFunction", "lineno": 181}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_notification_profile_webhook_url", "type": "TestCaseFunction", "lineno": 154}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_other_users_notification_profile", "type": "TestCaseFunction", "lineno": 139}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_own_notification_profile_name", "type": "TestCaseFunction", "lineno": 119}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_with_empty_webhook_does_not_change_webhook", "type": "TestCaseFunction", "lineno": 230}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_with_whitespace_webhook_does_not_change_webhook", "type": "TestCaseFunction", "lineno": 256}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_without_config_does_not_change_config", "type": "TestCaseFunction", "lineno": 207}]}, {"nodeid": "core/tests/test_notification_profile.py", "outcome": "passed", "result": [{"nodeid": "core/tests/test_notification_profile.py::BaseAPITestCase", "type": "UnitTestCase"}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI", "type": "UnitTestCase"}]}, {"nodeid": "core/tests", "outcome": "passed", "result": [{"nodeid": "core/tests/test_ai_provider.py", "type": "Module"}, {"nodeid": "core/tests/test_app_ai_provider.py", "type": "Module"}, {"nodeid": "core/tests/test_basic.py", "type": "Module"}, {"nodeid": "core/tests/test_integration.py", "type": "Module"}, {"nodeid": "core/tests/test_integrations_cleanup.py", "type": "Module"}, {"nodeid": "core/tests/test_models", "type": "Dir"}, {"nodeid": "core/tests/test_notification_profile.py", "type": "Module"}]}, {"nodeid": "core/url_modules", "outcome": "passed", "result": []}, {"nodeid": "core/urls", "outcome": "passed", "result": []}, {"nodeid": "core/views", "outcome": "passed", "result": []}, {"nodeid": "core", "outcome": "passed", "result": [{"nodeid": "core/consumer_modules", "type": "Dir"}, {"nodeid": "core/integrations", "type": "Package"}, {"nodeid": "core/management", "type": "Dir"}, {"nodeid": "core/migrations", "type": "Package"}, {"nodeid": "core/models", "type": "Package"}, {"nodeid": "core/prompts", "type": "Package"}, {"nodeid": "core/serializers", "type": "Package"}, {"nodeid": "core/services", "type": "Package"}, {"nodeid": "core/tasks", "type": "Package"}, {"nodeid": "core/tests", "type": "Package"}, {"nodeid": "core/url_modules", "type": "Package"}, {"nodeid": "core/urls", "type": "Dir"}, {"nodeid": "core/views", "type": "Package"}]}, {"nodeid": "github_data/migrations", "outcome": "passed", "result": []}, {"nodeid": "github_data", "outcome": "passed", "result": [{"nodeid": "github_data/migrations", "type": "Dir"}]}, {"nodeid": "htmlcov", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/aliases", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/h59fghhqcjvgvfmujri72e51-app_id-map", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/has_values", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/is_null", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/has_values", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/is_null", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-map", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/has_values", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/is_null", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/has_values", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/is_null", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/h59fghhqcjvgvfmujri72e51-app_id-map", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-map", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_storage", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_index-sparse", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-dense/deleted", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-dense/vectors", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-dense", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-dense/deleted", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-dense/vectors", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-sparse/deleted", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-sparse/store", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-sparse", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-sparse/deleted", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-sparse/store", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_index", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/payload_storage", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_index-sparse", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-dense", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88/vector_storage-sparse", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/h59fghhqcjvgvfmujri72e51-app_id-map", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/has_values", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/is_null", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/has_values", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/is_null", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-map", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/has_values", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/is_null", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/has_values", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/is_null", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/h59fghhqcjvgvfmujri72e51-app_id-map", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-map", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_storage", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_index-dense", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_index-sparse", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-dense/deleted", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-dense/vectors", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-dense", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-dense/deleted", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-dense/vectors", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-sparse/deleted", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-sparse/store", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-sparse", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-sparse/deleted", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-sparse/store", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_index", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/payload_storage", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_index-dense", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_index-sparse", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-dense", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503/vector_storage-sparse", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/h59fghhqcjvgvfmujri72e51-app_id-map", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/has_values", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/is_null", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/has_values", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null/is_null", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-map", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/has_values", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/is_null", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/has_values", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null/is_null", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/h59fghhqcjvgvfmujri72e51-app_id-map", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/h59fghhqcjvgvfmujri72e51-app_id-null", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-map", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index/js3qta8etpln0dq11apu1ik5-kb_id-null", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_storage", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_index-dense", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_index-sparse", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-dense/deleted", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-dense/vectors", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-dense", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-dense/deleted", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-dense/vectors", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-sparse/deleted", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-sparse/store", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-sparse", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-sparse/deleted", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-sparse/store", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_index", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/payload_storage", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_index-dense", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_index-sparse", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-dense", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28/vector_storage-sparse", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/segments", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments/6c1ed5ab-2b5d-46aa-adab-1077ae005c88", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/9f309341-941f-41ea-adbb-128d09a8e503", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/segments/ce0f80d0-2854-4018-a770-240b5cabea28", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq/0/temp_segments", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0/wal", "outcome": "passed", "result": []}, {"nodeid": "qdrant_storage/collections/advq/0", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0/segments", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/temp_segments", "type": "Dir"}, {"nodeid": "qdrant_storage/collections/advq/0/wal", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections/advq", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq/0", "type": "Dir"}]}, {"nodeid": "qdrant_storage/collections", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/collections/advq", "type": "Dir"}]}, {"nodeid": "qdrant_storage", "outcome": "passed", "result": [{"nodeid": "qdrant_storage/aliases", "type": "Dir"}, {"nodeid": "qdrant_storage/collections", "type": "Dir"}]}, {"nodeid": "scripts", "outcome": "passed", "result": []}, {"nodeid": "templates/prompts", "outcome": "passed", "result": []}, {"nodeid": "templates", "outcome": "passed", "result": [{"nodeid": "templates/prompts", "type": "Dir"}]}, {"nodeid": "uploads", "outcome": "passed", "result": []}, {"nodeid": ".", "outcome": "passed", "result": [{"nodeid": "config", "type": "Package"}, {"nodeid": "core", "type": "Package"}, {"nodeid": "github_data", "type": "Dir"}, {"nodeid": "htmlcov", "type": "Dir"}, {"nodeid": "qdrant_storage", "type": "Dir"}, {"nodeid": "scripts", "type": "Dir"}, {"nodeid": "templates", "type": "Dir"}, {"nodeid": "uploads", "type": "Dir"}]}], "tests": [{"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_api_key_is_encrypted_in_database", "lineno": 310, "outcome": "passed", "keywords": ["test_api_key_is_encrypted_in_database", "__wrapped__", "patchings", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 1.4102803459973074, "outcome": "passed"}, "call": {"duration": 0.09600325500650797, "outcome": "passed"}, "teardown": {"duration": 0.0005145509931026027, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_cannot_update_provider_field", "lineno": 190, "outcome": "passed", "keywords": ["test_cannot_update_provider_field", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011225890048081055, "outcome": "passed"}, "call": {"duration": 0.01543515600496903, "outcome": "passed"}, "teardown": {"duration": 0.0003782679996220395, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_create_ai_provider", "lineno": 135, "outcome": "passed", "keywords": ["test_create_ai_provider", "__wrapped__", "patchings", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012549250095617026, "outcome": "passed"}, "call": {"duration": 0.011064910009736195, "outcome": "passed"}, "teardown": {"duration": 0.0004363879997981712, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_create_with_supported_provider_gemini", "lineno": 341, "outcome": "passed", "keywords": ["test_create_with_supported_provider_gemini", "__wrapped__", "patchings", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011473360063973814, "outcome": "passed"}, "call": {"duration": 0.0059507900004973635, "outcome": "passed"}, "teardown": {"duration": 0.0004152390029048547, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_create_with_unsupported_provider_fails", "lineno": 364, "outcome": "passed", "keywords": ["test_create_with_unsupported_provider_fails", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011514499929035082, "outcome": "passed"}, "call": {"duration": 0.0035502380051184446, "outcome": "passed"}, "teardown": {"duration": 0.00042220800241921097, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_delete_other_users_provider", "lineno": 121, "outcome": "passed", "keywords": ["test_delete_other_users_provider", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011630099907051772, "outcome": "passed"}, "call": {"duration": 0.009158524000667967, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/ai-providers/f2106d08-c843-43aa-8c4c-6b1faa1a46ea/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181284.3926308, "msecs": 392.0, "relativeCreated": 7084.703683853149, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00041502500243950635, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_delete_own_provider", "lineno": 212, "outcome": "passed", "keywords": ["test_delete_own_provider", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001180459003080614, "outcome": "passed"}, "call": {"duration": 0.011003863997757435, "outcome": "passed"}, "teardown": {"duration": 0.00043487899529282004, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_list_ai_providers_authenticated_user", "lineno": 18, "outcome": "passed", "keywords": ["test_list_ai_providers_authenticated_user", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001392399994074367, "outcome": "passed"}, "call": {"duration": 0.018018502989434637, "outcome": "passed"}, "teardown": {"duration": 0.0004117370117455721, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_list_ai_providers_includes_builtin_and_user_owned", "lineno": 49, "outcome": "passed", "keywords": ["test_list_ai_providers_includes_builtin_and_user_owned", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012444710009731352, "outcome": "passed"}, "call": {"duration": 0.018337141009396873, "outcome": "passed"}, "teardown": {"duration": 0.0007142100075725466, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_list_ai_providers_unauthenticated", "lineno": 87, "outcome": "passed", "keywords": ["test_list_ai_providers_unauthenticated", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0021209569968050346, "outcome": "passed"}, "call": {"duration": 0.0038186080055311322, "outcome": "passed", "log": [{"name": "django.request", "msg": "Forbidden: /api/ai-providers/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181284.4550736, "msecs": 455.0, "relativeCreated": 7147.146463394165, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 403, "request": ""}]}, "teardown": {"duration": 0.00044449300912674516, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_retrieve_other_users_provider", "lineno": 92, "outcome": "passed", "keywords": ["test_retrieve_other_users_provider", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0013269290066091344, "outcome": "passed"}, "call": {"duration": 0.010130406997632235, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/ai-providers/47943e12-6ea6-41a1-b9f4-8681855847be/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181284.4678557, "msecs": 467.0, "relativeCreated": 7159.928560256958, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00045889698958490044, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_other_users_provider", "lineno": 106, "outcome": "passed", "keywords": ["test_update_other_users_provider", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0013277719990583137, "outcome": "passed"}, "call": {"duration": 0.011086080005043186, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/ai-providers/f3f783fc-93b6-4a21-894d-cd5607070092/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181284.481942, "msecs": 481.0, "relativeCreated": 7174.0148067474365, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00046585600648541003, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_own_provider", "lineno": 167, "outcome": "passed", "keywords": ["test_update_own_provider", "__wrapped__", "patchings", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012300730013521388, "outcome": "passed"}, "call": {"duration": 0.016603217998635955, "outcome": "passed"}, "teardown": {"duration": 0.000433533001341857, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_with_api_key_changes_api_key", "lineno": 247, "outcome": "passed", "keywords": ["test_update_with_api_key_changes_api_key", "__wrapped__", "patchings", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001439669998944737, "outcome": "passed"}, "call": {"duration": 0.016677724997862242, "outcome": "passed"}, "teardown": {"duration": 0.0004550789890345186, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_with_empty_api_key_does_not_change_api_key", "lineno": 270, "outcome": "passed", "keywords": ["test_update_with_empty_api_key_does_not_change_api_key", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011495060025481507, "outcome": "passed"}, "call": {"duration": 0.015856617988902144, "outcome": "passed"}, "teardown": {"duration": 0.00045489899639505893, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_with_whitespace_api_key_does_not_change_api_key", "lineno": 290, "outcome": "passed", "keywords": ["test_update_with_whitespace_api_key_does_not_change_api_key", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011315790034132078, "outcome": "passed"}, "call": {"duration": 0.015224550006678328, "outcome": "passed"}, "teardown": {"duration": 0.0004421740013640374, "outcome": "passed"}}, {"nodeid": "core/tests/test_ai_provider.py::TestAIProviderAPI::test_update_without_api_key_does_not_change_api_key", "lineno": 227, "outcome": "passed", "keywords": ["test_update_without_api_key_does_not_change_api_key", "TestAIProviderAPI", "api", "test_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012487250060075894, "outcome": "passed"}, "call": {"duration": 0.014455901007750072, "outcome": "passed"}, "teardown": {"duration": 0.0008773010049480945, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_create_app_ai_provider", "lineno": 24, "outcome": "passed", "keywords": ["test_create_app_ai_provider", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.006043397996108979, "outcome": "passed"}, "call": {"duration": 0.23905202699825168, "outcome": "passed"}, "teardown": {"duration": 0.0003812039940385148, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_delete_app_ai_provider", "lineno": 119, "outcome": "passed", "keywords": ["test_delete_app_ai_provider", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010910790006164461, "outcome": "passed"}, "call": {"duration": 0.18509346900100354, "outcome": "passed"}, "teardown": {"duration": 0.0003962250048061833, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_different_apps_can_have_same_context_capability", "lineno": 297, "outcome": "passed", "keywords": ["test_different_apps_can_have_same_context_capability", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010814080014824867, "outcome": "passed"}, "call": {"duration": 0.36005260900128633, "outcome": "passed"}, "teardown": {"duration": 0.0003654489992186427, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_filter_by_capability", "lineno": 78, "outcome": "passed", "keywords": ["test_filter_by_capability", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010440070036565885, "outcome": "passed"}, "call": {"duration": 0.18367654700705316, "outcome": "passed"}, "teardown": {"duration": 0.0004029730043839663, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_filter_by_context", "lineno": 57, "outcome": "passed", "keywords": ["test_filter_by_context", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010724500025389716, "outcome": "passed"}, "call": {"duration": 0.18069980600557756, "outcome": "passed"}, "teardown": {"duration": 0.00041428599797654897, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_invalid_ai_provider", "lineno": 206, "outcome": "passed", "keywords": ["test_invalid_ai_provider", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010685650049708784, "outcome": "passed"}, "call": {"duration": 0.17911925401131157, "outcome": "passed", "log": [{"name": "django.request", "msg": "Bad Request: /api/applications/52e153b8-2550-4719-b21d-9ebad05a5e18/ai-providers/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181285.9198716, "msecs": 919.0, "relativeCreated": 8611.944437026978, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 400, "request": ""}]}, "teardown": {"duration": 0.0004436349991010502, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_list_app_ai_providers", "lineno": 41, "outcome": "passed", "keywords": ["test_list_app_ai_providers", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010811520041897893, "outcome": "passed"}, "call": {"duration": 0.18505994199949782, "outcome": "passed"}, "teardown": {"duration": 0.0004107300046598539, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_multiple_different_context_capability_pairs_allowed", "lineno": 250, "outcome": "passed", "keywords": ["test_multiple_different_context_capability_pairs_allowed", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0013887789973523468, "outcome": "passed"}, "call": {"duration": 0.20978864500648342, "outcome": "passed"}, "teardown": {"duration": 0.00043502300104591995, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_priority_auto_assignment", "lineno": 134, "outcome": "passed", "keywords": ["test_priority_auto_assignment", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0017002520035021007, "outcome": "passed"}, "call": {"duration": 0.179360515990993, "outcome": "passed"}, "teardown": {"duration": 0.0004920460050925612, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_unauthorized_access", "lineno": 159, "outcome": "passed", "keywords": ["test_unauthorized_access", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011583529994823039, "outcome": "passed"}, "call": {"duration": 0.36033111599681433, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/applications/6a3a114b-4c25-41ae-9af8-0da2460aa5f1/ai-providers/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181286.856342, "msecs": 856.0, "relativeCreated": 9548.414945602417, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}, {"name": "django.request", "msg": "Not Found: /api/applications/6a3a114b-4c25-41ae-9af8-0da2460aa5f1/ai-providers/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181286.8592904, "msecs": 859.0, "relativeCreated": 9551.363229751587, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}, {"name": "django.request", "msg": "Not Found: /api/applications/6a3a114b-4c25-41ae-9af8-0da2460aa5f1/ai-providers/37f7fe15-f035-479a-9cf7-ee29b2363677/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181286.8613145, "msecs": 861.0, "relativeCreated": 9553.38740348816, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}, {"name": "django.request", "msg": "Not Found: /api/applications/6a3a114b-4c25-41ae-9af8-0da2460aa5f1/ai-providers/37f7fe15-f035-479a-9cf7-ee29b2363677/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181286.863109, "msecs": 863.0, "relativeCreated": 9555.181980133057, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}, {"name": "django.request", "msg": "Not Found: /api/applications/6a3a114b-4c25-41ae-9af8-0da2460aa5f1/ai-providers/37f7fe15-f035-479a-9cf7-ee29b2363677/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181286.8649907, "msecs": 864.0, "relativeCreated": 9557.063579559326, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00046389900671783835, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_uniqueness_constraint_same_app_context_capability", "lineno": 217, "outcome": "passed", "keywords": ["test_uniqueness_constraint_same_app_context_capability", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011537249956745654, "outcome": "passed"}, "call": {"duration": 0.2212437569978647, "outcome": "passed"}, "teardown": {"duration": 0.00037019100273028016, "outcome": "passed"}}, {"nodeid": "core/tests/test_app_ai_provider.py::AppAIProviderTest::test_update_app_ai_provider", "lineno": 99, "outcome": "passed", "keywords": ["test_update_app_ai_provider", "AppAIProviderTest", "test_app_ai_provider.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010496180038899183, "outcome": "passed"}, "call": {"duration": 0.19532733400410507, "outcome": "passed"}, "teardown": {"duration": 0.0007784440094837919, "outcome": "passed"}}, {"nodeid": "core/tests/test_basic.py::TestBasic::test_math", "lineno": 4, "outcome": "passed", "keywords": ["test_math", "unit", "pytestmark", "TestBasic", "test_basic.py", "tests", "core", "backend", ""], "setup": {"duration": 0.005228598005487584, "outcome": "passed"}, "call": {"duration": 0.00025656999787315726, "outcome": "passed"}, "teardown": {"duration": 0.0010828220110852271, "outcome": "passed"}}, {"nodeid": "core/tests/test_basic.py::TestBasic::test_strings", "lineno": 10, "outcome": "passed", "keywords": ["test_strings", "unit", "pytestmark", "TestBasic", "test_basic.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001307602011365816, "outcome": "passed"}, "call": {"duration": 0.00020315300207585096, "outcome": "passed"}, "teardown": {"duration": 0.0009407699981238693, "outcome": "passed"}}, {"nodeid": "core/tests/test_basic.py::TestBasic::test_lists", "lineno": 16, "outcome": "passed", "keywords": ["test_lists", "unit", "pytestmark", "TestBasic", "test_basic.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0013082090008538216, "outcome": "passed"}, "call": {"duration": 0.00021072098752483726, "outcome": "passed"}, "teardown": {"duration": 0.0012070520024280995, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_create_integration_invalid_token", "lineno": 64, "outcome": "passed", "keywords": ["test_create_integration_invalid_token", "__wrapped__", "patchings", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001393874001223594, "outcome": "passed"}, "call": {"duration": 0.009926540005835705, "outcome": "passed", "log": [{"name": "django.request", "msg": "Bad Request: /api/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.3124948, "msecs": 312.0, "relativeCreated": 10004.567623138428, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 400, "request": ""}]}, "teardown": {"duration": 0.0006418970006052405, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_create_integration_unsupported_provider", "lineno": 79, "outcome": "passed", "keywords": ["test_create_integration_unsupported_provider", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001788313005818054, "outcome": "passed"}, "call": {"duration": 0.006100049999076873, "outcome": "passed", "log": [{"name": "django.request", "msg": "Bad Request: /api/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.3224847, "msecs": 322.0, "relativeCreated": 10014.557600021362, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 400, "request": ""}]}, "teardown": {"duration": 0.0006312510085990652, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_create_integration_valid_token", "lineno": 49, "outcome": "passed", "keywords": ["test_create_integration_valid_token", "__wrapped__", "patchings", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001716074999421835, "outcome": "passed"}, "call": {"duration": 0.009730186997330748, "outcome": "passed"}, "teardown": {"duration": 0.0003875440015690401, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_delete_other_users_integration", "lineno": 152, "outcome": "passed", "keywords": ["test_delete_other_users_integration", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011089440085925162, "outcome": "passed"}, "call": {"duration": 0.009175705999950878, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/integrations/a63b4f17-67a7-4700-bab3-523aee185700/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.347297, "msecs": 347.0, "relativeCreated": 10039.369821548462, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00037684899871237576, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_delete_own_integration", "lineno": 142, "outcome": "passed", "keywords": ["test_delete_own_integration", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001040315008140169, "outcome": "passed"}, "call": {"duration": 0.009914520996971987, "outcome": "passed"}, "teardown": {"duration": 0.00040277300286106765, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_integration_model_has_no_type_field", "lineno": 162, "outcome": "passed", "keywords": ["test_integration_model_has_no_type_field", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010722419974626973, "outcome": "passed"}, "call": {"duration": 0.001212488001328893, "outcome": "passed"}, "teardown": {"duration": 0.00030980000155977905, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_integration_uses_base_model", "lineno": 167, "outcome": "passed", "keywords": ["test_integration_uses_base_model", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012377560051390901, "outcome": "passed"}, "call": {"duration": 0.0013114519970258698, "outcome": "passed"}, "teardown": {"duration": 0.00039109800127334893, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_list_integrations_authenticated", "lineno": 26, "outcome": "passed", "keywords": ["test_list_integrations_authenticated", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0015222189977066591, "outcome": "passed"}, "call": {"duration": 0.010699221005779691, "outcome": "passed"}, "teardown": {"duration": 0.00037331100611481816, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_list_integrations_unauthenticated", "lineno": 44, "outcome": "passed", "keywords": ["test_list_integrations_unauthenticated", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012164530053269118, "outcome": "passed"}, "call": {"duration": 0.00364985600754153, "outcome": "passed", "log": [{"name": "django.request", "msg": "Forbidden: /api/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.3855271, "msecs": 385.0, "relativeCreated": 10077.600002288818, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 403, "request": ""}]}, "teardown": {"duration": 0.00035174300137441605, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_retrieve_other_users_integration", "lineno": 102, "outcome": "passed", "keywords": ["test_retrieve_other_users_integration", "__wrapped__", "patchings", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010451559937791899, "outcome": "passed"}, "call": {"duration": 0.008570900987251662, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/integrations/c987c159-cee5-4c9d-ab74-b2ab10b97a84/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.396222, "msecs": 396.0, "relativeCreated": 10088.294982910156, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00038663699524477124, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_retrieve_own_integration", "lineno": 92, "outcome": "passed", "keywords": ["test_retrieve_own_integration", "__wrapped__", "patchings", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011760080087697133, "outcome": "passed"}, "call": {"duration": 0.008696657008840702, "outcome": "passed"}, "teardown": {"duration": 0.0004248949990142137, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_update_other_users_integration", "lineno": 128, "outcome": "passed", "keywords": ["test_update_other_users_integration", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011719330068444833, "outcome": "passed"}, "call": {"duration": 0.007985835007275455, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/integrations/02d048c4-ff47-4241-83dc-241755c35edc/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.4177387, "msecs": 417.0, "relativeCreated": 10109.811544418335, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00036798600922338665, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestIntegrationAPI::test_update_own_integration", "lineno": 113, "outcome": "passed", "keywords": ["test_update_own_integration", "__wrapped__", "patchings", "TestIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011289319954812527, "outcome": "passed"}, "call": {"duration": 0.011343823003699072, "outcome": "passed"}, "teardown": {"duration": 0.0009205759997712448, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_app_integration_unique_constraint", "lineno": 274, "outcome": "passed", "keywords": ["test_app_integration_unique_constraint", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.005380590999266133, "outcome": "passed"}, "call": {"duration": 0.008013572005438618, "outcome": "passed"}, "teardown": {"duration": 0.00037111699930392206, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_app_integration_upsert", "lineno": 254, "outcome": "passed", "keywords": ["test_app_integration_upsert", "__wrapped__", "patchings", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010510930005693808, "outcome": "passed"}, "call": {"duration": 0.02764326501346659, "outcome": "passed"}, "teardown": {"duration": 0.0003983719943789765, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_other_users_app", "lineno": 217, "outcome": "passed", "keywords": ["test_create_app_integration_other_users_app", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011067909945268184, "outcome": "passed"}, "call": {"duration": 0.008377723002922721, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/applications/f7a0f678-3352-4838-b1ca-ef7846f5be40/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.4869912, "msecs": 486.0, "relativeCreated": 10179.06403541565, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.000369897999917157, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_other_users_integration", "lineno": 235, "outcome": "passed", "keywords": ["test_create_app_integration_other_users_integration", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011212230019737035, "outcome": "passed"}, "call": {"duration": 0.01266723099979572, "outcome": "passed", "log": [{"name": "django.request", "msg": "Bad Request: /api/applications/aadd07b9-1c85-44db-985a-d2987b6840d0/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.5016766, "msecs": 501.0, "relativeCreated": 10193.74942779541, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 400, "request": ""}]}, "teardown": {"duration": 0.0004016430029878393, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_unsupported_type", "lineno": 199, "outcome": "passed", "keywords": ["test_create_app_integration_unsupported_type", "__wrapped__", "patchings", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001322832002188079, "outcome": "passed"}, "call": {"duration": 0.01148052400094457, "outcome": "passed", "log": [{"name": "django.request", "msg": "Bad Request: /api/applications/d356a3e4-db46-4750-98be-5c3d108a80fc/integrations/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.515882, "msecs": 515.0, "relativeCreated": 10207.95488357544, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 400, "request": ""}]}, "teardown": {"duration": 0.0003818620025413111, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_create_app_integration_valid", "lineno": 181, "outcome": "passed", "keywords": ["test_create_app_integration_valid", "__wrapped__", "patchings", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010942029912257567, "outcome": "passed"}, "call": {"duration": 0.0155070920009166, "outcome": "passed"}, "teardown": {"duration": 0.0003974659921368584, "outcome": "passed"}}, {"nodeid": "core/tests/test_integration.py::TestAppIntegrationAPI::test_delete_app_integration", "lineno": 293, "outcome": "passed", "keywords": ["test_delete_app_integration", "__wrapped__", "patchings", "TestAppIntegrationAPI", "api", "test_integration.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011087079910794273, "outcome": "passed"}, "call": {"duration": 0.012893702005385421, "outcome": "passed"}, "teardown": {"duration": 0.0008087369933491573, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestDeletedFilesAbsent::test_pms_github_file_does_not_exist", "lineno": 21, "outcome": "passed", "keywords": ["test_pms_github_file_does_not_exist", "TestDeletedFilesAbsent", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.005511419993126765, "outcome": "passed"}, "call": {"duration": 0.0003053399996133521, "outcome": "passed"}, "teardown": {"duration": 0.0011657900031423196, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestDeletedFilesAbsent::test_vc_validator_file_does_not_exist", "lineno": 26, "outcome": "passed", "keywords": ["test_vc_validator_file_does_not_exist", "TestDeletedFilesAbsent", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0014509230095427483, "outcome": "passed"}, "call": {"duration": 0.0002543190057622269, "outcome": "passed"}, "teardown": {"duration": 0.001550626999232918, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable::test_vc_validator_module_not_importable", "lineno": 35, "outcome": "passed", "keywords": ["test_vc_validator_module_not_importable", "TestValidateVcCredentialsNotImportable", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0017191039951285347, "outcome": "passed"}, "call": {"duration": 0.0008303270005853847, "outcome": "passed"}, "teardown": {"duration": 0.0012113799893995747, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable::test_validate_vc_credentials_not_in_integrations_init", "lineno": 40, "outcome": "passed", "keywords": ["test_validate_vc_credentials_not_in_integrations_init", "TestValidateVcCredentialsNotImportable", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001349489000858739, "outcome": "passed"}, "call": {"duration": 0.00020508399757090956, "outcome": "passed"}, "teardown": {"duration": 0.001089619006961584, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestValidateVcCredentialsNotImportable::test_validate_vc_credentials_not_importable_directly", "lineno": 47, "outcome": "passed", "keywords": ["test_validate_vc_credentials_not_importable_directly", "TestValidateVcCredentialsNotImportable", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012868799967691302, "outcome": "passed"}, "call": {"duration": 0.00043869001092389226, "outcome": "passed"}, "teardown": {"duration": 0.0011104169971076772, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestPreservedModulesImportable::test_validate_github_token_importable", "lineno": 59, "outcome": "passed", "keywords": ["test_validate_github_token_importable", "TestPreservedModulesImportable", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0014101139968261123, "outcome": "passed"}, "call": {"duration": 0.0002022780099650845, "outcome": "passed"}, "teardown": {"duration": 0.0010681940038921311, "outcome": "passed"}}, {"nodeid": "core/tests/test_integrations_cleanup.py::TestPreservedModulesImportable::test_parse_url_schema_importable", "lineno": 64, "outcome": "passed", "keywords": ["test_parse_url_schema_importable", "TestPreservedModulesImportable", "test_integrations_cleanup.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0019253510108683258, "outcome": "passed"}, "call": {"duration": 0.00021399800607468933, "outcome": "passed"}, "teardown": {"duration": 0.0012503520119935274, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_create_email_notification_profile", "lineno": 97, "outcome": "passed", "keywords": ["test_create_email_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0014816510083619505, "outcome": "passed"}, "call": {"duration": 0.010093383010826074, "outcome": "passed"}, "teardown": {"duration": 0.0005059499962953851, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_create_notification_profile", "lineno": 71, "outcome": "passed", "keywords": ["test_create_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001217321987496689, "outcome": "passed"}, "call": {"duration": 0.00985042899264954, "outcome": "passed"}, "teardown": {"duration": 0.0004231029888615012, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_delete_other_users_notification_profile", "lineno": 315, "outcome": "passed", "keywords": ["test_delete_other_users_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011217749997740611, "outcome": "passed"}, "call": {"duration": 0.010189360997173935, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/notification-profiles/3/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.6167197, "msecs": 616.0, "relativeCreated": 10308.79259109497, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.0005533760122489184, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_delete_own_notification_profile", "lineno": 300, "outcome": "passed", "keywords": ["test_delete_own_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0014903520059306175, "outcome": "passed"}, "call": {"duration": 0.011377688992070034, "outcome": "passed"}, "teardown": {"duration": 0.0003949390084017068, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_list_notification_profiles_authenticated_user", "lineno": 15, "outcome": "passed", "keywords": ["test_list_notification_profiles_authenticated_user", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011334150040056556, "outcome": "passed"}, "call": {"duration": 0.015147149009862915, "outcome": "passed"}, "teardown": {"duration": 0.0004821339971385896, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_list_notification_profiles_unauthenticated", "lineno": 38, "outcome": "passed", "keywords": ["test_list_notification_profiles_unauthenticated", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012665480026043952, "outcome": "passed"}, "call": {"duration": 0.004900026993709616, "outcome": "passed", "log": [{"name": "django.request", "msg": "Forbidden: /api/notification-profiles/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.662405, "msecs": 662.0, "relativeCreated": 10354.477882385254, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 403, "request": ""}]}, "teardown": {"duration": 0.0004476589965634048, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_put_method_not_allowed", "lineno": 282, "outcome": "passed", "keywords": ["test_put_method_not_allowed", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011480950051918626, "outcome": "passed"}, "call": {"duration": 0.007466362993000075, "outcome": "passed", "log": [{"name": "django.request", "msg": "Method Not Allowed: /api/notification-profiles/8/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.6724389, "msecs": 672.0, "relativeCreated": 10364.511728286743, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 405, "request": ""}]}, "teardown": {"duration": 0.00043643299432005733, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_retrieve_other_users_notification_profile", "lineno": 57, "outcome": "passed", "keywords": ["test_retrieve_other_users_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001142747001722455, "outcome": "passed"}, "call": {"duration": 0.010378133010817692, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/notification-profiles/9/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.685277, "msecs": 685.0, "relativeCreated": 10377.349853515625, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.0004092210001545027, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_retrieve_own_notification_profile", "lineno": 43, "outcome": "passed", "keywords": ["test_retrieve_own_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001120317989261821, "outcome": "passed"}, "call": {"duration": 0.0076045229943702, "outcome": "passed"}, "teardown": {"duration": 0.00038365299405995756, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_notification_profile_email", "lineno": 181, "outcome": "passed", "keywords": ["test_update_notification_profile_email", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011426499986555427, "outcome": "passed"}, "call": {"duration": 0.011156430002301931, "outcome": "passed"}, "teardown": {"duration": 0.0003741160035133362, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_notification_profile_webhook_url", "lineno": 154, "outcome": "passed", "keywords": ["test_update_notification_profile_webhook_url", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0010386920039309189, "outcome": "passed"}, "call": {"duration": 0.01277080801082775, "outcome": "passed"}, "teardown": {"duration": 0.0004425950028235093, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_other_users_notification_profile", "lineno": 139, "outcome": "passed", "keywords": ["test_update_other_users_notification_profile", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001220216989167966, "outcome": "passed"}, "call": {"duration": 0.009218533014063723, "outcome": "passed", "log": [{"name": "django.request", "msg": "Not Found: /api/notification-profiles/13/", "args": null, "levelname": "WARNING", "levelno": 30, "pathname": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/django/utils/log.py", "filename": "log.py", "module": "log", "exc_info": null, "exc_text": null, "stack_info": null, "lineno": 253, "funcName": "log_response", "created": 1776181287.735822, "msecs": 735.0, "relativeCreated": 10427.894830703735, "thread": 140019863933184, "threadName": "MainThread", "processName": "MainProcess", "process": 564336, "status_code": 404, "request": ""}]}, "teardown": {"duration": 0.00048261499614454806, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_own_notification_profile_name", "lineno": 119, "outcome": "passed", "keywords": ["test_update_own_notification_profile_name", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.001180780993308872, "outcome": "passed"}, "call": {"duration": 0.012037933003739454, "outcome": "passed"}, "teardown": {"duration": 0.00041039798816200346, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_with_empty_webhook_does_not_change_webhook", "lineno": 230, "outcome": "passed", "keywords": ["test_update_with_empty_webhook_does_not_change_webhook", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011471460020402446, "outcome": "passed"}, "call": {"duration": 0.010851896004169248, "outcome": "passed"}, "teardown": {"duration": 0.0004276489926269278, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_with_whitespace_webhook_does_not_change_webhook", "lineno": 256, "outcome": "passed", "keywords": ["test_update_with_whitespace_webhook_does_not_change_webhook", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0012030200014123693, "outcome": "passed"}, "call": {"duration": 0.01297024599625729, "outcome": "passed"}, "teardown": {"duration": 0.00040756700036581606, "outcome": "passed"}}, {"nodeid": "core/tests/test_notification_profile.py::TestNotificationProfileAPI::test_update_without_config_does_not_change_config", "lineno": 207, "outcome": "passed", "keywords": ["test_update_without_config_does_not_change_config", "TestNotificationProfileAPI", "api", "test_notification_profile.py", "tests", "core", "backend", ""], "setup": {"duration": 0.0011571690120035782, "outcome": "passed"}, "call": {"duration": 0.010889080003835261, "outcome": "passed"}, "teardown": {"duration": 0.025139771998510696, "outcome": "passed"}}], "warnings": [{"message": "PyPDF2 is deprecated. Please move to the pypdf library instead.", "category": "DeprecationWarning", "when": "collect", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/PyPDF2/__init__.py", "lineno": 21}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "Pagination may yield inconsistent results with an unordered object_list: QuerySet.", "category": "UnorderedObjectListWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/rest_framework/pagination.py", "lineno": 207}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}, {"message": "NotificationProfileFactory._after_postgeneration will stop saving the instance after postgeneration hooks in the next major release.\nIf the save call is extraneous, set skip_postgeneration_save=True in the NotificationProfileFactory.Meta.\nTo keep saving the instance, move the save call to your postgeneration hooks or override _after_postgeneration.", "category": "DeprecationWarning", "when": "runtest", "filename": "/home/krrish/projects/ch8r/backend/.venv/lib/python3.10/site-packages/factory/django.py", "lineno": 182}]} \ No newline at end of file From 66d7c8f23456ff85e0ad0ab4b51cbc6ee10f8776 Mon Sep 17 00:00:00 2001 From: Krrish Ghimire Date: Tue, 14 Apr 2026 21:31:39 +0545 Subject: [PATCH 4/4] remove unnecessary files --- backend/.coverage | Bin 77824 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 backend/.coverage diff --git a/backend/.coverage b/backend/.coverage deleted file mode 100644 index 7fd868f0c404b669865447c69004c1eeb913e1a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77824 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 z zlRd75NH3UTJId;TyQv8pKgknO>fY+q+R)e{ldCD<2A={n}%m58lXMEez-1;UDLh@;vt&?f^H> z@v-AOj;)UI_A~Ye>`Uyd?Ps>#w%P2T+2`46cDVH;>-Vf4>qJYp}zV zA-aKX={;0U2CPxKv2NQlugwFz$-40p4H*ot1`dSECIPDEYIVCQ(Y1GedEEvM{gzJz zRL#~Jw~nM7tBkF30>J4n+ytBoYdw6BPcGD57zr0n?U~17!ICS-rKDpFA;~pdHx{r8 zbnBRK^VK>gMh}%^Qc^JitDo3lq7QL9#@r1hebQJ{oXYtp!xsYkZO zPJl4$hEOpvZKM(Tv;w%JiwY$p^k^PkLQlR~qkK3(Xl{X{5dB;tu-l4Z05e#t{!tjU zeJN3ZR6aBXg|IWKLIaqR+!UxuhA0~X5Sp9DSf2VXq?YHTm>-oV1oez%Y;6;mL%zxxrp2Rf^=@X84nFB7bw>}S8pQyA0ie@h&M#QaeTUuZPEX^aw zeptAXgAbhQwqIx~V-^Dt#a4jO+;c@$NV@Y0J}00*6RMtXx>-lnjo*+u)nr7CS{o0@ zGHxX18+Diu+^7mOcwoVGID}Ihbf;G3awcO$A+7qV(&6zxx&QxFu~~EqJ+L~zNf^wZ zfzkgG?k0Db+s=)3{JZ0uj#`J){+7MXKF#(=+jF*UwhZp@V3G*)V2-91pCev8s2gaw3n~WKT*9}2KK68wTF!Rt&c#;6V)fwOB1dOOntK!KI z02KMbGBnrs7O&JADyWV4d~Gfq#+3VXP_Cp`Q8&9uhew$7{K29|P&{30rhQ(R3%cd= z2Z8N?<4FxCrRNVyy>LP8t#m?h6>U`wfT6jcSE>pAz1`wsReg$hs*W}Uv&)j(AHmD9 z<#m9k*<)4dr@{l6A_-tL8>b2e8b7ZG0G8AOfaacG1u)QAUEl#I&HaD^6(3JwN@`N1 zB-!Dub^}bgR&$LHgc1Yfe&d3HQ>9haa0Sh_rMkjx);2f00B_D;QDap-DBA|un%#xC zuKn(YnZH#>6Q)cZ0s;x(g1sAb&}{2*9r`awF5dz$`X^Fuw@kWnGr*12&3ZpL_4v7D z6Ci4K#1)#Na51VXHUfm^5h%Xf2%MP+JY-OS!|`QTAbsHmKyql!o*GGIJ>}~GM1RTk zzYA*SIvs9(?V5DTmsyoz{lmm!ne@3050b}GvWvOzL?4wmK1ROn0 zP~2Rw4JKnPDos@IGh|Eh~SdT+(Ty8s|1qf>R0Mf3G&k(joR-+5X!4*)cKlq!=*e#AKbAVkGnz|-6e zC*j2$lISBEWpe;YbGML$q!4W1OKO^DW|i45)w5mLrIhhn znr3a(BN-_e39yaK$G1K&keA>;M5l%O!I`kDKsGG15Hyzrye$`f?AHo5RKitv=4 z*Mt4PWino0(|m(W5?b^gNcGrnk&M^bG`n?bI2=Q4Ym?gs^TSRL*7?s4|+OSN<3vHSU zDXA}v_NrLPBZDrCISrkN9UMqqvw zZt6=s=~XJ@6*tZ9zd~<+kYd>kAUcgC`PPwQ*`yyL*;LD9BS7dZk-9*zJ`h$vMz>Hl z0F36bNW$QfP!`AxplF_kS5R>Ei%sDa%Sb;V(JtE^3FDVyl{cC}UeYU{7PRQOGBiEPbU`HcDDC`+jx`J=*Q$A? zg<-h5&bm2ZMrlq+$7D(LKA32gDh|T+H8*te+^e2$E#9FAA#Tp9Nu$}#I?7G~h|aRu ztxuup=xGG^`m@}xxrewaPH_CfvBxpb{<;0{?Q88KdRqK3(FcrMMMlM!67Nv;^W2cG<6bfTzTF(juzNU|%2I(0pzr<84fUu>_gXCM`f zWM8a9*LyG&1hp^LuIrg*B|Tw2J9Nt$#=pg)EB1lFu_#dheYUbSB3)AR19*i!KlU9TchI}tdno}S#OtK`*4syuAa z^~kvD#QAk*I)kp%cdq@lw90C^+FU{XweyYb zn)?d{A>psiK!{m2uo