mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-09 01:50:30 +00:00
38 lines
1.3 KiB
Go
38 lines
1.3 KiB
Go
package download
|
|
|
|
import (
|
|
"github.com/GopeedLab/gopeed/pkg/base"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestExtensionUnnamedResource(t *testing.T) {
|
|
d, cleanup, err := newTestExtensionEngineDownloader()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer cleanup()
|
|
dir := t.TempDir()
|
|
manifest := `{"name":"unnamed","title":"Unnamed test","author":"test","version":"1.0.0","scripts":[{"event":"onResolve","match":{"urls":["https://example.com/unnamed"]},"entry":"index.js"}]}`
|
|
script := `gopeed.events.onResolve(async(ctx)=>{ctx.res={range:false,files:[{name:'video.mp4',req:{url:await gopeed.runtime.blob.createObjectURL(()=>new ReadableStream({start(c){c.enqueue(new Uint8Array([1,2,3]));c.close();}}))}}]};});`
|
|
for name, data := range map[string]string{"manifest.json": manifest, "index.js": script} {
|
|
if err = os.WriteFile(filepath.Join(dir, name), []byte(data), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
if _, err = d.InstallExtensionByFolder(dir, true); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
res, err := d.Resolve(&base.Request{URL: "https://example.com/unnamed"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if res.Res.Name != "" || len(res.Res.Files) != 1 || res.Res.Files[0].Name != "video.mp4" {
|
|
t.Fatalf("unexpected resource: %+v", res.Res)
|
|
}
|
|
if !d.blob.IsURL(res.Res.Files[0].Req.URL) {
|
|
t.Fatal("extension result was discarded")
|
|
}
|
|
}
|