Files
fission-console/console/internal/runtime/nodejs_test.go
T
2026-04-27 07:36:06 +03:00

50 lines
1.4 KiB
Go

package runtime
import (
"archive/zip"
"bytes"
"io"
"strings"
"testing"
)
func TestBuildJSDeployZipExportsMainAndHandler(t *testing.T) {
zipBytes, err := BuildJSDeployZip(`module.exports = async function () { return { status: 200, body: "ok" }; }`)
if err != nil {
t.Fatalf("BuildJSDeployZip() error = %v", err)
}
zr, err := zip.NewReader(bytes.NewReader(zipBytes), int64(len(zipBytes)))
if err != nil {
t.Fatalf("zip.NewReader() error = %v", err)
}
files := map[string]string{}
for _, file := range zr.File {
rc, openErr := file.Open()
if openErr != nil {
t.Fatalf("open %q: %v", file.Name, openErr)
}
content, readErr := io.ReadAll(rc)
_ = rc.Close()
if readErr != nil {
t.Fatalf("read %q: %v", file.Name, readErr)
}
files[file.Name] = string(content)
}
if files["package.json"] != `{"type":"module"}` {
t.Fatalf("package.json = %q, want ESM marker", files["package.json"])
}
mainJS := files["main.js"]
if !strings.Contains(mainJS, `export { __invoke as main, __invoke as handler };`) {
t.Fatalf("main.js does not export both main and handler: %s", mainJS)
}
if !strings.Contains(mainJS, `export default __invoke;`) {
t.Fatalf("main.js does not export default invoke: %s", mainJS)
}
if !strings.Contains(mainJS, `_fn.default || _fn.handler || _fn.main`) {
t.Fatalf("main.js lost user export resolution: %s", mainJS)
}
}