mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-08 09:30:27 +00:00
263 lines
6.8 KiB
Go
263 lines
6.8 KiB
Go
package download
|
|
|
|
import (
|
|
"github.com/GopeedLab/gopeed/internal/logger"
|
|
"github.com/GopeedLab/gopeed/pkg/base"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestDownloader_InstallExtensionByFolder(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
if _, err := downloader.InstallExtensionByFolder("./testdata/extensions/basic", false); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
rr, err := downloader.Resolve(&base.Request{
|
|
URL: "https://github.com/test",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(rr.Res.Files) == 1 {
|
|
t.Fatal("resolve error")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_InstallExtensionByFolderDevMode(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
if _, err := downloader.InstallExtensionByFolder("./testdata/extensions/basic", true); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
rr, err := downloader.Resolve(&base.Request{
|
|
URL: "https://github.com/test",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(rr.Res.Files) == 1 {
|
|
t.Fatal("resolve error")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_InstallExtensionByGit(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
if _, err := downloader.InstallExtensionByGit("https://github.com/GopeedLab/gopeed-extension-samples#github-release-sample"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
rr, err := downloader.Resolve(&base.Request{
|
|
URL: "https://github.com/GopeedLab/gopeed/releases",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(rr.Res.Files) == 1 {
|
|
t.Fatal("resolve error")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_InstallExtensionByGitSimple(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
if _, err := downloader.InstallExtensionByGit("github.com/GopeedLab/gopeed-extension-samples#github-release-sample"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
rr, err := downloader.Resolve(&base.Request{
|
|
URL: "https://github.com/GopeedLab/gopeed/releases",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(rr.Res.Files) == 1 {
|
|
t.Fatal("resolve error")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_InstallExtensionByGitFull(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
if _, err := downloader.InstallExtensionByGit("https://github.com/GopeedLab/gopeed-extension-samples.git#github-release-sample"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
rr, err := downloader.Resolve(&base.Request{
|
|
URL: "https://github.com/GopeedLab/gopeed/releases",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(rr.Res.Files) == 1 {
|
|
t.Fatal("resolve error")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_UpgradeExtension(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
installedExt, err := downloader.InstallExtensionByFolder("./testdata/extensions/update", false)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
extensions := downloader.GetExtensions()
|
|
if len(extensions) == 0 {
|
|
t.Fatal("extension not installed")
|
|
}
|
|
oldVersion := installedExt.Version
|
|
// fetch new version from git
|
|
newVersion, err := downloader.UpgradeCheckExtension(installedExt.Identity)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if newVersion == "" {
|
|
t.Fatal("new version not found")
|
|
}
|
|
// update extension
|
|
if err = downloader.UpgradeExtension(installedExt.Identity); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
upgradeExt := downloader.getExtension(installedExt.Identity)
|
|
if upgradeExt.Version == oldVersion {
|
|
t.Fatal("extension update fail")
|
|
}
|
|
|
|
rr, err := downloader.Resolve(&base.Request{
|
|
URL: "https://github.com/GopeedLab/gopeed/releases",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(rr.Res.Files) == 1 {
|
|
t.Fatal("resolve error")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_Extension_Settings(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
if _, err := downloader.InstallExtensionByFolder("./testdata/extensions/settings_empty", false); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
rr, err := downloader.Resolve(&base.Request{
|
|
URL: "https://github.com/test",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(rr.Res.Files) == 1 {
|
|
t.Fatal("settings parse error")
|
|
}
|
|
})
|
|
|
|
setupDownloader(func(downloader *Downloader) {
|
|
installedExt, err := downloader.InstallExtensionByFolder("./testdata/extensions/settings_all", false)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
downloader.UpdateExtensionSettings(installedExt.Identity, map[string]any{
|
|
"stringValued": "valued",
|
|
"numberValued": 1.1,
|
|
"booleanValued": true,
|
|
})
|
|
rr, err := downloader.Resolve(&base.Request{
|
|
URL: "https://github.com/test",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(rr.Res.Files) == 1 {
|
|
t.Fatal("settings parse error")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_ExtensionStorage(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
if _, err := downloader.InstallExtensionByFolder("./testdata/extensions/storage", false); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
rr, err := downloader.Resolve(&base.Request{
|
|
URL: "https://github.com/test",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(rr.Res.Files) == 1 {
|
|
t.Fatal("resolve error")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_SwitchExtension(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
installedExt, err := downloader.InstallExtensionByFolder("./testdata/extensions/basic", false)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if installedExt.Disabled == true {
|
|
t.Fatal("extension disabled")
|
|
}
|
|
if err = downloader.SwitchExtension(installedExt.Identity, false); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if installedExt.Disabled == false {
|
|
t.Fatal("extension enabled")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_DeleteExtension(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
installedExt, err := downloader.InstallExtensionByFolder("./testdata/extensions/settings_all", false)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
extensions := downloader.GetExtensions()
|
|
if err := downloader.DeleteExtension(installedExt.Identity); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
extensions = downloader.GetExtensions()
|
|
if len(extensions) != 0 {
|
|
t.Fatal("extension delete fail")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_Extension_OnResolve(t *testing.T) {
|
|
setupDownloader(func(downloader *Downloader) {
|
|
installedExt, err := downloader.InstallExtensionByFolder("./testdata/extensions/settings_all", false)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := downloader.DeleteExtension(installedExt.Identity); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
extensions := downloader.GetExtensions()
|
|
if len(extensions) != 0 {
|
|
t.Fatal("extension delete fail")
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestDownloader_Extension_Logger(t *testing.T) {
|
|
logger := logger.NewLogger(false, "")
|
|
il := newInstanceLogger(&Extension{
|
|
Name: "test",
|
|
}, logger)
|
|
il.Debug("msg1", "msg2")
|
|
il.Info("msg1", "msg2")
|
|
il.Warn("msg1", "msg2")
|
|
il.Error("msg1", "msg2")
|
|
}
|
|
|
|
func setupDownloader(fn func(downloader *Downloader)) {
|
|
defaultDownloader.Setup()
|
|
defaultDownloader.cfg.StorageDir = ".test_storage"
|
|
defaultDownloader.cfg.DownloadDir = ".test_download"
|
|
defer func() {
|
|
defaultDownloader.Clear()
|
|
os.RemoveAll(defaultDownloader.cfg.StorageDir)
|
|
os.RemoveAll(defaultDownloader.cfg.DownloadDir)
|
|
}()
|
|
fn(defaultDownloader)
|
|
}
|