backend-final.jsonl 180 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727
  1. {"ImportPath":"github.com/Wei-Shaw/sub2api/internal/repository [github.com/Wei-Shaw/sub2api/internal/repository.test]","Action":"build-output","Output":"# github.com/Wei-Shaw/sub2api/internal/repository [github.com/Wei-Shaw/sub2api/internal/repository.test]\n"}
  2. {"ImportPath":"github.com/Wei-Shaw/sub2api/internal/repository [github.com/Wei-Shaw/sub2api/internal/repository.test]","Action":"build-output","Output":"internal\\repository\\account_protection_database_test.go:17:2: \"entgo.io/ent/dialect/sql/schema\" imported and not used\n"}
  3. {"ImportPath":"github.com/Wei-Shaw/sub2api/internal/repository [github.com/Wei-Shaw/sub2api/internal/repository.test]","Action":"build-output","Output":"internal\\repository\\account_protection_database_test.go:55:66: schema.Table is not a type\n"}
  4. {"ImportPath":"github.com/Wei-Shaw/sub2api/internal/repository [github.com/Wei-Shaw/sub2api/internal/repository.test]","Action":"build-fail"}
  5. {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/service"}
  6. {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/repository"}
  7. {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Output":"FAIL\tgithub.com/Wei-Shaw/sub2api/internal/repository [build failed]\n","OutputType":"frame"}
  8. {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"fail","Package":"github.com/Wei-Shaw/sub2api/internal/repository","Elapsed":0,"FailedBuild":"github.com/Wei-Shaw/sub2api/internal/repository [github.com/Wei-Shaw/sub2api/internal/repository.test]"}
  9. {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin"}
  10. {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware"}
  11. {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto"}
  12. {"Time":"2026-09-12T23:22:14.810194+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Test":"TestMode1SeedStaysServerManaged"}
  13. {"Time":"2026-09-12T23:22:14.810194+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Test":"TestMode1SeedStaysServerManaged","Output":"=== RUN TestMode1SeedStaysServerManaged\n","OutputType":"frame"}
  14. {"Time":"2026-09-12T23:22:14.810194+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Test":"TestMode1SeedStaysServerManaged","Output":"--- PASS: TestMode1SeedStaysServerManaged (0.00s)\n","OutputType":"frame"}
  15. {"Time":"2026-09-12T23:22:14.810194+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Test":"TestMode1SeedStaysServerManaged","Elapsed":0}
  16. {"Time":"2026-09-12T23:22:14.810194+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Output":"PASS\n","OutputType":"frame"}
  17. {"Time":"2026-09-12T23:22:14.8127767+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Output":"ok \tgithub.com/Wei-Shaw/sub2api/internal/handler/dto\t3.074s\n"}
  18. {"Time":"2026-09-12T23:22:14.8127767+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Elapsed":3.074}
  19. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch"}
  20. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch","Output":"=== RUN TestUserHierarchyGuardsEveryMutationAndBatch\n","OutputType":"frame"}
  21. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_balance_super"}
  22. {"Time":"2026-09-12T23:22:16.2745501+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"}
  23. {"Time":"2026-09-12T23:22:16.2745501+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"}
  24. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_balance_super","Elapsed":0}
  25. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_totp_super"}
  26. {"Time":"2026-09-12T23:22:16.2745501+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"}
  27. {"Time":"2026-09-12T23:22:16.2745501+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"}
  28. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_totp_super","Elapsed":0}
  29. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_super"}
  30. {"Time":"2026-09-12T23:22:16.2745501+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"}
  31. {"Time":"2026-09-12T23:22:16.2745501+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"}
  32. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_super","Elapsed":0}
  33. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_all"}
  34. {"Time":"2026-09-12T23:22:16.2745501+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"}
  35. {"Time":"2026-09-12T23:22:16.2745501+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"}
  36. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_batch_all","Elapsed":0}
  37. {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_promote_self"}
  38. {"Time":"2026-09-12T23:22:16.2745501+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"}
  39. {"Time":"2026-09-12T23:22:16.2745501+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"}
  40. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_promote_self","Elapsed":0}
  41. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_create_admin"}
  42. {"Time":"2026-09-12T23:22:16.2750619+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"}
  43. {"Time":"2026-09-12T23:22:16.2750619+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"}
  44. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_create_admin","Elapsed":0}
  45. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_update_user"}
  46. {"Time":"2026-09-12T23:22:16.2750619+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"}
  47. {"Time":"2026-09-12T23:22:16.2750619+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"}
  48. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/admin_update_user","Elapsed":0}
  49. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/super_update_admin"}
  50. {"Time":"2026-09-12T23:22:16.2750619+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"}
  51. {"Time":"2026-09-12T23:22:16.2750619+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"}
  52. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/super_update_admin","Elapsed":0}
  53. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/user_forbidden"}
  54. {"Time":"2026-09-12T23:22:16.2750619+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"}
  55. {"Time":"2026-09-12T23:22:16.2750619+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"}
  56. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/user_forbidden","Elapsed":0}
  57. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch","Output":"--- PASS: TestUserHierarchyGuardsEveryMutationAndBatch (0.00s)\n","OutputType":"frame"}
  58. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch","Elapsed":0}
  59. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation"}
  60. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation\n","OutputType":"frame"}
  61. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key"}
  62. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key\n","OutputType":"frame"}
  63. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key (0.00s)\n","OutputType":"frame"}
  64. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key","Elapsed":0}
  65. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key"}
  66. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key\n","OutputType":"frame"}
  67. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key (0.00s)\n","OutputType":"frame"}
  68. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key","Elapsed":0}
  69. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key/regenerate"}
  70. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key/regenerate","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key/regenerate\n","OutputType":"frame"}
  71. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key/regenerate","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key/regenerate (0.00s)\n","OutputType":"frame"}
  72. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings/admin-api-key/regenerate","Elapsed":0}
  73. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key/regenerate"}
  74. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key/regenerate","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key/regenerate\n","OutputType":"frame"}
  75. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key/regenerate","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key/regenerate (0.00s)\n","OutputType":"frame"}
  76. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings/admin-api-key/regenerate","Elapsed":0}
  77. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings"}
  78. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings\n","OutputType":"frame"}
  79. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings (0.00s)\n","OutputType":"frame"}
  80. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/settings","Elapsed":0}
  81. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings"}
  82. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings\n","OutputType":"frame"}
  83. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings (0.00s)\n","OutputType":"frame"}
  84. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/settings","Elapsed":0}
  85. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/restore"}
  86. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/restore","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/restore\n","OutputType":"frame"}
  87. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/restore","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/restore (0.00s)\n","OutputType":"frame"}
  88. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/restore","Elapsed":0}
  89. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/restore"}
  90. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/restore","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/restore\n","OutputType":"frame"}
  91. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/restore","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/restore (0.00s)\n","OutputType":"frame"}
  92. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/restore","Elapsed":0}
  93. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/download-url"}
  94. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/download-url","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/download-url\n","OutputType":"frame"}
  95. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/download-url","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/download-url (0.00s)\n","OutputType":"frame"}
  96. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/backups/8/download-url","Elapsed":0}
  97. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/download-url"}
  98. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/download-url","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/download-url\n","OutputType":"frame"}
  99. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/download-url","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/download-url (0.00s)\n","OutputType":"frame"}
  100. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/backups/8/download-url","Elapsed":0}
  101. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/data-management/backups"}
  102. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/data-management/backups","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/data-management/backups\n","OutputType":"frame"}
  103. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/data-management/backups","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/data-management/backups (0.00s)\n","OutputType":"frame"}
  104. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/data-management/backups","Elapsed":0}
  105. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/data-management/backups"}
  106. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/data-management/backups","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/data-management/backups\n","OutputType":"frame"}
  107. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/data-management/backups","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/data-management/backups (0.00s)\n","OutputType":"frame"}
  108. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/data-management/backups","Elapsed":0}
  109. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/plugins/8"}
  110. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/plugins/8","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/plugins/8\n","OutputType":"frame"}
  111. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/plugins/8","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/plugins/8 (0.00s)\n","OutputType":"frame"}
  112. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/admin/api/v1/admin/plugins/8","Elapsed":0}
  113. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/plugins/8"}
  114. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/plugins/8","Output":"=== RUN TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/plugins/8\n","OutputType":"frame"}
  115. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/plugins/8","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/plugins/8 (0.00s)\n","OutputType":"frame"}
  116. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation/super_admin/api/v1/admin/plugins/8","Elapsed":0}
  117. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation","Output":"--- PASS: TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation (0.00s)\n","OutputType":"frame"}
  118. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation","Elapsed":0}
  119. {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Output":"PASS\n","OutputType":"frame"}
  120. {"Time":"2026-09-12T23:22:16.2782804+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Output":"ok \tgithub.com/Wei-Shaw/sub2api/internal/server/middleware\t4.539s\n"}
  121. {"Time":"2026-09-12T23:22:16.2782804+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Elapsed":4.539}
  122. {"Time":"2026-09-12T23:22:17.1824622+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin","Output":"testing: warning: no tests to run\n"}
  123. {"Time":"2026-09-12T23:22:17.1824622+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin","Output":"PASS\n","OutputType":"frame"}
  124. {"Time":"2026-09-12T23:22:17.186192+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin","Output":"ok \tgithub.com/Wei-Shaw/sub2api/internal/handler/admin\t5.447s [no tests to run]\n"}
  125. {"Time":"2026-09-12T23:22:17.186192+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin","Elapsed":5.447}
  126. {"Time":"2026-09-12T23:22:19.4183293+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Output":"2026/09/12 15:22:19 Timezone initialized: UTC (UTC offset: +00:00)\n"}
  127. {"Time":"2026-09-12T23:22:19.4198716+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads"}
  128. {"Time":"2026-09-12T23:22:19.4198716+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads","Output":"=== RUN TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads\n","OutputType":"frame"}
  129. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads","Output":"--- PASS: TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads (0.00s)\n","OutputType":"frame"}
  130. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads","Elapsed":0}
  131. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1RuntimeRejectsConfigurationDrift"}
  132. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1RuntimeRejectsConfigurationDrift","Output":"=== RUN TestMode1RuntimeRejectsConfigurationDrift\n","OutputType":"frame"}
  133. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1RuntimeRejectsConfigurationDrift","Output":"--- PASS: TestMode1RuntimeRejectsConfigurationDrift (0.00s)\n","OutputType":"frame"}
  134. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1RuntimeRejectsConfigurationDrift","Elapsed":0}
  135. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidMarkerDoesNotDowngrade"}
  136. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidMarkerDoesNotDowngrade","Output":"=== RUN TestMode1InvalidMarkerDoesNotDowngrade\n","OutputType":"frame"}
  137. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidMarkerDoesNotDowngrade","Output":"--- PASS: TestMode1InvalidMarkerDoesNotDowngrade (0.00s)\n","OutputType":"frame"}
  138. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidMarkerDoesNotDowngrade","Elapsed":0}
  139. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer"}
  140. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer","Output":"=== RUN TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer\n","OutputType":"frame"}
  141. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer","Output":"--- PASS: TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer (0.00s)\n","OutputType":"frame"}
  142. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer","Elapsed":0}
  143. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1PartialAndBulkUpdatesCannotDisablePolicy"}
  144. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1PartialAndBulkUpdatesCannotDisablePolicy","Output":"=== RUN TestMode1PartialAndBulkUpdatesCannotDisablePolicy\n","OutputType":"frame"}
  145. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1PartialAndBulkUpdatesCannotDisablePolicy","Output":"--- PASS: TestMode1PartialAndBulkUpdatesCannotDisablePolicy (0.00s)\n","OutputType":"frame"}
  146. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1PartialAndBulkUpdatesCannotDisablePolicy","Elapsed":0}
  147. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback"}
  148. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback","Output":"=== RUN TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback\n","OutputType":"frame"}
  149. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback","Output":"--- PASS: TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback (0.00s)\n","OutputType":"frame"}
  150. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback","Elapsed":0}
  151. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1UsesExistingPluginRouting"}
  152. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1UsesExistingPluginRouting","Output":"=== RUN TestMode1UsesExistingPluginRouting\n","OutputType":"frame"}
  153. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1UsesExistingPluginRouting","Output":"--- PASS: TestMode1UsesExistingPluginRouting (0.00s)\n","OutputType":"frame"}
  154. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1UsesExistingPluginRouting","Elapsed":0}
  155. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IntegrityPreservesReasoningToolsAndBudget"}
  156. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IntegrityPreservesReasoningToolsAndBudget","Output":"=== RUN TestMode1IntegrityPreservesReasoningToolsAndBudget\n","OutputType":"frame"}
  157. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IntegrityPreservesReasoningToolsAndBudget","Output":"--- PASS: TestMode1IntegrityPreservesReasoningToolsAndBudget (0.00s)\n","OutputType":"frame"}
  158. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IntegrityPreservesReasoningToolsAndBudget","Elapsed":0}
  159. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough"}
  160. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough","Output":"=== RUN TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough\n","OutputType":"frame"}
  161. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false"}
  162. {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false","Output":"=== RUN TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false\n","OutputType":"frame"}
  163. {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false","Output":"--- PASS: TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false (0.00s)\n","OutputType":"frame"}
  164. {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false","Elapsed":0}
  165. {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true"}
  166. {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true","Output":"=== RUN TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true\n","OutputType":"frame"}
  167. {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name=mode1 type=oauth model=gpt-5.2 stream=true\n"}
  168. {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true","Output":"--- PASS: TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true (0.00s)\n","OutputType":"frame"}
  169. {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true","Elapsed":0}
  170. {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough","Output":"--- PASS: TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough (0.00s)\n","OutputType":"frame"}
  171. {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough","Elapsed":0}
  172. {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity"}
  173. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity","Output":"=== RUN TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity\n","OutputType":"frame"}
  174. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity","Output":"--- PASS: TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity (0.00s)\n","OutputType":"frame"}
  175. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity","Elapsed":0}
  176. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidVersionCanBeExplicitlyRestored"}
  177. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidVersionCanBeExplicitlyRestored","Output":"=== RUN TestMode1InvalidVersionCanBeExplicitlyRestored\n","OutputType":"frame"}
  178. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidVersionCanBeExplicitlyRestored","Output":"--- PASS: TestMode1InvalidVersionCanBeExplicitlyRestored (0.00s)\n","OutputType":"frame"}
  179. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidVersionCanBeExplicitlyRestored","Elapsed":0}
  180. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DamagedModeDoesNotSilentlyDisableProtection"}
  181. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DamagedModeDoesNotSilentlyDisableProtection","Output":"=== RUN TestMode1DamagedModeDoesNotSilentlyDisableProtection\n","OutputType":"frame"}
  182. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DamagedModeDoesNotSilentlyDisableProtection","Output":"--- PASS: TestMode1DamagedModeDoesNotSilentlyDisableProtection (0.00s)\n","OutputType":"frame"}
  183. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DamagedModeDoesNotSilentlyDisableProtection","Elapsed":0}
  184. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardTransportWithTLSGloballyDisabled"}
  185. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardTransportWithTLSGloballyDisabled","Output":"=== RUN TestMode1V3StandardTransportWithTLSGloballyDisabled\n","OutputType":"frame"}
  186. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardTransportWithTLSGloballyDisabled","Output":"--- PASS: TestMode1V3StandardTransportWithTLSGloballyDisabled (0.00s)\n","OutputType":"frame"}
  187. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardTransportWithTLSGloballyDisabled","Elapsed":0}
  188. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3"}
  189. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3","Output":"=== RUN TestMode1ForwardRegressionV2AndV3\n","OutputType":"frame"}
  190. {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=0"}
  191. {"Time":"2026-09-12T23:22:19.4240531+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"}
  192. {"Time":"2026-09-12T23:22:19.4260972+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"}
  193. {"Time":"2026-09-12T23:22:19.4260972+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=0","Elapsed":0}
  194. {"Time":"2026-09-12T23:22:19.4260972+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=1"}
  195. {"Time":"2026-09-12T23:22:19.4260972+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"}
  196. {"Time":"2026-09-12T23:22:19.4271476+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"}
  197. {"Time":"2026-09-12T23:22:19.4271476+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=1","Elapsed":0}
  198. {"Time":"2026-09-12T23:22:19.4271476+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2"}
  199. {"Time":"2026-09-12T23:22:19.4271476+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"}
  200. {"Time":"2026-09-12T23:22:19.4271476+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2","Output":"2026/09/12 15:22:19 [OpenAI] Upstream model resolved: gpt-5.4-high -\u003e gpt-5.4 (account: , type: oauth, isCodexCLI: false)\n"}
  201. {"Time":"2026-09-12T23:22:19.4271476+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2","Output":"2026/09/12 15:22:19 [OpenAI] Normalized reasoning.effort: minimal -\u003e none (account: )\n"}
  202. {"Time":"2026-09-12T23:22:19.4281923+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"}
  203. {"Time":"2026-09-12T23:22:19.4281923+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=2","Elapsed":0}
  204. {"Time":"2026-09-12T23:22:19.4281923+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=3"}
  205. {"Time":"2026-09-12T23:22:19.4281923+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"}
  206. {"Time":"2026-09-12T23:22:19.4292371+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"}
  207. {"Time":"2026-09-12T23:22:19.4292371+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=3","Elapsed":0}
  208. {"Time":"2026-09-12T23:22:19.4292371+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=4"}
  209. {"Time":"2026-09-12T23:22:19.4292371+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"}
  210. {"Time":"2026-09-12T23:22:19.4308954+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"}
  211. {"Time":"2026-09-12T23:22:19.4308954+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=false/body=4","Elapsed":0}
  212. {"Time":"2026-09-12T23:22:19.4308954+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=0"}
  213. {"Time":"2026-09-12T23:22:19.4308954+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"}
  214. {"Time":"2026-09-12T23:22:19.4308954+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=0","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
  215. {"Time":"2026-09-12T23:22:19.4314009+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"}
  216. {"Time":"2026-09-12T23:22:19.4314009+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=0","Elapsed":0}
  217. {"Time":"2026-09-12T23:22:19.4314009+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=1"}
  218. {"Time":"2026-09-12T23:22:19.4314009+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"}
  219. {"Time":"2026-09-12T23:22:19.4314009+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=1","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
  220. {"Time":"2026-09-12T23:22:19.4314009+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"}
  221. {"Time":"2026-09-12T23:22:19.4314009+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=1","Elapsed":0}
  222. {"Time":"2026-09-12T23:22:19.4314009+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=2"}
  223. {"Time":"2026-09-12T23:22:19.4314009+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"}
  224. {"Time":"2026-09-12T23:22:19.4314009+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=2","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.4-high stream=true\n"}
  225. {"Time":"2026-09-12T23:22:19.431913+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"}
  226. {"Time":"2026-09-12T23:22:19.431913+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=2","Elapsed":0}
  227. {"Time":"2026-09-12T23:22:19.431913+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=3"}
  228. {"Time":"2026-09-12T23:22:19.431913+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"}
  229. {"Time":"2026-09-12T23:22:19.431913+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=3","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
  230. {"Time":"2026-09-12T23:22:19.4325145+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"}
  231. {"Time":"2026-09-12T23:22:19.4325145+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=3","Elapsed":0}
  232. {"Time":"2026-09-12T23:22:19.4325145+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=4"}
  233. {"Time":"2026-09-12T23:22:19.4325145+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"}
  234. {"Time":"2026-09-12T23:22:19.4325145+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=4","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
  235. {"Time":"2026-09-12T23:22:19.4325145+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"}
  236. {"Time":"2026-09-12T23:22:19.4325145+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v2/passthrough=true/body=4","Elapsed":0}
  237. {"Time":"2026-09-12T23:22:19.4330243+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=0"}
  238. {"Time":"2026-09-12T23:22:19.4330243+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"}
  239. {"Time":"2026-09-12T23:22:19.4340522+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"}
  240. {"Time":"2026-09-12T23:22:19.4340522+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=0","Elapsed":0}
  241. {"Time":"2026-09-12T23:22:19.4340522+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=1"}
  242. {"Time":"2026-09-12T23:22:19.4340522+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"}
  243. {"Time":"2026-09-12T23:22:19.4351196+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"}
  244. {"Time":"2026-09-12T23:22:19.4351196+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=1","Elapsed":0}
  245. {"Time":"2026-09-12T23:22:19.4351196+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2"}
  246. {"Time":"2026-09-12T23:22:19.4351196+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"}
  247. {"Time":"2026-09-12T23:22:19.4351196+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2","Output":"2026/09/12 15:22:19 [OpenAI] Upstream model resolved: gpt-5.4-high -\u003e gpt-5.4 (account: , type: oauth, isCodexCLI: false)\n"}
  248. {"Time":"2026-09-12T23:22:19.4351196+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2","Output":"2026/09/12 15:22:19 [OpenAI] Normalized reasoning.effort: minimal -\u003e none (account: )\n"}
  249. {"Time":"2026-09-12T23:22:19.4361704+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"}
  250. {"Time":"2026-09-12T23:22:19.4361704+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=2","Elapsed":0}
  251. {"Time":"2026-09-12T23:22:19.4361704+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=3"}
  252. {"Time":"2026-09-12T23:22:19.4361704+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"}
  253. {"Time":"2026-09-12T23:22:19.4373607+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"}
  254. {"Time":"2026-09-12T23:22:19.4373607+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=3","Elapsed":0}
  255. {"Time":"2026-09-12T23:22:19.4373607+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=4"}
  256. {"Time":"2026-09-12T23:22:19.4373607+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"}
  257. {"Time":"2026-09-12T23:22:19.4384309+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"}
  258. {"Time":"2026-09-12T23:22:19.4384309+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=false/body=4","Elapsed":0}
  259. {"Time":"2026-09-12T23:22:19.4384309+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=0"}
  260. {"Time":"2026-09-12T23:22:19.4384309+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"}
  261. {"Time":"2026-09-12T23:22:19.4384309+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=0","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
  262. {"Time":"2026-09-12T23:22:19.4389451+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"}
  263. {"Time":"2026-09-12T23:22:19.4389451+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=0","Elapsed":0}
  264. {"Time":"2026-09-12T23:22:19.4389451+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=1"}
  265. {"Time":"2026-09-12T23:22:19.4389451+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"}
  266. {"Time":"2026-09-12T23:22:19.4394493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=1","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
  267. {"Time":"2026-09-12T23:22:19.4394493+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"}
  268. {"Time":"2026-09-12T23:22:19.4394493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=1","Elapsed":0}
  269. {"Time":"2026-09-12T23:22:19.4394493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=2"}
  270. {"Time":"2026-09-12T23:22:19.4394493+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"}
  271. {"Time":"2026-09-12T23:22:19.4394493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=2","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.4-high stream=true\n"}
  272. {"Time":"2026-09-12T23:22:19.4394493+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"}
  273. {"Time":"2026-09-12T23:22:19.4394493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=2","Elapsed":0}
  274. {"Time":"2026-09-12T23:22:19.4394493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=3"}
  275. {"Time":"2026-09-12T23:22:19.4394493+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"}
  276. {"Time":"2026-09-12T23:22:19.4394493+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=3","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
  277. {"Time":"2026-09-12T23:22:19.4399626+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"}
  278. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=3","Elapsed":0}
  279. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=4"}
  280. {"Time":"2026-09-12T23:22:19.4399626+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"}
  281. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=4","Output":"2026/09/12 15:22:19 [OpenAI 自动透传] 命中自动透传分支: account=1 name= type=oauth model=gpt-5.2 stream=true\n"}
  282. {"Time":"2026-09-12T23:22:19.4399626+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"}
  283. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3/v3/passthrough=true/body=4","Elapsed":0}
  284. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3","Output":"--- PASS: TestMode1ForwardRegressionV2AndV3 (0.02s)\n","OutputType":"frame"}
  285. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3","Elapsed":0.02}
  286. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports"}
  287. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports\n","OutputType":"frame"}
  288. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth"}
  289. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth\n","OutputType":"frame"}
  290. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth (0.00s)\n","OutputType":"frame"}
  291. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth","Elapsed":0}
  292. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup"}
  293. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup\n","OutputType":"frame"}
  294. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup (0.00s)\n","OutputType":"frame"}
  295. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup","Elapsed":0}
  296. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key"}
  297. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key\n","OutputType":"frame"}
  298. {"Time":"2026-09-12T23:22:19.4399626+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"}
  299. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key","Elapsed":0}
  300. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic"}
  301. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic\n","OutputType":"frame"}
  302. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic (0.00s)\n","OutputType":"frame"}
  303. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic","Elapsed":0}
  304. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini"}
  305. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini\n","OutputType":"frame"}
  306. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini (0.00s)\n","OutputType":"frame"}
  307. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini","Elapsed":0}
  308. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy"}
  309. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy\n","OutputType":"frame"}
  310. {"Time":"2026-09-12T23:22:19.4399626+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"}
  311. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy","Elapsed":0}
  312. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow"}
  313. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow","Output":"=== RUN TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow\n","OutputType":"frame"}
  314. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow (0.00s)\n","OutputType":"frame"}
  315. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow","Elapsed":0}
  316. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports","Output":"--- PASS: TestAccountProtectionNewDefaultsCoverProvidersAndImports (0.00s)\n","OutputType":"frame"}
  317. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports","Elapsed":0}
  318. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOldAccountsAreNotSilentlyChanged"}
  319. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOldAccountsAreNotSilentlyChanged","Output":"=== RUN TestAccountProtectionOldAccountsAreNotSilentlyChanged\n","OutputType":"frame"}
  320. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOldAccountsAreNotSilentlyChanged","Output":"--- PASS: TestAccountProtectionOldAccountsAreNotSilentlyChanged (0.00s)\n","OutputType":"frame"}
  321. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOldAccountsAreNotSilentlyChanged","Elapsed":0}
  322. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy"}
  323. {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy","Output":"=== RUN TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy\n","OutputType":"frame"}
  324. {"Time":"2026-09-12T23:22:19.4404711+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy","Output":"--- PASS: TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy (0.00s)\n","OutputType":"frame"}
  325. {"Time":"2026-09-12T23:22:19.4404711+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy","Elapsed":0}
  326. {"Time":"2026-09-12T23:22:19.4404711+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity"}
  327. {"Time":"2026-09-12T23:22:19.4404711+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity","Output":"=== RUN TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity\n","OutputType":"frame"}
  328. {"Time":"2026-09-12T23:22:19.4404711+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity","Output":"--- PASS: TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity (0.00s)\n","OutputType":"frame"}
  329. {"Time":"2026-09-12T23:22:19.4404711+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity","Elapsed":0}
  330. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound"}
  331. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound\n","OutputType":"frame"}
  332. {"Time":"2026-09-12T23:22:19.4435465+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"}
  333. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound","Elapsed":0}
  334. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilGroupID_NoOp"}
  335. {"Time":"2026-09-12T23:22:19.4435465+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"}
  336. {"Time":"2026-09-12T23:22:19.4435465+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"}
  337. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilGroupID_NoOp","Elapsed":0}
  338. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind"}
  339. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_Unbind\n","OutputType":"frame"}
  340. {"Time":"2026-09-12T23:22:19.4435465+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"}
  341. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind","Elapsed":0}
  342. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup"}
  343. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup\n","OutputType":"frame"}
  344. {"Time":"2026-09-12T23:22:19.4435465+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"}
  345. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup","Elapsed":0}
  346. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SameGroup_Idempotent"}
  347. {"Time":"2026-09-12T23:22:19.4435465+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"}
  348. {"Time":"2026-09-12T23:22:19.4435465+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"}
  349. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SameGroup_Idempotent","Elapsed":0}
  350. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound"}
  351. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound\n","OutputType":"frame"}
  352. {"Time":"2026-09-12T23:22:19.4435465+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"}
  353. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound","Elapsed":0}
  354. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive"}
  355. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive\n","OutputType":"frame"}
  356. {"Time":"2026-09-12T23:22:19.4435465+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"}
  357. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive","Elapsed":0}
  358. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails"}
  359. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails\n","OutputType":"frame"}
  360. {"Time":"2026-09-12T23:22:19.4435465+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"}
  361. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails","Elapsed":0}
  362. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID"}
  363. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID\n","OutputType":"frame"}
  364. {"Time":"2026-09-12T23:22:19.4435465+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"}
  365. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID","Elapsed":0}
  366. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation"}
  367. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation\n","OutputType":"frame"}
  368. {"Time":"2026-09-12T23:22:19.4435465+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"}
  369. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation","Elapsed":0}
  370. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator"}
  371. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator","Output":"=== RUN TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator\n","OutputType":"frame"}
  372. {"Time":"2026-09-12T23:22:19.4435465+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"}
  373. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator","Elapsed":0}
  374. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup"}
  375. {"Time":"2026-09-12T23:22:19.4435465+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"}
  376. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup","Output":"2026/09/12 15:22:19 Warning: entClient is nil, skipping transaction protection for exclusive group binding\n"}
  377. {"Time":"2026-09-12T23:22:19.4435465+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"}
  378. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup","Elapsed":0}
  379. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NonExclusiveGroup_NoAllowedGroupUpdate"}
  380. {"Time":"2026-09-12T23:22:19.4435465+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"}
  381. {"Time":"2026-09-12T23:22:19.4435465+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"}
  382. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NonExclusiveGroup_NoAllowedGroupUpdate","Elapsed":0}
  383. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_Blocked"}
  384. {"Time":"2026-09-12T23:22:19.4435465+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"}
  385. {"Time":"2026-09-12T23:22:19.4435465+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"}
  386. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_Blocked","Elapsed":0}
  387. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_RequiresRepo"}
  388. {"Time":"2026-09-12T23:22:19.4435465+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"}
  389. {"Time":"2026-09-12T23:22:19.4435465+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"}
  390. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_RequiresRepo","Elapsed":0}
  391. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_AllowsActiveSubscription"}
  392. {"Time":"2026-09-12T23:22:19.4435465+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"}
  393. {"Time":"2026-09-12T23:22:19.4435465+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"}
  394. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_AllowsActiveSubscription","Elapsed":0}
  395. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AllowedGroupAddFails_ReturnsError"}
  396. {"Time":"2026-09-12T23:22:19.4435465+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"}
  397. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AllowedGroupAddFails_ReturnsError","Output":"2026/09/12 15:22:19 Warning: entClient is nil, skipping transaction protection for exclusive group binding\n"}
  398. {"Time":"2026-09-12T23:22:19.4435465+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"}
  399. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AllowedGroupAddFails_ReturnsError","Elapsed":0}
  400. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind_NoAllowedGroupUpdate"}
  401. {"Time":"2026-09-12T23:22:19.4435465+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"}
  402. {"Time":"2026-09-12T23:22:19.4435465+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"}
  403. {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind_NoAllowedGroupUpdate","Elapsed":0}
  404. {"Time":"2026-09-12T23:22:19.4441462+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_DeleteUser_AdminGuard"}
  405. {"Time":"2026-09-12T23:22:19.4441462+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_DeleteUser_AdminGuard","Output":"=== RUN TestAdminService_DeleteUser_AdminGuard\n","OutputType":"frame"}
  406. {"Time":"2026-09-12T23:22:19.4441462+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"}
  407. {"Time":"2026-09-12T23:22:19.4441462+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_DeleteUser_AdminGuard","Elapsed":0}
  408. {"Time":"2026-09-12T23:22:19.4456763+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_WithAdminRole"}
  409. {"Time":"2026-09-12T23:22:19.4456763+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_WithAdminRole","Output":"=== RUN TestAdminService_CreateUser_WithAdminRole\n","OutputType":"frame"}
  410. {"Time":"2026-09-12T23:22:19.4855677+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_WithAdminRole","Output":"2026/09/12 15:22:19 audit: admin user created actor_admin_id=1 target_user_id=30\n"}
  411. {"Time":"2026-09-12T23:22:19.4862712+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"}
  412. {"Time":"2026-09-12T23:22:19.4862712+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_WithAdminRole","Elapsed":0.04}
  413. {"Time":"2026-09-12T23:22:19.4862712+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_DefaultsToUserRole"}
  414. {"Time":"2026-09-12T23:22:19.4862712+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_DefaultsToUserRole","Output":"=== RUN TestAdminService_CreateUser_DefaultsToUserRole\n","OutputType":"frame"}
  415. {"Time":"2026-09-12T23:22:19.5264647+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"}
  416. {"Time":"2026-09-12T23:22:19.5264647+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_DefaultsToUserRole","Elapsed":0.04}
  417. {"Time":"2026-09-12T23:22:19.5264647+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_InvalidRoleRejected"}
  418. {"Time":"2026-09-12T23:22:19.5264647+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_InvalidRoleRejected","Output":"=== RUN TestAdminService_CreateUser_InvalidRoleRejected\n","OutputType":"frame"}
  419. {"Time":"2026-09-12T23:22:19.5264647+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"}
  420. {"Time":"2026-09-12T23:22:19.5264647+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_InvalidRoleRejected","Elapsed":0}
  421. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteToAdmin"}
  422. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteToAdmin","Output":"=== RUN TestAdminService_UpdateUser_PromoteToAdmin\n","OutputType":"frame"}
  423. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteToAdmin","Output":"2026/09/12 15:22:19 audit: user role changed actor_admin_id=1 target_user_id=42 old_role=user new_role=admin\n"}
  424. {"Time":"2026-09-12T23:22:19.5267805+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"}
  425. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteToAdmin","Elapsed":0}
  426. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_RoleOmittedKeepsExisting"}
  427. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_RoleOmittedKeepsExisting","Output":"=== RUN TestAdminService_UpdateUser_RoleOmittedKeepsExisting\n","OutputType":"frame"}
  428. {"Time":"2026-09-12T23:22:19.5267805+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"}
  429. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_RoleOmittedKeepsExisting","Elapsed":0}
  430. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_InvalidRoleRejected"}
  431. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_InvalidRoleRejected","Output":"=== RUN TestAdminService_UpdateUser_InvalidRoleRejected\n","OutputType":"frame"}
  432. {"Time":"2026-09-12T23:22:19.5267805+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"}
  433. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_InvalidRoleRejected","Elapsed":0}
  434. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteLastSuperAdminRejected"}
  435. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteLastSuperAdminRejected","Output":"=== RUN TestAdminService_UpdateUser_DemoteLastSuperAdminRejected\n","OutputType":"frame"}
  436. {"Time":"2026-09-12T23:22:19.5267805+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"}
  437. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteLastSuperAdminRejected","Elapsed":0}
  438. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist"}
  439. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist","Output":"=== RUN TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist\n","OutputType":"frame"}
  440. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist","Output":"2026/09/12 15:22:19 audit: user role changed actor_admin_id=1 target_user_id=42 old_role=admin new_role=user\n"}
  441. {"Time":"2026-09-12T23:22:19.5267805+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"}
  442. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist","Elapsed":0}
  443. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteDoesNotCountAdmins"}
  444. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteDoesNotCountAdmins","Output":"=== RUN TestAdminService_UpdateUser_PromoteDoesNotCountAdmins\n","OutputType":"frame"}
  445. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteDoesNotCountAdmins","Output":"2026/09/12 15:22:19 audit: user role changed actor_admin_id=1 target_user_id=42 old_role=user new_role=admin\n"}
  446. {"Time":"2026-09-12T23:22:19.5267805+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"}
  447. {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteDoesNotCountAdmins","Elapsed":0}
  448. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate"}
  449. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate","Output":"=== RUN TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate\n","OutputType":"frame"}
  450. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/disabled_by_default"}
  451. {"Time":"2026-09-12T23:22:19.5272821+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"}
  452. {"Time":"2026-09-12T23:22:19.5272821+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"}
  453. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/disabled_by_default","Elapsed":0}
  454. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_add"}
  455. {"Time":"2026-09-12T23:22:19.5272821+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"}
  456. {"Time":"2026-09-12T23:22:19.5272821+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"}
  457. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_add","Elapsed":0}
  458. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_set_increase"}
  459. {"Time":"2026-09-12T23:22:19.5272821+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"}
  460. {"Time":"2026-09-12T23:22:19.5272821+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"}
  461. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_set_increase","Elapsed":0}
  462. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_subtract"}
  463. {"Time":"2026-09-12T23:22:19.5272821+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"}
  464. {"Time":"2026-09-12T23:22:19.5272821+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"}
  465. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate/enabled_subtract","Elapsed":0}
  466. {"Time":"2026-09-12T23:22:19.5272821+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"}
  467. {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate","Elapsed":0}
  468. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence"}
  469. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence","Output":"=== RUN TestMode1CodexSemanticEquivalence\n","OutputType":"frame"}
  470. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/string_input"}
  471. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/string_input","Output":"=== RUN TestMode1CodexSemanticEquivalence/string_input\n","OutputType":"frame"}
  472. {"Time":"2026-09-12T23:22:19.5711078+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"}
  473. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/string_input","Elapsed":0}
  474. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/text_parts"}
  475. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/text_parts","Output":"=== RUN TestMode1CodexSemanticEquivalence/text_parts\n","OutputType":"frame"}
  476. {"Time":"2026-09-12T23:22:19.5711078+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"}
  477. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/text_parts","Elapsed":0}
  478. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/reasoning_replay_metadata"}
  479. {"Time":"2026-09-12T23:22:19.5711078+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"}
  480. {"Time":"2026-09-12T23:22:19.5711078+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"}
  481. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/reasoning_replay_metadata","Elapsed":0}
  482. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/system_promotion"}
  483. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/system_promotion","Output":"=== RUN TestMode1CodexSemanticEquivalence/system_promotion\n","OutputType":"frame"}
  484. {"Time":"2026-09-12T23:22:19.5711078+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"}
  485. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/system_promotion","Elapsed":0}
  486. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_schema"}
  487. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_schema","Output":"=== RUN TestMode1CodexSemanticEquivalence/tool_schema\n","OutputType":"frame"}
  488. {"Time":"2026-09-12T23:22:19.5711078+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"}
  489. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_schema","Elapsed":0}
  490. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_role_result"}
  491. {"Time":"2026-09-12T23:22:19.5711078+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"}
  492. {"Time":"2026-09-12T23:22:19.5711078+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"}
  493. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_role_result","Elapsed":0}
  494. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/call_pair"}
  495. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/call_pair","Output":"=== RUN TestMode1CodexSemanticEquivalence/call_pair\n","OutputType":"frame"}
  496. {"Time":"2026-09-12T23:22:19.5711078+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"}
  497. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/call_pair","Elapsed":0}
  498. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/previous_turn_reference"}
  499. {"Time":"2026-09-12T23:22:19.5711078+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"}
  500. {"Time":"2026-09-12T23:22:19.5711078+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"}
  501. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/previous_turn_reference","Elapsed":0}
  502. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/model_alias"}
  503. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/model_alias","Output":"=== RUN TestMode1CodexSemanticEquivalence/model_alias\n","OutputType":"frame"}
  504. {"Time":"2026-09-12T23:22:19.5711078+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"}
  505. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/model_alias","Elapsed":0}
  506. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/minimal_compatibility"}
  507. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/minimal_compatibility","Output":"=== RUN TestMode1CodexSemanticEquivalence/minimal_compatibility\n","OutputType":"frame"}
  508. {"Time":"2026-09-12T23:22:19.5711078+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"}
  509. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/minimal_compatibility","Elapsed":0}
  510. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/legacy_pro_mode"}
  511. {"Time":"2026-09-12T23:22:19.5711078+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"}
  512. {"Time":"2026-09-12T23:22:19.5711078+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"}
  513. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/legacy_pro_mode","Elapsed":0}
  514. {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/unsupported_OAuth_budget"}
  515. {"Time":"2026-09-12T23:22:19.5711078+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"}
  516. {"Time":"2026-09-12T23:22:19.5711078+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"}
  517. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/unsupported_OAuth_budget","Elapsed":0}
  518. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence","Output":"--- PASS: TestMode1CodexSemanticEquivalence (0.00s)\n","OutputType":"frame"}
  519. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence","Elapsed":0}
  520. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss"}
  521. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss\n","OutputType":"frame"}
  522. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_text"}
  523. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_text","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/changed_text\n","OutputType":"frame"}
  524. {"Time":"2026-09-12T23:22:19.5720982+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"}
  525. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_text","Elapsed":0}
  526. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn"}
  527. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn\n","OutputType":"frame"}
  528. {"Time":"2026-09-12T23:22:19.5720982+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"}
  529. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn","Elapsed":0}
  530. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_system"}
  531. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_system","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_system\n","OutputType":"frame"}
  532. {"Time":"2026-09-12T23:22:19.5720982+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"}
  533. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_system","Elapsed":0}
  534. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_encrypted_reasoning"}
  535. {"Time":"2026-09-12T23:22:19.5720982+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"}
  536. {"Time":"2026-09-12T23:22:19.5720982+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"}
  537. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_encrypted_reasoning","Elapsed":0}
  538. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_reference"}
  539. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_reference","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_reference\n","OutputType":"frame"}
  540. {"Time":"2026-09-12T23:22:19.5720982+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"}
  541. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_reference","Elapsed":0}
  542. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_reference"}
  543. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_reference","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/changed_reference\n","OutputType":"frame"}
  544. {"Time":"2026-09-12T23:22:19.5720982+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"}
  545. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_reference","Elapsed":0}
  546. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/wrong_call_id"}
  547. {"Time":"2026-09-12T23:22:19.5720982+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"}
  548. {"Time":"2026-09-12T23:22:19.5720982+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"}
  549. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/wrong_call_id","Elapsed":0}
  550. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_result"}
  551. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_result","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/changed_result\n","OutputType":"frame"}
  552. {"Time":"2026-09-12T23:22:19.5720982+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"}
  553. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_result","Elapsed":0}
  554. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_tools"}
  555. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_tools","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_tools\n","OutputType":"frame"}
  556. {"Time":"2026-09-12T23:22:19.5720982+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"}
  557. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_tools","Elapsed":0}
  558. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/conflicting_legacy_tools"}
  559. {"Time":"2026-09-12T23:22:19.5720982+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"}
  560. {"Time":"2026-09-12T23:22:19.5720982+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"}
  561. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/conflicting_legacy_tools","Elapsed":0}
  562. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/tool_without_association"}
  563. {"Time":"2026-09-12T23:22:19.5720982+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"}
  564. {"Time":"2026-09-12T23:22:19.5720982+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"}
  565. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/tool_without_association","Elapsed":0}
  566. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_malformed_tool"}
  567. {"Time":"2026-09-12T23:22:19.5720982+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"}
  568. {"Time":"2026-09-12T23:22:19.5720982+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"}
  569. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_malformed_tool","Elapsed":0}
  570. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning"}
  571. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning\n","OutputType":"frame"}
  572. {"Time":"2026-09-12T23:22:19.5720982+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"}
  573. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning","Elapsed":0}
  574. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_Astra_mode"}
  575. {"Time":"2026-09-12T23:22:19.5720982+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"}
  576. {"Time":"2026-09-12T23:22:19.5720982+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"}
  577. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_Astra_mode","Elapsed":0}
  578. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_model"}
  579. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_model","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/changed_model\n","OutputType":"frame"}
  580. {"Time":"2026-09-12T23:22:19.5720982+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"}
  581. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_model","Elapsed":0}
  582. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_budget"}
  583. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_budget","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/changed_budget\n","OutputType":"frame"}
  584. {"Time":"2026-09-12T23:22:19.5720982+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"}
  585. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_budget","Elapsed":0}
  586. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity"}
  587. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity","Output":"=== RUN TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity\n","OutputType":"frame"}
  588. {"Time":"2026-09-12T23:22:19.5720982+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"}
  589. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity","Elapsed":0}
  590. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss","Output":"--- PASS: TestMode1SemanticGuardStillRejectsActualLoss (0.00s)\n","OutputType":"frame"}
  591. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss","Elapsed":0}
  592. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardAcceptsActualCodexTransform"}
  593. {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardAcceptsActualCodexTransform","Output":"=== RUN TestMode1GuardAcceptsActualCodexTransform\n","OutputType":"frame"}
  594. {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardAcceptsActualCodexTransform","Output":"--- PASS: TestMode1GuardAcceptsActualCodexTransform (0.00s)\n","OutputType":"frame"}
  595. {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardAcceptsActualCodexTransform","Elapsed":0}
  596. {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardRejectsInvalidJSON"}
  597. {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardRejectsInvalidJSON","Output":"=== RUN TestMode1GuardRejectsInvalidJSON\n","OutputType":"frame"}
  598. {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardRejectsInvalidJSON","Output":"--- PASS: TestMode1GuardRejectsInvalidJSON (0.00s)\n","OutputType":"frame"}
  599. {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardRejectsInvalidJSON","Elapsed":0}
  600. {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardWSSPoolSeparatesConversations"}
  601. {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardWSSPoolSeparatesConversations","Output":"=== RUN TestMode1V3StandardWSSPoolSeparatesConversations\n","OutputType":"frame"}
  602. {"Time":"2026-09-12T23:22:19.5773647+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardWSSPoolSeparatesConversations","Output":"--- PASS: TestMode1V3StandardWSSPoolSeparatesConversations (0.00s)\n","OutputType":"frame"}
  603. {"Time":"2026-09-12T23:22:19.5773647+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardWSSPoolSeparatesConversations","Elapsed":0}
  604. {"Time":"2026-09-12T23:22:19.5773647+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames"}
  605. {"Time":"2026-09-12T23:22:19.5773647+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"=== RUN TestMode1V3WSPassthroughAcceptsCompatibilityFrames\n","OutputType":"frame"}
  606. {"Time":"2026-09-12T23:22:19.5784218+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:19 [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"}
  607. {"Time":"2026-09-12T23:22:19.5784218+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:19 [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"}
  608. {"Time":"2026-09-12T23:22:19.579444+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:19 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_dial_ok account_id=72 status_code=101 upstream_request_id=-\n"}
  609. {"Time":"2026-09-12T23:22:19.579444+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:19 [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"}
  610. {"Time":"2026-09-12T23:22:19.579444+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:19 [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"}
  611. {"Time":"2026-09-12T23:22:19.579444+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:19 [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"}
  612. {"Time":"2026-09-12T23:22:19.5799687+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:19 [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"}
  613. {"Time":"2026-09-12T23:22:19.5799687+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:19 [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"}
  614. {"Time":"2026-09-12T23:22:19.5799687+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:19 [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"}
  615. {"Time":"2026-09-12T23:22:20.7800423+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:20 [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"}
  616. {"Time":"2026-09-12T23:22:20.7800423+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:20 [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"}
  617. {"Time":"2026-09-12T23:22:20.7800423+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"2026/09/12 15:22:20 [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"}
  618. {"Time":"2026-09-12T23:22:20.7800423+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Output":"--- PASS: TestMode1V3WSPassthroughAcceptsCompatibilityFrames (1.20s)\n","OutputType":"frame"}
  619. {"Time":"2026-09-12T23:22:20.7800423+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Elapsed":1.2}
  620. {"Time":"2026-09-12T23:22:20.7869147+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSActualHandshakeAndFramePreservation"}
  621. {"Time":"2026-09-12T23:22:20.7869147+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSActualHandshakeAndFramePreservation","Output":"=== RUN TestMode1WSSActualHandshakeAndFramePreservation\n","OutputType":"frame"}
  622. {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSActualHandshakeAndFramePreservation","Output":"--- PASS: TestMode1WSSActualHandshakeAndFramePreservation (0.00s)\n","OutputType":"frame"}
  623. {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSActualHandshakeAndFramePreservation","Elapsed":0}
  624. {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSTransportCacheIsolationAndProfileRotation"}
  625. {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSTransportCacheIsolationAndProfileRotation","Output":"=== RUN TestMode1WSSTransportCacheIsolationAndProfileRotation\n","OutputType":"frame"}
  626. {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSTransportCacheIsolationAndProfileRotation","Output":"--- PASS: TestMode1WSSTransportCacheIsolationAndProfileRotation (0.00s)\n","OutputType":"frame"}
  627. {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSTransportCacheIsolationAndProfileRotation","Elapsed":0}
  628. {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate"}
  629. {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate","Output":"=== RUN TestMode1WSSFailsClosedOnInvalidTLSAndCertificate\n","OutputType":"frame"}
  630. {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate"}
  631. {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate","Output":"=== RUN TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate\n","OutputType":"frame"}
  632. {"Time":"2026-09-12T23:22:20.8059073+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"}
  633. {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate","Elapsed":0.02}
  634. {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/invalid_ALPN_cannot_fall_back_to_ordinary_TLS"}
  635. {"Time":"2026-09-12T23:22:20.8059073+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"}
  636. {"Time":"2026-09-12T23:22:20.8059073+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"}
  637. {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/invalid_ALPN_cannot_fall_back_to_ordinary_TLS","Elapsed":0}
  638. {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected"}
  639. {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected","Output":"=== RUN TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected\n","OutputType":"frame"}
  640. {"Time":"2026-09-12T23:22:20.8059073+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"}
  641. {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected","Elapsed":0}
  642. {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate","Output":"--- PASS: TestMode1WSSFailsClosedOnInvalidTLSAndCertificate (0.02s)\n","OutputType":"frame"}
  643. {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate","Elapsed":0.02}
  644. {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSConnectionPoolTransportCompatibility"}
  645. {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSConnectionPoolTransportCompatibility","Output":"=== RUN TestMode1WSConnectionPoolTransportCompatibility\n","OutputType":"frame"}
  646. {"Time":"2026-09-12T23:22:20.8111062+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSConnectionPoolTransportCompatibility","Output":"--- PASS: TestMode1WSConnectionPoolTransportCompatibility (0.01s)\n","OutputType":"frame"}
  647. {"Time":"2026-09-12T23:22:20.8116961+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSConnectionPoolTransportCompatibility","Elapsed":0.01}
  648. {"Time":"2026-09-12T23:22:20.8116961+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated"}
  649. {"Time":"2026-09-12T23:22:20.8116961+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated","Output":"=== RUN TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated\n","OutputType":"frame"}
  650. {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated","Output":"--- PASS: TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated (0.01s)\n","OutputType":"frame"}
  651. {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated","Elapsed":0.01}
  652. {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSRuntimeConcurrencyCapCannotBeBypassed"}
  653. {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSRuntimeConcurrencyCapCannotBeBypassed","Output":"=== RUN TestMode1WSRuntimeConcurrencyCapCannotBeBypassed\n","OutputType":"frame"}
  654. {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSRuntimeConcurrencyCapCannotBeBypassed","Output":"--- PASS: TestMode1WSRuntimeConcurrencyCapCannotBeBypassed (0.00s)\n","OutputType":"frame"}
  655. {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSRuntimeConcurrencyCapCannotBeBypassed","Elapsed":0}
  656. {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS"}
  657. {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"=== RUN TestMode1WSPassthroughEntryReachesRealTLS\n","OutputType":"frame"}
  658. {"Time":"2026-09-12T23:22:20.8184524+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:20 [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"}
  659. {"Time":"2026-09-12T23:22:20.8184524+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:20 [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"}
  660. {"Time":"2026-09-12T23:22:20.8199944+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:20 [OpenAI WS v2 passthrough] ws_mode=passthrough ws_router=v2 relay_dial_ok account_id=45 status_code=0 upstream_request_id=-\n"}
  661. {"Time":"2026-09-12T23:22:20.8199944+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:20 [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"}
  662. {"Time":"2026-09-12T23:22:20.8199944+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:20 [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"}
  663. {"Time":"2026-09-12T23:22:20.8205082+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:20 [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"}
  664. {"Time":"2026-09-12T23:22:20.8205082+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:20 [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"}
  665. {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:21 [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"}
  666. {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:21 [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"}
  667. {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:21 [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"}
  668. {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"2026/09/12 15:22:21 [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"}
  669. {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Output":"--- PASS: TestMode1WSPassthroughEntryReachesRealTLS (1.00s)\n","OutputType":"frame"}
  670. {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Elapsed":1}
  671. {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial"}
  672. {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial","Output":"=== RUN TestMode1WSIngressRejectsLossyPolicyBeforeDial\n","OutputType":"frame"}
  673. {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough"}
  674. {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough","Output":"=== RUN TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough\n","OutputType":"frame"}
  675. {"Time":"2026-09-12T23:22:21.8217204+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough","Output":"2026/09/12 15:22:21 [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"}
  676. {"Time":"2026-09-12T23:22:21.8217204+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough","Output":"--- PASS: TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough (0.00s)\n","OutputType":"frame"}
  677. {"Time":"2026-09-12T23:22:21.8217204+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough","Elapsed":0}
  678. {"Time":"2026-09-12T23:22:21.8217204+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool"}
  679. {"Time":"2026-09-12T23:22:21.8217204+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool","Output":"=== RUN TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool\n","OutputType":"frame"}
  680. {"Time":"2026-09-12T23:22:21.8227711+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"}
  681. {"Time":"2026-09-12T23:22:21.8227711+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool","Elapsed":0}
  682. {"Time":"2026-09-12T23:22:21.8227711+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial","Output":"--- PASS: TestMode1WSIngressRejectsLossyPolicyBeforeDial (0.00s)\n","OutputType":"frame"}
  683. {"Time":"2026-09-12T23:22:21.8227711+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial","Elapsed":0}
  684. {"Time":"2026-09-12T23:22:21.8227711+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy"}
  685. {"Time":"2026-09-12T23:22:21.8227711+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy","Output":"=== RUN TestMode1WSSOverLocalHTTPAndHTTPSProxy\n","OutputType":"frame"}
  686. {"Time":"2026-09-12T23:22:21.8227711+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/http"}
  687. {"Time":"2026-09-12T23:22:21.8227711+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/http","Output":"=== RUN TestMode1WSSOverLocalHTTPAndHTTPSProxy/http\n","OutputType":"frame"}
  688. {"Time":"2026-09-12T23:22:21.8248387+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/http","Output":"--- PASS: TestMode1WSSOverLocalHTTPAndHTTPSProxy/http (0.00s)\n","OutputType":"frame"}
  689. {"Time":"2026-09-12T23:22:21.8248387+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/http","Elapsed":0}
  690. {"Time":"2026-09-12T23:22:21.8248387+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/https"}
  691. {"Time":"2026-09-12T23:22:21.8248387+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/https","Output":"=== RUN TestMode1WSSOverLocalHTTPAndHTTPSProxy/https\n","OutputType":"frame"}
  692. {"Time":"2026-09-12T23:22:21.8284863+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/https","Output":"--- PASS: TestMode1WSSOverLocalHTTPAndHTTPSProxy/https (0.00s)\n","OutputType":"frame"}
  693. {"Time":"2026-09-12T23:22:21.8284863+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/https","Elapsed":0}
  694. {"Time":"2026-09-12T23:22:21.8284863+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy","Output":"--- PASS: TestMode1WSSOverLocalHTTPAndHTTPSProxy (0.01s)\n","OutputType":"frame"}
  695. {"Time":"2026-09-12T23:22:21.8284863+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy","Elapsed":0.01}
  696. {"Time":"2026-09-12T23:22:21.8427027+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin"}
  697. {"Time":"2026-09-12T23:22:21.8427027+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin","Output":"=== RUN TestUserHierarchyRoleChangesRequireLiveSuperAdmin\n","OutputType":"frame"}
  698. {"Time":"2026-09-12T23:22:21.8427027+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active"}
  699. {"Time":"2026-09-12T23:22:21.8427027+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active","Output":"=== RUN TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active\n","OutputType":"frame"}
  700. {"Time":"2026-09-12T23:22:21.8427027+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"}
  701. {"Time":"2026-09-12T23:22:21.8427027+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active","Elapsed":0}
  702. {"Time":"2026-09-12T23:22:21.8427027+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active"}
  703. {"Time":"2026-09-12T23:22:21.8427027+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active","Output":"=== RUN TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active\n","OutputType":"frame"}
  704. {"Time":"2026-09-12T23:22:21.8427027+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"}
  705. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active","Elapsed":0}
  706. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_disabled"}
  707. {"Time":"2026-09-12T23:22:21.8432125+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"}
  708. {"Time":"2026-09-12T23:22:21.8432125+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"}
  709. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_disabled","Elapsed":0}
  710. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active"}
  711. {"Time":"2026-09-12T23:22:21.8432125+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"}
  712. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active","Output":"2026/09/12 15:22:21 audit: user role changed actor_admin_id=1 target_user_id=2 old_role=user new_role=super_admin\n"}
  713. {"Time":"2026-09-12T23:22:21.8432125+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"}
  714. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active","Elapsed":0}
  715. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin","Output":"--- PASS: TestUserHierarchyRoleChangesRequireLiveSuperAdmin (0.00s)\n","OutputType":"frame"}
  716. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin","Elapsed":0}
  717. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote"}
  718. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote","Output":"=== RUN TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote\n","OutputType":"frame"}
  719. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote","Output":"--- PASS: TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote (0.00s)\n","OutputType":"frame"}
  720. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote","Elapsed":0}
  721. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin"}
  722. {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin","Output":"=== RUN TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin\n","OutputType":"frame"}
  723. {"Time":"2026-09-12T23:22:21.8825283+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin","Output":"--- PASS: TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin (0.04s)\n","OutputType":"frame"}
  724. {"Time":"2026-09-12T23:22:21.8831527+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin","Elapsed":0.04}
  725. {"Time":"2026-09-12T23:22:21.8836544+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Output":"PASS\n","OutputType":"frame"}
  726. {"Time":"2026-09-12T23:22:21.889004+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Output":"ok \tgithub.com/Wei-Shaw/sub2api/internal/service\t10.150s\n"}
  727. {"Time":"2026-09-12T23:22:21.889004+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Elapsed":10.15}