refactor: use nginx -s reload instead of systemd
- doc: add comment
This commit is contained in:
@@ -12,6 +12,8 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
// TestOpenAndExtractNativeBackend 验证正常流程:打开合法的原生后端更新包后,
|
||||
// 元数据与身份正确,且 ExtractArtifact 提取出的内容与原始 JAR 完全一致。
|
||||
func TestOpenAndExtractNativeBackend(t *testing.T) {
|
||||
jar := []byte("native backend JAR")
|
||||
packagePath := writeBackendPackage(t, jar, nil)
|
||||
@@ -38,6 +40,8 @@ func TestOpenAndExtractNativeBackend(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestOpenRejectsUnknownManifestField 验证清单中出现大小写错误的未知字段时,
|
||||
// OpenBackendNative 会返回包含该字段名的错误。
|
||||
func TestOpenRejectsUnknownManifestField(t *testing.T) {
|
||||
jar := []byte("native backend JAR")
|
||||
packagePath := writeBackendPackage(t, jar, func(manifest map[string]any) {
|
||||
@@ -49,6 +53,8 @@ func TestOpenRejectsUnknownManifestField(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestOpenRejectsMissingDeclaredArtifact 验证清单声明的 fileName 在 ZIP 中缺失时,
|
||||
// OpenBackendNative 会返回包含该文件名的错误。
|
||||
func TestOpenRejectsMissingDeclaredArtifact(t *testing.T) {
|
||||
jar := []byte("native backend JAR")
|
||||
packagePath := writePackageEntries(t, map[string][]byte{
|
||||
@@ -63,6 +69,8 @@ func TestOpenRejectsMissingDeclaredArtifact(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestExtractRejectsArtifactDigestMismatch 验证清单中的 sha256 与实际工件不符时,
|
||||
// ExtractArtifact 返回摘要不匹配错误,且不会在目标路径留下任何已发布文件。
|
||||
func TestExtractRejectsArtifactDigestMismatch(t *testing.T) {
|
||||
jar := []byte("native backend JAR")
|
||||
packagePath := writeBackendPackage(t, jar, func(manifest map[string]any) {
|
||||
@@ -83,6 +91,8 @@ func TestExtractRejectsArtifactDigestMismatch(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestOpenRejectsUnsafeAndDuplicateEntries 验证 OpenBackendNative 会拒绝包含
|
||||
// 不安全路径条目(如 "../" 前缀)的更新包,以及包含重复 ZIP 条目的更新包。
|
||||
func TestOpenRejectsUnsafeAndDuplicateEntries(t *testing.T) {
|
||||
jar := []byte("native backend JAR")
|
||||
manifest := manifestJSON(t, jar, nil)
|
||||
@@ -126,6 +136,8 @@ func TestOpenRejectsUnsafeAndDuplicateEntries(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
// writeBackendPackage 构造一个包含清单与 backend.jar 的合法更新包,
|
||||
// 返回其临时文件路径。modify 可选,用于在写入前改写清单内容。
|
||||
func writeBackendPackage(t *testing.T, jar []byte, modify func(map[string]any)) string {
|
||||
t.Helper()
|
||||
return writePackageEntries(t, map[string][]byte{
|
||||
@@ -134,6 +146,8 @@ func writeBackendPackage(t *testing.T, jar []byte, modify func(map[string]any))
|
||||
})
|
||||
}
|
||||
|
||||
// manifestJSON 构造一份以 jar 摘要为 sha256 的完整清单 JSON,返回序列化字节。
|
||||
// modify 可选,用于在序列化前改写清单内容。
|
||||
func manifestJSON(t *testing.T, jar []byte, modify func(map[string]any)) []byte {
|
||||
t.Helper()
|
||||
digest := sha256.Sum256(jar)
|
||||
@@ -168,6 +182,8 @@ func manifestJSON(t *testing.T, jar []byte, modify func(map[string]any)) []byte
|
||||
return content
|
||||
}
|
||||
|
||||
// writePackageEntries 将给定名字到内容的映射写入一个临时 ZIP 文件,
|
||||
// 返回该文件路径。映射遍历顺序不影响结果。
|
||||
func writePackageEntries(t *testing.T, entries map[string][]byte) string {
|
||||
t.Helper()
|
||||
packagePath := filepath.Join(t.TempDir(), "package.zip")
|
||||
|
||||
Reference in New Issue
Block a user