{"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"} {"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"} {"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"} {"ImportPath":"github.com/Wei-Shaw/sub2api/internal/repository [github.com/Wei-Shaw/sub2api/internal/repository.test]","Action":"build-fail"} {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/service"} {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/repository"} {"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"} {"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]"} {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin"} {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware"} {"Time":"2026-09-12T23:22:11.73918+08:00","Action":"start","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto"} {"Time":"2026-09-12T23:22:14.810194+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Test":"TestMode1SeedStaysServerManaged"} {"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"} {"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"} {"Time":"2026-09-12T23:22:14.810194+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Test":"TestMode1SeedStaysServerManaged","Elapsed":0} {"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"} {"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"} {"Time":"2026-09-12T23:22:14.8127767+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/handler/dto","Elapsed":3.074} {"Time":"2026-09-12T23:22:16.2745501+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch"} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch/user_forbidden"} {"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"} {"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"} {"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} {"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"} {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyGuardsEveryMutationAndBatch","Elapsed":0} {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation"} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"Time":"2026-09-12T23:22:16.2750619+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Test":"TestUserHierarchyPreventsGlobalKeyAndRestoreEscalation","Elapsed":0} {"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"} {"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"} {"Time":"2026-09-12T23:22:16.2782804+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/server/middleware","Elapsed":4.539} {"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"} {"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"} {"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"} {"Time":"2026-09-12T23:22:17.186192+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/handler/admin","Elapsed":5.447} {"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"} {"Time":"2026-09-12T23:22:19.4198716+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IdentityIsUniquePersistentAndDoesNotMergeThreads","Elapsed":0} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1RuntimeRejectsConfigurationDrift"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1RuntimeRejectsConfigurationDrift","Elapsed":0} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidMarkerDoesNotDowngrade"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidMarkerDoesNotDowngrade","Elapsed":0} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DifferentAccountsWithDuplicatedLegacyDeviceStillDiffer","Elapsed":0} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1PartialAndBulkUpdatesCannotDisablePolicy"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1PartialAndBulkUpdatesCannotDisablePolicy","Elapsed":0} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1HTTPAndAccountTestUseSameTLSWithoutFallback","Elapsed":0} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1UsesExistingPluginRouting"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1UsesExistingPluginRouting","Elapsed":0} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IntegrityPreservesReasoningToolsAndBudget"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1IntegrityPreservesReasoningToolsAndBudget","Elapsed":0} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough"} {"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"} {"Time":"2026-09-12T23:22:19.421493+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/false","Elapsed":0} {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true"} {"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"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough/true","Elapsed":0} {"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"} {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardPreservesPayloadThroughNormalAndPassthrough","Elapsed":0} {"Time":"2026-09-12T23:22:19.4235419+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3MigrationPreservesOriginalSnapshotAndIdentity","Elapsed":0} {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidVersionCanBeExplicitlyRestored"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1InvalidVersionCanBeExplicitlyRestored","Elapsed":0} {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DamagedModeDoesNotSilentlyDisableProtection"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1DamagedModeDoesNotSilentlyDisableProtection","Elapsed":0} {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardTransportWithTLSGloballyDisabled"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardTransportWithTLSGloballyDisabled","Elapsed":0} {"Time":"2026-09-12T23:22:19.4240531+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3"} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1ForwardRegressionV2AndV3","Elapsed":0.02} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports"} {"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"} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/oauth","Elapsed":0} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/setup","Elapsed":0} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/api_key"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/anthropic","Elapsed":0} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/gemini","Elapsed":0} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/random_proxy"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports/shadow","Elapsed":0} {"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"} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionNewDefaultsCoverProvidersAndImports","Elapsed":0} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOldAccountsAreNotSilentlyChanged"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOldAccountsAreNotSilentlyChanged","Elapsed":0} {"Time":"2026-09-12T23:22:19.4399626+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4404711+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionOrdinaryUpdateCannotDisableOrErasePolicy","Elapsed":0} {"Time":"2026-09-12T23:22:19.4404711+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.4404711+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAccountProtectionDisableRequiresConfirmationAndKeepsIdentity","Elapsed":0} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_KeyNotFound"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilGroupID_NoOp"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_BindActiveGroup"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SameGroup_Idempotent"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotFound"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_GroupNotActive"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_UpdateFails"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NegativeGroupID"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_PointerIsolation"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NilCacheInvalidator"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_ExclusiveGroup_AddsAllowedGroup"} {"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"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_NonExclusiveGroup_NoAllowedGroupUpdate"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_Blocked"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_RequiresRepo"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_SubscriptionGroup_AllowsActiveSubscription"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4435465+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_AdminUpdateAPIKeyGroupID_Unbind_NoAllowedGroupUpdate"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4441462+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_DeleteUser_AdminGuard"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4456763+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_WithAdminRole"} {"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"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.4862712+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_DefaultsToUserRole"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5264647+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_CreateUser_InvalidRoleRejected"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteToAdmin"} {"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"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_RoleOmittedKeepsExisting"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_InvalidRoleRejected"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteLastSuperAdminRejected"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_DemoteAdminAllowedWhenOthersExist"} {"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"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5267805+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUser_PromoteDoesNotCountAdmins"} {"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"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5272821+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestAdminService_UpdateUserBalance_AdminRechargeAffiliateRebate"} {"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"} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence"} {"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"} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/string_input"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/text_parts"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/reasoning_replay_metadata"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/system_promotion"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_schema"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/tool_role_result"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/call_pair"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/previous_turn_reference"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/model_alias"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/minimal_compatibility"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/legacy_pro_mode"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5711078+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence/unsupported_OAuth_budget"} {"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"} {"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"} {"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} {"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"} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1CodexSemanticEquivalence","Elapsed":0} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss"} {"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"} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_text"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/dropped_turn"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_system"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_encrypted_reasoning"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_reference"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_reference"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/wrong_call_id"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_result"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_tools"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/conflicting_legacy_tools"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/tool_without_association"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_malformed_tool"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lowered_reasoning"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_Astra_mode"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_model"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/changed_budget"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss/lost_continuity"} {"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"} {"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"} {"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} {"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"} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1SemanticGuardStillRejectsActualLoss","Elapsed":0} {"Time":"2026-09-12T23:22:19.5720982+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardAcceptsActualCodexTransform"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardAcceptsActualCodexTransform","Elapsed":0} {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardRejectsInvalidJSON"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1GuardRejectsInvalidJSON","Elapsed":0} {"Time":"2026-09-12T23:22:19.5725999+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardWSSPoolSeparatesConversations"} {"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"} {"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"} {"Time":"2026-09-12T23:22:19.5773647+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3StandardWSSPoolSeparatesConversations","Elapsed":0} {"Time":"2026-09-12T23:22:19.5773647+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"Time":"2026-09-12T23:22:20.7800423+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1V3WSPassthroughAcceptsCompatibilityFrames","Elapsed":1.2} {"Time":"2026-09-12T23:22:20.7869147+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSActualHandshakeAndFramePreservation"} {"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"} {"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"} {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSActualHandshakeAndFramePreservation","Elapsed":0} {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSTransportCacheIsolationAndProfileRotation"} {"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"} {"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"} {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSTransportCacheIsolationAndProfileRotation","Elapsed":0} {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate"} {"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"} {"Time":"2026-09-12T23:22:20.7890448+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/untrusted_certificate"} {"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"} {"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"} {"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} {"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"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate/plaintext_rejected"} {"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"} {"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"} {"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} {"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"} {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSFailsClosedOnInvalidTLSAndCertificate","Elapsed":0.02} {"Time":"2026-09-12T23:22:20.8059073+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSConnectionPoolTransportCompatibility"} {"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"} {"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"} {"Time":"2026-09-12T23:22:20.8116961+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSConnectionPoolTransportCompatibility","Elapsed":0.01} {"Time":"2026-09-12T23:22:20.8116961+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated"} {"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"} {"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"} {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSAcquireUsesAccountTLSAndKeepsSessionsIsolated","Elapsed":0.01} {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSRuntimeConcurrencyCapCannotBeBypassed"} {"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"} {"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"} {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSRuntimeConcurrencyCapCannotBeBypassed","Elapsed":0} {"Time":"2026-09-12T23:22:20.8179438+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"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"} {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSPassthroughEntryReachesRealTLS","Elapsed":1} {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial"} {"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"} {"Time":"2026-09-12T23:22:21.8205216+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough"} {"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"} {"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"} {"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"} {"Time":"2026-09-12T23:22:21.8217204+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/passthrough","Elapsed":0} {"Time":"2026-09-12T23:22:21.8217204+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial/ctx_pool"} {"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"} {"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"} {"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} {"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"} {"Time":"2026-09-12T23:22:21.8227711+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSIngressRejectsLossyPolicyBeforeDial","Elapsed":0} {"Time":"2026-09-12T23:22:21.8227711+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy"} {"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"} {"Time":"2026-09-12T23:22:21.8227711+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/http"} {"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"} {"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"} {"Time":"2026-09-12T23:22:21.8248387+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/http","Elapsed":0} {"Time":"2026-09-12T23:22:21.8248387+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/https"} {"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"} {"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"} {"Time":"2026-09-12T23:22:21.8284863+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy/https","Elapsed":0} {"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"} {"Time":"2026-09-12T23:22:21.8284863+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestMode1WSSOverLocalHTTPAndHTTPSProxy","Elapsed":0.01} {"Time":"2026-09-12T23:22:21.8427027+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin"} {"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"} {"Time":"2026-09-12T23:22:21.8427027+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/user_active"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:21.8427027+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/admin_active"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_disabled"} {"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"} {"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"} {"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} {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin/super_admin_active"} {"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"} {"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"} {"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"} {"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} {"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"} {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyRoleChangesRequireLiveSuperAdmin","Elapsed":0} {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote"} {"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"} {"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"} {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyAdminCannotEditSuperAdminOrSelfPromote","Elapsed":0} {"Time":"2026-09-12T23:22:21.8432125+08:00","Action":"run","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin"} {"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"} {"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"} {"Time":"2026-09-12T23:22:21.8831527+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Test":"TestUserHierarchyCreationCannotGrantAdminWithoutSuperAdmin","Elapsed":0.04} {"Time":"2026-09-12T23:22:21.8836544+08:00","Action":"output","Package":"github.com/Wei-Shaw/sub2api/internal/service","Output":"PASS\n","OutputType":"frame"} {"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"} {"Time":"2026-09-12T23:22:21.889004+08:00","Action":"pass","Package":"github.com/Wei-Shaw/sub2api/internal/service","Elapsed":10.15}