59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http/httptest"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
"testing"
|
|
|
|
"github.com/Eriyc/rules_wails/examples/wails3_init_updater/mockupdateserver"
|
|
"github.com/Eriyc/rules_wails/pkg/wails3kit/updates"
|
|
updateswails "github.com/Eriyc/rules_wails/pkg/wails3kit/updates/wails"
|
|
)
|
|
|
|
func TestNewControllerAndService(t *testing.T) {
|
|
server := httptest.NewServer(mockupdateserver.NewHandler())
|
|
defer server.Close()
|
|
|
|
t.Setenv("UPDATER_MANIFEST_URL", server.URL+"/manifest.json")
|
|
t.Setenv("UPDATER_TOKEN", mockupdateserver.BearerToken)
|
|
|
|
executablePath := filepath.Join(t.TempDir(), entryPointName())
|
|
if err := os.WriteFile(executablePath, []byte("#!/bin/sh\nexit 0\n"), 0o755); err != nil {
|
|
t.Fatalf("WriteFile returned error: %v", err)
|
|
}
|
|
|
|
controller, err := newController(testDescriptor(t, executablePath))
|
|
if err != nil {
|
|
t.Fatalf("newController returned error: %v", err)
|
|
}
|
|
|
|
service := NewUpdateService(updateswails.NewService(updateswails.Options{
|
|
Controller: controller,
|
|
}))
|
|
if service.Snapshot().CurrentVersion != currentVersion {
|
|
t.Fatalf("unexpected current version: %s", service.Snapshot().CurrentVersion)
|
|
}
|
|
}
|
|
|
|
func testDescriptor(t *testing.T, executablePath string) updates.AppDescriptor {
|
|
t.Helper()
|
|
return updates.AppDescriptor{
|
|
ProductID: productID,
|
|
CurrentVersion: currentVersion,
|
|
Channel: updates.ChannelStable,
|
|
OS: runtime.GOOS,
|
|
Arch: runtime.GOARCH,
|
|
ExecutablePath: executablePath,
|
|
WorkingDirectory: t.TempDir(),
|
|
}
|
|
}
|
|
|
|
func entryPointName() string {
|
|
if runtime.GOOS == "windows" {
|
|
return "updater-example.exe"
|
|
}
|
|
return "updater-example"
|
|
}
|