From 84231927199cfd11ef4943556d838c8bd479bc53 Mon Sep 17 00:00:00 2001 From: opsx Date: Sun, 1 Nov 2026 04:08:12 +0800 Subject: [PATCH] =?UTF-8?q?test(license):=20=E9=80=80=E5=87=BA=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E9=99=8D=E7=BA=A7=E8=AF=AD=E4=B9=89=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E2=80=94=E2=80=94=E8=BF=9C=E7=AB=AF=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E6=B8=85=E6=9C=AC=E6=9C=BA+=E6=A0=87=E8=AE=B0?= =?UTF-8?q?=E8=80=8C=E9=9D=9E=E6=8A=A5=E9=94=99=E4=BF=9D=E7=95=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/services/license_deactivate_test.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/backend/services/license_deactivate_test.go b/backend/services/license_deactivate_test.go index 1ad62e9..76f7dfe 100644 --- a/backend/services/license_deactivate_test.go +++ b/backend/services/license_deactivate_test.go @@ -79,6 +79,8 @@ func TestDeactivateLicenseOfflineLocalOnly(t *testing.T) { } } +// 远端解绑失败时不再报错卡死(用户无法自愈),降级为清本机 + offlineLocalOnly 标记; +// 授权服务不返回 activation_token 的现实下,"保留本地等重试"等于永远解不了绑。 func TestDeactivateLicenseOnlineKeepsStateOnRemoteFailure(t *testing.T) { withTempDB(t) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -101,16 +103,15 @@ func TestDeactivateLicenseOnlineKeepsStateOnRemoteFailure(t *testing.T) { db.RequestSave() db.Unlock() - _, err := DeactivateLicense() - if err == nil { - t.Fatal("expected remote failure") + res, err := DeactivateLicense() + if err != nil { + t.Fatalf("远端失败应降级成功而非报错: %v", err) } - if !strings.Contains(err.Error(), "远端解绑失败") { - t.Fatalf("unexpected err: %v", err) + if !res.OfflineLocalOnly { + t.Fatal("远端失败降级时应标记 OfflineLocalOnly") } - stored := StoredLicense() - if stored == nil || stored.LicenseKey != "LIC-KEEP-ON-FAIL" || stored.Plan != "pro" { - t.Fatalf("must keep local state on failure: %+v", stored) + if StoredLicense() != nil { + t.Fatal("降级后本机授权应已清除") } }