| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708 |
- {"Time":"2026-09-12T23:10:35.4591905+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/service"}
- {"Time":"2026-09-12T23:10:35.4591905+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/repository"}
- {"Time":"2026-09-12T23:10:35.4591905+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin"}
- {"Time":"2026-09-12T23:10:35.4591905+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware"}
- {"Time":"2026-09-12T23:10:35.4591905+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto"}
- {"Time":"2026-09-12T23:10:37.6768707+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Test":"TestMode1SeedStaysServerManaged"}
- {"Time":"2026-09-12T23:10:37.6773829+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Test":"TestMode1SeedStaysServerManaged","Output":"=== RUN TestMode1SeedStaysServerManaged\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:37.6773829+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Test":"TestMode1SeedStaysServerManaged","Output":"--- PASS: TestMode1SeedStaysServerManaged (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:37.6773829+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Test":"TestMode1SeedStaysServerManaged","Elapsed":0}
- {"Time":"2026-09-12T23:10:37.6778954+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Output":"PASS\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:37.6804552+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Output":"ok \tgithub.com/Wei-Shaw/sub2api/internal/handler/dto\t2.221s\n"}
- {"Time":"2026-09-12T23:10:37.6804552+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Elapsed":2.221}
- {"Time":"2026-09-12T23:10:38.6368534+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch"}
- {"Time":"2026-09-12T23:10:38.6368534+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6368534+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_balance_super"}
- {"Time":"2026-09-12T23:10:38.6368534+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_balance_super","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch/admin_balance_super\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_balance_super","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch/admin_balance_super (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_balance_super","Elapsed":0}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_totp_super"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_totp_super","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch/admin_totp_super\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_totp_super","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch/admin_totp_super (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_totp_super","Elapsed":0}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_super"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_super","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_super\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_super","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_super (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_super","Elapsed":0}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_all"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_all","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_all\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_all","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_all (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_all","Elapsed":0}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_promote_self"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_promote_self","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch/admin_promote_self\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_promote_self","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch/admin_promote_self (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_promote_self","Elapsed":0}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_create_admin"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_create_admin","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch/admin_create_admin\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_create_admin","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch/admin_create_admin (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_create_admin","Elapsed":0}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_update_user"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_update_user","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch/admin_update_user\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_update_user","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch/admin_update_user (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_update_user","Elapsed":0}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/super_update_admin"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/super_update_admin","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch/super_update_admin\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/super_update_admin","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch/super_update_admin (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/super_update_admin","Elapsed":0}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/user_forbidden"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/user_forbidden","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch/user_forbidden\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/user_forbidden","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch/user_forbidden (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/user_forbidden","Elapsed":0}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch","Elapsed":0}
- {"Time":"2026-09-12T23:10:38.6373901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Output":"PASS\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:38.6404406+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Output":"ok \tgithub.com/Wei-Shaw/sub2api/internal/server/middleware\t3.181s\n"}
- {"Time":"2026-09-12T23:10:38.6404406+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Elapsed":3.181}
- {"Time":"2026-09-12T23:10:40.5851193+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin","Output":"testing: warning: no tests to run\n"}
- {"Time":"2026-09-12T23:10:40.5851193+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin","Output":"PASS\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:40.5891587+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin","Output":"ok \tgithub.com/Wei-Shaw/sub2api/internal/handler/admin\t5.130s [no tests to run]\n"}
- {"Time":"2026-09-12T23:10:40.5891587+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin","Elapsed":5.13}
- {"Time":"2026-09-12T23:10:41.1245194+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionRolesMigrationKeepsDataAndIsIdempotent"}
- {"Time":"2026-09-12T23:10:41.1245194+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionRolesMigrationKeepsDataAndIsIdempotent","Output":"=== RUN TestAccountProtectionRolesMigrationKeepsDataAndIsIdempotent\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.014369+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Output":"2026/09/12 15:10:43 Timezone initialized: UTC (UTC offset: +00:00)\n"}
- {"Time":"2026-09-12T23:10:43.0171217+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads"}
- {"Time":"2026-09-12T23:10:43.0171217+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads","Output":"=== RUN TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads","Output":"--- PASS: TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1RuntimeRejectsConfigurationDrift"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1RuntimeRejectsConfigurationDrift","Output":"=== RUN TestMode1RuntimeRejectsConfigurationDrift\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1RuntimeRejectsConfigurationDrift","Output":"--- PASS: TestMode1RuntimeRejectsConfigurationDrift (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1RuntimeRejectsConfigurationDrift","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidMarkerDoesNotDowngrade"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidMarkerDoesNotDowngrade","Output":"=== RUN TestMode1InvalidMarkerDoesNotDowngrade\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidMarkerDoesNotDowngrade","Output":"--- PASS: TestMode1InvalidMarkerDoesNotDowngrade (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidMarkerDoesNotDowngrade","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer","Output":"=== RUN TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer","Output":"--- PASS: TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1PartialAndBulkUpdatesCannotDisablePolicy"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1PartialAndBulkUpdatesCannotDisablePolicy","Output":"=== RUN TestMode1PartialAndBulkUpdatesCannotDisablePolicy\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1PartialAndBulkUpdatesCannotDisablePolicy","Output":"--- PASS: TestMode1PartialAndBulkUpdatesCannotDisablePolicy (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1PartialAndBulkUpdatesCannotDisablePolicy","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback","Output":"=== RUN TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback","Output":"--- PASS: TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1UsesExistingPluginRouting"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1UsesExistingPluginRouting","Output":"=== RUN TestMode1UsesExistingPluginRouting\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1UsesExistingPluginRouting","Output":"--- PASS: TestMode1UsesExistingPluginRouting (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1UsesExistingPluginRouting","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IntegrityPreservesReasoningToolsAndBudget"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IntegrityPreservesReasoningToolsAndBudget","Output":"=== RUN TestMode1IntegrityPreservesReasoningToolsAndBudget\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IntegrityPreservesReasoningToolsAndBudget","Output":"--- PASS: TestMode1IntegrityPreservesReasoningToolsAndBudget (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IntegrityPreservesReasoningToolsAndBudget","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough","Output":"=== RUN TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false"}
- {"Time":"2026-09-12T23:10:43.0186936+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false","Output":"=== RUN TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0202914+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false","Output":"--- PASS: TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true","Output":"=== RUN TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name=mode1 type=oauth model=gpt-5.2 stream=true\n"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true","Output":"--- PASS: TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough","Output":"--- PASS: TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity","Output":"=== RUN TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity","Output":"--- PASS: TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidVersionCanBeExplicitlyRestored"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidVersionCanBeExplicitlyRestored","Output":"=== RUN TestMode1InvalidVersionCanBeExplicitlyRestored\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidVersionCanBeExplicitlyRestored","Output":"--- PASS: TestMode1InvalidVersionCanBeExplicitlyRestored (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidVersionCanBeExplicitlyRestored","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DamagedModeDoesNotSilentlyDisableProtection"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DamagedModeDoesNotSilentlyDisableProtection","Output":"=== RUN TestMode1DamagedModeDoesNotSilentlyDisableProtection\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DamagedModeDoesNotSilentlyDisableProtection","Output":"--- PASS: TestMode1DamagedModeDoesNotSilentlyDisableProtection (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DamagedModeDoesNotSilentlyDisableProtection","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardTransportWithTLSGloballyDisabled"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardTransportWithTLSGloballyDisabled","Output":"=== RUN TestMode1V3StandardTransportWithTLSGloballyDisabled\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardTransportWithTLSGloballyDisabled","Output":"--- PASS: TestMode1V3StandardTransportWithTLSGloballyDisabled (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardTransportWithTLSGloballyDisabled","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3","Output":"=== RUN TestMode1ForwardRegressionV2AndV3\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=0"}
- {"Time":"2026-09-12T23:10:43.020823+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=0","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=0\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0223856+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=0","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=0 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0223856+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=0","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0223856+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=1"}
- {"Time":"2026-09-12T23:10:43.0223856+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=1","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=1\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0249693+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=1","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=1 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0249693+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=1","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0249693+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2"}
- {"Time":"2026-09-12T23:10:43.0249693+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0249693+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2","Output":"2026/09/12 15:10:43 [OpenAI] Upstream model resolved: gpt-5.4-high -\u003e gpt-5.4 (account: , type: oauth, isCodexCLI: false)\n"}
- {"Time":"2026-09-12T23:10:43.0249693+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2","Output":"2026/09/12 15:10:43 [OpenAI] Normalized reasoning.effort: minimal -\u003e none (account: )\n"}
- {"Time":"2026-09-12T23:10:43.0259958+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0259958+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0259958+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=3"}
- {"Time":"2026-09-12T23:10:43.0259958+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=3","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=3\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0270306+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=3","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=3 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0270306+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=3","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0270306+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=4"}
- {"Time":"2026-09-12T23:10:43.0270306+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=4","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=4\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=4","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=4 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=4","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=0"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=0","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=0\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=0","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=0","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=0 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=0","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=1"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=1","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=1\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=1","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=1","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=1 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=1","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=2"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=2","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=2\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=2","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.4-high stream=true\n"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=2","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=2 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=2","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=3"}
- {"Time":"2026-09-12T23:10:43.0285895+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=3","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=3\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0291122+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=3","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
- {"Time":"2026-09-12T23:10:43.0291122+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=3","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=3 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0291122+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=3","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0291122+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=4"}
- {"Time":"2026-09-12T23:10:43.0291122+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=4","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=4\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0291122+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=4","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
- {"Time":"2026-09-12T23:10:43.0291122+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=4","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=4 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0291122+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=4","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0291122+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=0"}
- {"Time":"2026-09-12T23:10:43.0291122+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=0","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=0\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0333044+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=0","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=0 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0333044+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=0","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0333044+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=1"}
- {"Time":"2026-09-12T23:10:43.0333044+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=1","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=1\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0343415+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=1","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=1 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0348753+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=1","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0348753+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2"}
- {"Time":"2026-09-12T23:10:43.0348753+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0348753+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2","Output":"2026/09/12 15:10:43 [OpenAI] Upstream model resolved: gpt-5.4-high -\u003e gpt-5.4 (account: , type: oauth, isCodexCLI: false)\n"}
- {"Time":"2026-09-12T23:10:43.0348753+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2","Output":"2026/09/12 15:10:43 [OpenAI] Normalized reasoning.effort: minimal -\u003e none (account: )\n"}
- {"Time":"2026-09-12T23:10:43.0353854+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0353854+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0353854+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=3"}
- {"Time":"2026-09-12T23:10:43.0353854+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=3","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=3\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0369559+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=3","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=3 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0369559+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=3","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0369559+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=4"}
- {"Time":"2026-09-12T23:10:43.0369559+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=4","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=4\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.037975+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=4","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=4 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0384855+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=4","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0384855+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=0"}
- {"Time":"2026-09-12T23:10:43.0384855+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=0","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=0\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0384855+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=0","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
- {"Time":"2026-09-12T23:10:43.0389978+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=0","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=0 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0389978+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=0","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0389978+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=1"}
- {"Time":"2026-09-12T23:10:43.0389978+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=1","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=1\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0389978+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=1","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
- {"Time":"2026-09-12T23:10:43.0389978+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=1","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=1 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0389978+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=1","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0389978+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=2"}
- {"Time":"2026-09-12T23:10:43.0389978+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=2","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=2\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0389978+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=2","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.4-high stream=true\n"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=2","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=2 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=2","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=3"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=3","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=3\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=3","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=3","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=3 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=3","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=4"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=4","Output":"=== RUN TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=4\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=4","Output":"2026/09/12 15:10:43 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=4","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=4 (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=4","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3 (0.02s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0395061+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3","Elapsed":0.02}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOldAccountsAreNotSilentlyChanged"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOldAccountsAreNotSilentlyChanged","Output":"=== RUN TestAccountProtectionOldAccountsAreNotSilentlyChanged\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOldAccountsAreNotSilentlyChanged","Output":"--- PASS: TestAccountProtectionOldAccountsAreNotSilentlyChanged (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOldAccountsAreNotSilentlyChanged","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy","Output":"=== RUN TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy","Output":"--- PASS: TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity","Output":"=== RUN TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity","Output":"--- PASS: TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0400123+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.043128+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound"}
- {"Time":"2026-09-12T23:10:43.043128+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilGroupID_NoOp"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilGroupID_NoOp","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_NilGroupID_NoOp\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilGroupID_NoOp","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_NilGroupID_NoOp (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilGroupID_NoOp","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_Unbind\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_Unbind (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SameGroup_Idempotent"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SameGroup_Idempotent","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_SameGroup_Idempotent\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SameGroup_Idempotent","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_SameGroup_Idempotent (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SameGroup_Idempotent","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup","Output":"2026/09/12 15:10:43 Warning: entClient is nil, skipping transaction protection for exclusive group binding\n"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NonExclusiveGroup_NoAllowedGroupUpdate"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NonExclusiveGroup_NoAllowedGroupUpdate","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_NonExclusiveGroup_NoAllowedGroupUpdate\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NonExclusiveGroup_NoAllowedGroupUpdate","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_NonExclusiveGroup_NoAllowedGroupUpdate (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NonExclusiveGroup_NoAllowedGroupUpdate","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_Blocked"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_Blocked","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_Blocked\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_Blocked","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_Blocked (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_Blocked","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_RequiresRepo"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_RequiresRepo","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_RequiresRepo\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_RequiresRepo","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_RequiresRepo (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_RequiresRepo","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_AllowsActiveSubscription"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_AllowsActiveSubscription","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_AllowsActiveSubscription\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_AllowsActiveSubscription","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_AllowsActiveSubscription (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_AllowsActiveSubscription","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AllowedGroupAddFails_ReturnsError"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AllowedGroupAddFails_ReturnsError","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AllowedGroupAddFails_ReturnsError\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AllowedGroupAddFails_ReturnsError","Output":"2026/09/12 15:10:43 Warning: entClient is nil, skipping transaction protection for exclusive group binding\n"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AllowedGroupAddFails_ReturnsError","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AllowedGroupAddFails_ReturnsError (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AllowedGroupAddFails_ReturnsError","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0436743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind_NoAllowedGroupUpdate"}
- {"Time":"2026-09-12T23:10:43.044202+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind_NoAllowedGroupUpdate","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_Unbind_NoAllowedGroupUpdate\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.044202+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind_NoAllowedGroupUpdate","Output":"--- PASS: TestAdminService_AdminUpdateAPIKeyGroupID_Unbind_NoAllowedGroupUpdate (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.044202+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind_NoAllowedGroupUpdate","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.044202+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_DeleteUser_AdminGuard"}
- {"Time":"2026-09-12T23:10:43.044202+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_DeleteUser_AdminGuard","Output":"=== RUN TestAdminService_DeleteUser_AdminGuard\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.044202+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_DeleteUser_AdminGuard","Output":"--- PASS: TestAdminService_DeleteUser_AdminGuard (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.044202+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_DeleteUser_AdminGuard","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.0457876+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_WithAdminRole"}
- {"Time":"2026-09-12T23:10:43.0457876+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_WithAdminRole","Output":"=== RUN TestAdminService_CreateUser_WithAdminRole\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0900342+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_WithAdminRole","Output":"2026/09/12 15:10:43 audit: admin user created actor_admin_id=1 target_user_id=30\n"}
- {"Time":"2026-09-12T23:10:43.0900342+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_WithAdminRole","Output":"--- PASS: TestAdminService_CreateUser_WithAdminRole (0.04s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.0900342+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_WithAdminRole","Elapsed":0.04}
- {"Time":"2026-09-12T23:10:43.0900342+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_DefaultsToUserRole"}
- {"Time":"2026-09-12T23:10:43.0900342+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_DefaultsToUserRole","Output":"=== RUN TestAdminService_CreateUser_DefaultsToUserRole\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_DefaultsToUserRole","Output":"--- PASS: TestAdminService_CreateUser_DefaultsToUserRole (0.04s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_DefaultsToUserRole","Elapsed":0.04}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_InvalidRoleRejected"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_InvalidRoleRejected","Output":"=== RUN TestAdminService_CreateUser_InvalidRoleRejected\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_InvalidRoleRejected","Output":"--- PASS: TestAdminService_CreateUser_InvalidRoleRejected (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_InvalidRoleRejected","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteToAdmin"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteToAdmin","Output":"=== RUN TestAdminService_UpdateUser_PromoteToAdmin\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteToAdmin","Output":"2026/09/12 15:10:43 audit: user role changed actor_admin_id=1 target_user_id=42 old_role=user new_role=admin\n"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteToAdmin","Output":"--- PASS: TestAdminService_UpdateUser_PromoteToAdmin (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteToAdmin","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_RoleOmittedKeepsExisting"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_RoleOmittedKeepsExisting","Output":"=== RUN TestAdminService_UpdateUser_RoleOmittedKeepsExisting\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_RoleOmittedKeepsExisting","Output":"--- PASS: TestAdminService_UpdateUser_RoleOmittedKeepsExisting (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_RoleOmittedKeepsExisting","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_InvalidRoleRejected"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_InvalidRoleRejected","Output":"=== RUN TestAdminService_UpdateUser_InvalidRoleRejected\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_InvalidRoleRejected","Output":"--- PASS: TestAdminService_UpdateUser_InvalidRoleRejected (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_InvalidRoleRejected","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteLastSuperAdminRejected"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteLastSuperAdminRejected","Output":"=== RUN TestAdminService_UpdateUser_DemoteLastSuperAdminRejected\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteLastSuperAdminRejected","Output":"--- PASS: TestAdminService_UpdateUser_DemoteLastSuperAdminRejected (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteLastSuperAdminRejected","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist","Output":"=== RUN TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist","Output":"2026/09/12 15:10:43 audit: user role changed actor_admin_id=1 target_user_id=42 old_role=admin new_role=user\n"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist","Output":"--- PASS: TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteDoesNotCountAdmins"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteDoesNotCountAdmins","Output":"=== RUN TestAdminService_UpdateUser_PromoteDoesNotCountAdmins\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteDoesNotCountAdmins","Output":"2026/09/12 15:10:43 audit: user role changed actor_admin_id=1 target_user_id=42 old_role=user new_role=admin\n"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteDoesNotCountAdmins","Output":"--- PASS: TestAdminService_UpdateUser_PromoteDoesNotCountAdmins (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1336963+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteDoesNotCountAdmins","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate","Output":"=== RUN TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/disabled_by_default"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/disabled_by_default","Output":"=== RUN TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/disabled_by_default\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/disabled_by_default","Output":"--- PASS: TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/disabled_by_default (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/disabled_by_default","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_add"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_add","Output":"=== RUN TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_add\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_add","Output":"--- PASS: TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_add (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_add","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_set_increase"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_set_increase","Output":"=== RUN TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_set_increase\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_set_increase","Output":"--- PASS: TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_set_increase (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_set_increase","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_subtract"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_subtract","Output":"=== RUN TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_subtract\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_subtract","Output":"--- PASS: TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_subtract (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_subtract","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate","Output":"--- PASS: TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1342522+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence","Output":"=== RUN TestMode1CodexSemanticEquivalence\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/string_input"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/string_input","Output":"=== RUN TestMode1CodexSemanticEquivalence/string_input\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/string_input","Output":"--- PASS: TestMode1CodexSemanticEquivalence/string_input (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/string_input","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/text_parts"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/text_parts","Output":"=== RUN TestMode1CodexSemanticEquivalence/text_parts\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/text_parts","Output":"--- PASS: TestMode1CodexSemanticEquivalence/text_parts (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/text_parts","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/reasoning_replay_metadata"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/reasoning_replay_metadata","Output":"=== RUN TestMode1CodexSemanticEquivalence/reasoning_replay_metadata\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/reasoning_replay_metadata","Output":"--- PASS: TestMode1CodexSemanticEquivalence/reasoning_replay_metadata (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/reasoning_replay_metadata","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/system_promotion"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/system_promotion","Output":"=== RUN TestMode1CodexSemanticEquivalence/system_promotion\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/system_promotion","Output":"--- PASS: TestMode1CodexSemanticEquivalence/system_promotion (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/system_promotion","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_schema"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_schema","Output":"=== RUN TestMode1CodexSemanticEquivalence/tool_schema\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_schema","Output":"--- PASS: TestMode1CodexSemanticEquivalence/tool_schema (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_schema","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_role_result"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_role_result","Output":"=== RUN TestMode1CodexSemanticEquivalence/tool_role_result\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_role_result","Output":"--- PASS: TestMode1CodexSemanticEquivalence/tool_role_result (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_role_result","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1805374+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/call_pair"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/call_pair","Output":"=== RUN TestMode1CodexSemanticEquivalence/call_pair\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/call_pair","Output":"--- PASS: TestMode1CodexSemanticEquivalence/call_pair (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/call_pair","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/previous_turn_reference"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/previous_turn_reference","Output":"=== RUN TestMode1CodexSemanticEquivalence/previous_turn_reference\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/previous_turn_reference","Output":"--- PASS: TestMode1CodexSemanticEquivalence/previous_turn_reference (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/previous_turn_reference","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/model_alias"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/model_alias","Output":"=== RUN TestMode1CodexSemanticEquivalence/model_alias\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/model_alias","Output":"--- PASS: TestMode1CodexSemanticEquivalence/model_alias (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/model_alias","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/minimal_compatibility"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/minimal_compatibility","Output":"=== RUN TestMode1CodexSemanticEquivalence/minimal_compatibility\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/minimal_compatibility","Output":"--- PASS: TestMode1CodexSemanticEquivalence/minimal_compatibility (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/minimal_compatibility","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/legacy_pro_mode"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/legacy_pro_mode","Output":"=== RUN TestMode1CodexSemanticEquivalence/legacy_pro_mode\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/legacy_pro_mode","Output":"--- PASS: TestMode1CodexSemanticEquivalence/legacy_pro_mode (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/legacy_pro_mode","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/unsupported_OAuth_budget"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/unsupported_OAuth_budget","Output":"=== RUN TestMode1CodexSemanticEquivalence/unsupported_OAuth_budget\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/unsupported_OAuth_budget","Output":"--- PASS: TestMode1CodexSemanticEquivalence/unsupported_OAuth_budget (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/unsupported_OAuth_budget","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence","Output":"--- PASS: TestMode1CodexSemanticEquivalence (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_text"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_text","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/changed_text\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_text","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/changed_text (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_text","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_system"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_system","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_system\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_system","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/lost_system (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_system","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_encrypted_reasoning"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_encrypted_reasoning","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_encrypted_reasoning\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_encrypted_reasoning","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/lost_encrypted_reasoning (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_encrypted_reasoning","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_reference"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_reference","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_reference\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_reference","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/lost_reference (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_reference","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_reference"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_reference","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/changed_reference\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_reference","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/changed_reference (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_reference","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/wrong_call_id"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/wrong_call_id","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/wrong_call_id\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/wrong_call_id","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/wrong_call_id (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/wrong_call_id","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_result"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_result","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/changed_result\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_result","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/changed_result (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_result","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_tools"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_tools","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_tools\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_tools","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/lost_tools (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_tools","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/conflicting_legacy_tools"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/conflicting_legacy_tools","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/conflicting_legacy_tools\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/conflicting_legacy_tools","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/conflicting_legacy_tools (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/conflicting_legacy_tools","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/tool_without_association"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/tool_without_association","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/tool_without_association\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/tool_without_association","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/tool_without_association (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/tool_without_association","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_malformed_tool"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_malformed_tool","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_malformed_tool\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_malformed_tool","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/lost_malformed_tool (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_malformed_tool","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_Astra_mode"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_Astra_mode","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_Astra_mode\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_Astra_mode","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/lost_Astra_mode (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_Astra_mode","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_model"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_model","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/changed_model\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_model","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/changed_model (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_model","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_budget"}
- {"Time":"2026-09-12T23:10:43.1812741+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_budget","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/changed_budget\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_budget","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/changed_budget (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_budget","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardAcceptsActualCodexTransform"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardAcceptsActualCodexTransform","Output":"=== RUN TestMode1GuardAcceptsActualCodexTransform\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardAcceptsActualCodexTransform","Output":"--- PASS: TestMode1GuardAcceptsActualCodexTransform (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardAcceptsActualCodexTransform","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardRejectsInvalidJSON"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardRejectsInvalidJSON","Output":"=== RUN TestMode1GuardRejectsInvalidJSON\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardRejectsInvalidJSON","Output":"--- PASS: TestMode1GuardRejectsInvalidJSON (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardRejectsInvalidJSON","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardWSSPoolSeparatesConversations"}
- {"Time":"2026-09-12T23:10:43.1817857+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardWSSPoolSeparatesConversations","Output":"=== RUN TestMode1V3StandardWSSPoolSeparatesConversations\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1866049+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardWSSPoolSeparatesConversations","Output":"--- PASS: TestMode1V3StandardWSSPoolSeparatesConversations (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1866049+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardWSSPoolSeparatesConversations","Elapsed":0}
- {"Time":"2026-09-12T23:10:43.1866049+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames"}
- {"Time":"2026-09-12T23:10:43.1866049+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"=== RUN TestMode1V3WSPassthroughAcceptsCompatibilityFrames\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:43.1876539+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:43 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_start account_id=72 model=gpt-5.2 previous_response_id=- first_message_type=text first_message_bytes=118\n"}
- {"Time":"2026-09-12T23:10:43.1876539+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:43 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_dial_start account_id=72 ws_host=chatgpt.com ws_path=/backend-api/codex/responses proxy_enabled=false\n"}
- {"Time":"2026-09-12T23:10:43.1886891+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:43 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_dial_ok account_id=72 status_code=101 upstream_request_id=-\n"}
- {"Time":"2026-09-12T23:10:43.1886891+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:43 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=72 stage=relay_start direction=- msg_type=text bytes=118 graceful=false wrote_downstream=false err=-\n"}
- {"Time":"2026-09-12T23:10:43.1886891+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:43 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=72 stage=write_first_message_skipped direction=client_to_upstream msg_type=text bytes=118 graceful=false wrote_downstream=false err=-\n"}
- {"Time":"2026-09-12T23:10:43.1892161+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:43 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_turn_completed account_id=72 turn=1 request_id=resp_local terminal_event=response.completed turn_requested_model=gpt-5.2 turn_upstream_model=gpt-5.2 duration_ms=0 first_token_ms=-1 input_tokens=0 output_tokens=0 cache_read_tokens=0\n"}
- {"Time":"2026-09-12T23:10:43.1892161+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:43 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_turn_completed account_id=72 turn=2 request_id=resp_local terminal_event=response.completed turn_requested_model=gpt-5.2 turn_upstream_model=gpt-5.2 duration_ms=0 first_token_ms=-1 input_tokens=0 output_tokens=0 cache_read_tokens=0\n"}
- {"Time":"2026-09-12T23:10:43.1892161+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:43 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=72 stage=read_client_fail direction=client_to_upstream msg_type=- bytes=0 graceful=true wrote_downstream=false err=fail to get reader: received close frame: status = StatusNormalClosure and reason = \"done\"\n"}
- {"Time":"2026-09-12T23:10:43.1892161+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:43 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=72 stage=first_exit direction=client_to_upstream msg_type=- bytes=0 graceful=true wrote_downstream=false err=fail to get reader: received close frame: status = StatusNormalClosure and reason = \"done\"\n"}
- {"Time":"2026-09-12T23:10:44.3893788+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:44 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=72 stage=read_upstream_fail direction=upstream_to_client msg_type=- bytes=0 graceful=true wrote_downstream=true err=context canceled\n"}
- {"Time":"2026-09-12T23:10:44.3893788+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:44 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=72 stage=relay_client_closed direction=- msg_type=- bytes=0 graceful=true wrote_downstream=false err=-\n"}
- {"Time":"2026-09-12T23:10:44.3893788+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:10:44 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_completed account_id=72 request_id=resp_local terminal_event=response.completed duration_ms=1200 c2u_frames=2 u2c_frames=4 dropped_frames=0 turns=2\n"}
- {"Time":"2026-09-12T23:10:44.3893788+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"--- PASS: TestMode1V3WSPassthroughAcceptsCompatibilityFrames (1.20s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.3893788+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Elapsed":1.2}
- {"Time":"2026-09-12T23:10:44.3964359+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSActualHandshakeAndFramePreservation"}
- {"Time":"2026-09-12T23:10:44.3964359+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSActualHandshakeAndFramePreservation","Output":"=== RUN TestMode1WSSActualHandshakeAndFramePreservation\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.3985067+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSActualHandshakeAndFramePreservation","Output":"--- PASS: TestMode1WSSActualHandshakeAndFramePreservation (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.3985067+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSActualHandshakeAndFramePreservation","Elapsed":0}
- {"Time":"2026-09-12T23:10:44.3985067+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSTransportCacheIsolationAndProfileRotation"}
- {"Time":"2026-09-12T23:10:44.3985067+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSTransportCacheIsolationAndProfileRotation","Output":"=== RUN TestMode1WSSTransportCacheIsolationAndProfileRotation\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.3985067+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSTransportCacheIsolationAndProfileRotation","Output":"--- PASS: TestMode1WSSTransportCacheIsolationAndProfileRotation (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.3985067+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSTransportCacheIsolationAndProfileRotation","Elapsed":0}
- {"Time":"2026-09-12T23:10:44.3985067+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate"}
- {"Time":"2026-09-12T23:10:44.3985067+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate","Output":"=== RUN TestMode1WSSFailsClosedOnInvalidTLSAndCertificate\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.3990338+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate"}
- {"Time":"2026-09-12T23:10:44.3990338+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate","Output":"=== RUN TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate","Output":"--- PASS: TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate (0.02s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate","Elapsed":0.02}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/invalid_ALPN_cannot_fall_back_to_ordinary_TLS"}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/invalid_ALPN_cannot_fall_back_to_ordinary_TLS","Output":"=== RUN TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/invalid_ALPN_cannot_fall_back_to_ordinary_TLS\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/invalid_ALPN_cannot_fall_back_to_ordinary_TLS","Output":"--- PASS: TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/invalid_ALPN_cannot_fall_back_to_ordinary_TLS (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/invalid_ALPN_cannot_fall_back_to_ordinary_TLS","Elapsed":0}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected"}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected","Output":"=== RUN TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected","Output":"--- PASS: TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected","Elapsed":0}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate","Output":"--- PASS: TestMode1WSSFailsClosedOnInvalidTLSAndCertificate (0.02s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate","Elapsed":0.02}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSConnectionPoolTransportCompatibility"}
- {"Time":"2026-09-12T23:10:44.4161253+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSConnectionPoolTransportCompatibility","Output":"=== RUN TestMode1WSConnectionPoolTransportCompatibility\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4228839+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSConnectionPoolTransportCompatibility","Output":"--- PASS: TestMode1WSConnectionPoolTransportCompatibility (0.01s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4228839+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSConnectionPoolTransportCompatibility","Elapsed":0.01}
- {"Time":"2026-09-12T23:10:44.4228839+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated"}
- {"Time":"2026-09-12T23:10:44.4228839+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated","Output":"=== RUN TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4295743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated","Output":"--- PASS: TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated (0.01s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4295743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated","Elapsed":0.01}
- {"Time":"2026-09-12T23:10:44.4295743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSRuntimeConcurrencyCapCannotBeBypassed"}
- {"Time":"2026-09-12T23:10:44.4295743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSRuntimeConcurrencyCapCannotBeBypassed","Output":"=== RUN TestMode1WSRuntimeConcurrencyCapCannotBeBypassed\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4295743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSRuntimeConcurrencyCapCannotBeBypassed","Output":"--- PASS: TestMode1WSRuntimeConcurrencyCapCannotBeBypassed (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4295743+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSRuntimeConcurrencyCapCannotBeBypassed","Elapsed":0}
- {"Time":"2026-09-12T23:10:44.4295743+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS"}
- {"Time":"2026-09-12T23:10:44.4295743+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"=== RUN TestMode1WSPassthroughEntryReachesRealTLS\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:44.4300878+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:44 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_start account_id=45 model=gpt-5.1 previous_response_id=- first_message_type=text first_message_bytes=123\n"}
- {"Time":"2026-09-12T23:10:44.4300878+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:44 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_dial_start account_id=45 ws_host=chatgpt.com ws_path=/backend-api/codex/responses proxy_enabled=false\n"}
- {"Time":"2026-09-12T23:10:44.4316481+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:44 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_dial_ok account_id=45 status_code=0 upstream_request_id=-\n"}
- {"Time":"2026-09-12T23:10:44.4316481+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:44 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=45 stage=relay_start direction=- msg_type=text bytes=123 graceful=false wrote_downstream=false err=-\n"}
- {"Time":"2026-09-12T23:10:44.4316481+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:44 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=45 stage=write_first_message_skipped direction=client_to_upstream msg_type=text bytes=123 graceful=false wrote_downstream=false err=-\n"}
- {"Time":"2026-09-12T23:10:44.4316481+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:44 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=45 stage=read_client_fail direction=client_to_upstream msg_type=- bytes=0 graceful=true wrote_downstream=false err=fail to get reader: received close frame: status = StatusNormalClosure and reason = \"done\"\n"}
- {"Time":"2026-09-12T23:10:44.4316481+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:44 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=45 stage=first_exit direction=client_to_upstream msg_type=- bytes=0 graceful=true wrote_downstream=false err=fail to get reader: received close frame: status = StatusNormalClosure and reason = \"done\"\n"}
- {"Time":"2026-09-12T23:10:45.432+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:45 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=45 stage=read_upstream_fail direction=upstream_to_client msg_type=- bytes=0 graceful=false wrote_downstream=true err=openai websocket passthrough first output timeout\n"}
- {"Time":"2026-09-12T23:10:45.432+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:45 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=45 stage=second_exit direction=upstream_to_client msg_type=- bytes=0 graceful=false wrote_downstream=true err=openai websocket passthrough first output timeout\n"}
- {"Time":"2026-09-12T23:10:45.432+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:45 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_trace account_id=45 stage=relay_client_closed direction=- msg_type=- bytes=0 graceful=true wrote_downstream=true err=-\n"}
- {"Time":"2026-09-12T23:10:45.432+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:10:45 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_completed account_id=45 request_id=- terminal_event=- duration_ms=1000 c2u_frames=1 u2c_frames=1 dropped_frames=0 turns=0\n"}
- {"Time":"2026-09-12T23:10:45.432+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"--- PASS: TestMode1WSPassthroughEntryReachesRealTLS (1.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.432+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Elapsed":1}
- {"Time":"2026-09-12T23:10:45.432+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial"}
- {"Time":"2026-09-12T23:10:45.432+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial","Output":"=== RUN TestMode1WSIngressRejectsLossyPolicyBeforeDial\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.432+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough"}
- {"Time":"2026-09-12T23:10:45.432+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough","Output":"=== RUN TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4331729+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough","Output":"2026/09/12 15:10:45 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_start account_id=46 model=gpt-5.4 previous_response_id=- first_message_type=text first_message_bytes=122\n"}
- {"Time":"2026-09-12T23:10:45.4336853+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough","Output":"--- PASS: TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4336853+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4336853+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool"}
- {"Time":"2026-09-12T23:10:45.4336853+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool","Output":"=== RUN TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4341948+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool","Output":"--- PASS: TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4341948+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4341948+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial","Output":"--- PASS: TestMode1WSIngressRejectsLossyPolicyBeforeDial (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4341948+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4341948+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy"}
- {"Time":"2026-09-12T23:10:45.4341948+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy","Output":"=== RUN TestMode1WSSOverLocalHTTPAndHTTPSProxy\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4341948+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/http"}
- {"Time":"2026-09-12T23:10:45.4341948+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/http","Output":"=== RUN TestMode1WSSOverLocalHTTPAndHTTPSProxy/http\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4374868+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/http","Output":"--- PASS: TestMode1WSSOverLocalHTTPAndHTTPSProxy/http (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4374868+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/http","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4374868+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/https"}
- {"Time":"2026-09-12T23:10:45.4374868+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/https","Output":"=== RUN TestMode1WSSOverLocalHTTPAndHTTPSProxy/https\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4410991+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/https","Output":"--- PASS: TestMode1WSSOverLocalHTTPAndHTTPSProxy/https (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4410991+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/https","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4410991+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy","Output":"--- PASS: TestMode1WSSOverLocalHTTPAndHTTPSProxy (0.01s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4410991+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy","Elapsed":0.01}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin","Output":"=== RUN TestUserHierarchyRoleChangesRequireLiveSuperAdmin\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active","Output":"=== RUN TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active","Output":"--- PASS: TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active","Output":"=== RUN TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active","Output":"--- PASS: TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_disabled"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_disabled","Output":"=== RUN TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_disabled\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_disabled","Output":"--- PASS: TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_disabled (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_disabled","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active","Output":"=== RUN TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active","Output":"2026/09/12 15:10:45 audit: user role changed actor_admin_id=1 target_user_id=2 old_role=user new_role=super_admin\n"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active","Output":"--- PASS: TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin","Output":"--- PASS: TestUserHierarchyRoleChangesRequireLiveSuperAdmin (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote","Output":"=== RUN TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote","Output":"--- PASS: TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote","Elapsed":0}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin"}
- {"Time":"2026-09-12T23:10:45.4567331+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin","Output":"=== RUN TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.5010069+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin","Output":"--- PASS: TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin (0.04s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.5010069+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin","Elapsed":0.04}
- {"Time":"2026-09-12T23:10:45.5030775+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Output":"PASS\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:10:45.5080335+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Output":"ok \tgithub.com/Wei-Shaw/sub2api/internal/service\t10.049s\n"}
- {"Time":"2026-09-12T23:10:45.5080335+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Elapsed":10.049}
- {"Time":"2026-09-12T23:11:38.6792232+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionRolesMigrationKeepsDataAndIsIdempotent","Output":"--- PASS: TestAccountProtectionRolesMigrationKeepsDataAndIsIdempotent (57.55s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:11:38.6792232+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionRolesMigrationKeepsDataAndIsIdempotent","Elapsed":57.55}
- {"Time":"2026-09-12T23:11:38.6792232+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites"}
- {"Time":"2026-09-12T23:11:38.6792232+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites","Output":"=== RUN TestAccountProtectionCreateImportAndStaleWrites\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:31.2379908+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/oauth"}
- {"Time":"2026-09-12T23:12:31.2379908+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/oauth","Output":"=== RUN TestAccountProtectionCreateImportAndStaleWrites/oauth\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:31.9949728+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/oauth","Output":"2026/09/12 23:12:31 [SchedulerOutbox] enqueue account create failed: account=1 err=pq: relation \"scheduler_outbox\" does not exist\n"}
- {"Time":"2026-09-12T23:12:34.2896763+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/oauth","Output":" account_protection_integration_test.go:51: \n","OutputType":"error"}
- {"Time":"2026-09-12T23:12:34.2896763+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/oauth","Output":" \tError Trace:\tC:/Users/30214/Desktop/sub2本地/sub2新站/backend/internal/repository/account_protection_integration_test.go:51\n","OutputType":"error-continue"}
- {"Time":"2026-09-12T23:12:34.2896763+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/oauth","Output":" \tError: \tReceived unexpected error:\n","OutputType":"error-continue"}
- {"Time":"2026-09-12T23:12:34.2896763+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/oauth","Output":" \t \tpq: relation \"scheduler_outbox\" does not exist\n","OutputType":"error-continue"}
- {"Time":"2026-09-12T23:12:34.2896763+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/oauth","Output":" \tTest: \tTestAccountProtectionCreateImportAndStaleWrites/oauth\n","OutputType":"error-continue"}
- {"Time":"2026-09-12T23:12:35.049652+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/oauth","Output":"--- FAIL: TestAccountProtectionCreateImportAndStaleWrites/oauth (3.81s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:35.049652+08:00","Action":"fail","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/oauth","Elapsed":3.81}
- {"Time":"2026-09-12T23:12:35.049652+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/apikey"}
- {"Time":"2026-09-12T23:12:35.049652+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/apikey","Output":"=== RUN TestAccountProtectionCreateImportAndStaleWrites/apikey\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:35.7830765+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/apikey","Output":"2026/09/12 23:12:35 [SchedulerOutbox] enqueue account create failed: account=2 err=pq: relation \"scheduler_outbox\" does not exist\n"}
- {"Time":"2026-09-12T23:12:37.9944709+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/apikey","Output":" account_protection_integration_test.go:51: \n","OutputType":"error"}
- {"Time":"2026-09-12T23:12:37.9950942+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/apikey","Output":" \tError Trace:\tC:/Users/30214/Desktop/sub2本地/sub2新站/backend/internal/repository/account_protection_integration_test.go:51\n","OutputType":"error-continue"}
- {"Time":"2026-09-12T23:12:37.9950942+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/apikey","Output":" \tError: \tReceived unexpected error:\n","OutputType":"error-continue"}
- {"Time":"2026-09-12T23:12:37.9950942+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/apikey","Output":" \t \tpq: relation \"scheduler_outbox\" does not exist\n","OutputType":"error-continue"}
- {"Time":"2026-09-12T23:12:37.9950942+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/apikey","Output":" \tTest: \tTestAccountProtectionCreateImportAndStaleWrites/apikey\n","OutputType":"error-continue"}
- {"Time":"2026-09-12T23:12:38.7588995+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/apikey","Output":"--- FAIL: TestAccountProtectionCreateImportAndStaleWrites/apikey (3.71s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:38.7588995+08:00","Action":"fail","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites/apikey","Elapsed":3.71}
- {"Time":"2026-09-12T23:12:39.2159825+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites","Output":"--- FAIL: TestAccountProtectionCreateImportAndStaleWrites (60.54s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.2159825+08:00","Action":"fail","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestAccountProtectionCreateImportAndStaleWrites","Elapsed":60.54}
- {"Time":"2026-09-12T23:12:39.2196438+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1TLSPoolAlwaysSeparatesAccountsProxyAndProfile"}
- {"Time":"2026-09-12T23:12:39.2196438+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1TLSPoolAlwaysSeparatesAccountsProxyAndProfile","Output":"=== RUN TestMode1TLSPoolAlwaysSeparatesAccountsProxyAndProfile\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.2201531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1TLSPoolAlwaysSeparatesAccountsProxyAndProfile","Output":"--- PASS: TestMode1TLSPoolAlwaysSeparatesAccountsProxyAndProfile (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.2201531+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1TLSPoolAlwaysSeparatesAccountsProxyAndProfile","Elapsed":0}
- {"Time":"2026-09-12T23:12:39.2201531+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1DoWithTLSActuallyUsesClientHello"}
- {"Time":"2026-09-12T23:12:39.2201531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1DoWithTLSActuallyUsesClientHello","Output":"=== RUN TestMode1DoWithTLSActuallyUsesClientHello\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.2221901+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1DoWithTLSActuallyUsesClientHello","Output":"--- PASS: TestMode1DoWithTLSActuallyUsesClientHello (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.2221901+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1DoWithTLSActuallyUsesClientHello","Elapsed":0}
- {"Time":"2026-09-12T23:12:39.2237559+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1SchedulerProjectionRetainsPolicyAndProxy"}
- {"Time":"2026-09-12T23:12:39.2237559+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1SchedulerProjectionRetainsPolicyAndProxy","Output":"=== RUN TestMode1SchedulerProjectionRetainsPolicyAndProxy\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.2237559+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1SchedulerProjectionRetainsPolicyAndProxy","Output":"--- PASS: TestMode1SchedulerProjectionRetainsPolicyAndProxy (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.2237559+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1SchedulerProjectionRetainsPolicyAndProxy","Elapsed":0}
- {"Time":"2026-09-12T23:12:39.2237559+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1ConcurrencySlotsRemainBoundedAndRelease"}
- {"Time":"2026-09-12T23:12:39.2237559+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1ConcurrencySlotsRemainBoundedAndRelease","Output":"=== RUN TestMode1ConcurrencySlotsRemainBoundedAndRelease\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.2257949+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1ConcurrencySlotsRemainBoundedAndRelease","Output":"--- PASS: TestMode1ConcurrencySlotsRemainBoundedAndRelease (0.00s)\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.2257949+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Test":"TestMode1ConcurrencySlotsRemainBoundedAndRelease","Elapsed":0}
- {"Time":"2026-09-12T23:12:39.2273567+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Output":"FAIL\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.232336+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Output":"FAIL\tgithub.com/Wei-Shaw/sub2api/internal/repository\t123.773s\n","OutputType":"frame"}
- {"Time":"2026-09-12T23:12:39.232336+08:00","Action":"fail","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Elapsed":123.773}
|