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
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("桶不同必须判为分歧——随手挑一个会把文件传进别人的桶里")
|
|
}
|
|
}
|
|
|