发布 0.1.0:通知渠道、告警规则、令牌版本与安全加固
This commit is contained in:
@@ -36,3 +36,53 @@ func TestClassifyAccount(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// TestParseAccountCapabilities 用控制台同源接口的真实响应样例驱动。
|
||||
func TestParseAccountCapabilities(t *testing.T) {
|
||||
cases := []struct {
|
||||
name string
|
||||
body string
|
||||
wantSusp bool
|
||||
wantStatus string
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "已终止租户(顶层与 accountInfo 双 suspended)",
|
||||
body: `{"compartmentId":"ocid1.tenancy.oc1..x","capabilities":{"suspended":true,` +
|
||||
`"accountInfo":{"freeTierEnabled":false,"freeTierOnly":false,"promotionStatus":"none",` +
|
||||
`"suspended":true,"programType":"default","limitsProvisioned":true,"intentToPay":false,` +
|
||||
`"hasSaasSubscription":true,"accountStatus":"terminated","accountFlags":0,"deletable":true,` +
|
||||
`"limitIncrease":false,"orgProperties":"0"}}}`,
|
||||
wantSusp: true,
|
||||
wantStatus: "terminated",
|
||||
},
|
||||
{
|
||||
name: "正常租户",
|
||||
body: `{"capabilities":{"suspended":false,"accountInfo":{"accountStatus":"active","freeTierEnabled":true}}}`,
|
||||
wantSusp: false, wantStatus: "active",
|
||||
},
|
||||
{
|
||||
name: "仅 accountInfo 标记 suspended 也算暂停",
|
||||
body: `{"capabilities":{"suspended":false,"accountInfo":{"suspended":true}}}`,
|
||||
wantSusp: true,
|
||||
},
|
||||
{name: "非 JSON 报错", body: `<html>`, wantErr: true},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
got, err := parseAccountCapabilities([]byte(tc.body))
|
||||
if tc.wantErr {
|
||||
if err == nil {
|
||||
t.Fatal("expected error")
|
||||
}
|
||||
return
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatalf("parse: %v", err)
|
||||
}
|
||||
if got.Suspended != tc.wantSusp || got.AccountStatus != tc.wantStatus {
|
||||
t.Fatalf("got %+v, want suspended=%v status=%q", got, tc.wantSusp, tc.wantStatus)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user