You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

34 lines
1.4 KiB

package comm
import "testing"
// 2026-09-14 作用域归一把 svc_config 全部分配到各应用、全局行(app_name='')不再产生之后,
// 后台传固件这条**不带 X-App-Id** 的路径就失去了兜底,一上传就报「未配置阿里云 OSS」,
// 而配置明明填得好好的。兜底的判据是「所有启用的配置是否指向同一个桶」。
func ossRow(app, ep, bucket, ak string) *ThirdSvcConfig {
return &ThirdSvcConfig{
AppName: app,
Id: "storage_aliyun_oss",
Provider: AliyunOSSProvider,
Enable: true,
Fields: []SvcField{
{Key: "endpoint", DefValue: ep},
{Key: "bucket", DefValue: bucket},
{Key: "access_key_id", DefValue: ak},
},
}
}
// fingerprint 的行为通过这组用例间接固定:同桶可兜底、异桶必须报错。
func TestOSSFingerprintAgreement(t *testing.T) {
a := ossRow("EAIMAR", "https://oss-cn-shanghai.aliyuncs.com", "ymaioss", "AK1")
b := ossRow("deepGlass", "https://oss-cn-shanghai.aliyuncs.com", "ymaioss", "AK1")
c := ossRow("other", "https://oss-cn-shanghai.aliyuncs.com", "另一个桶", "AK1")
if ossFingerprint(a, "") != ossFingerprint(b, "") {
t.Fatal("同一套 endpoint/bucket/ak 必须判为一致,否则线上两个应用配同一个桶也会被判成分歧")
}
if ossFingerprint(a, "") == ossFingerprint(c, "") {
t.Fatal("桶不同必须判为分歧——随手挑一个会把文件传进别人的桶里")
}
}