package adminassets import ( "os" "path/filepath" "strings" "testing" ) func TestValidateDiskChecksDynamicImportsAndEveryOutput(t *testing.T) { root := t.TempDir() if err := os.MkdirAll(filepath.Join(root, "assets"), 0o755); err != nil { t.Fatal(err) } writeAssetTestFile(t, root, "index.html", ``) writeAssetTestFile(t, root, "admin-build.json", `{"buildId":"build-1"}`) writeAssetTestFile(t, root, "asset-manifest.json", `{ "src/main.ts":{"file":"assets/index-12345678.js","dynamicImports":["src/views/FeedbacksView.vue"]}, "src/views/FeedbacksView.vue":{"file":"assets/FeedbacksView-12345678.js","css":["assets/FeedbacksView-12345678.css"]} }`) writeAssetTestFile(t, root, "assets/index-12345678.js", "import('./FeedbacksView-12345678.js')") writeAssetTestFile(t, root, "assets/FeedbacksView-12345678.js", "export default {}") writeAssetTestFile(t, root, "assets/FeedbacksView-12345678.css", ".page{}") status := ValidateDisk(root, "build-1") if !status.Ready || status.ManifestEntries != 2 { t.Fatalf("valid build rejected: %#v", status) } if err := os.Remove(filepath.Join(root, "assets", "FeedbacksView-12345678.js")); err != nil { t.Fatal(err) } status = ValidateDisk(root, "build-1") if status.Ready || !strings.Contains(status.ValidationError, "FeedbacksView-12345678.js") { t.Fatalf("missing lazy chunk not diagnosed: %#v", status) } } func TestValidateDiskRejectsBuildIDMismatch(t *testing.T) { root := t.TempDir() if err := os.MkdirAll(filepath.Join(root, "assets"), 0o755); err != nil { t.Fatal(err) } writeAssetTestFile(t, root, "index.html", "
") writeAssetTestFile(t, root, "admin-build.json", `{"buildId":"old"}`) writeAssetTestFile(t, root, "asset-manifest.json", `{"src/main.ts":{"file":"assets/index-12345678.js"}}`) writeAssetTestFile(t, root, "assets/index-12345678.js", "export{}") status := ValidateDisk(root, "new") if status.Ready || !strings.Contains(status.ValidationError, "does not match") { t.Fatalf("build mismatch not rejected: %#v", status) } } func writeAssetTestFile(t *testing.T, root, name, value string) { t.Helper() path := filepath.Join(root, filepath.FromSlash(name)) if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { t.Fatal(err) } if err := os.WriteFile(path, []byte(value), 0o644); err != nil { t.Fatal(err) } }