46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
package web
|
|
|
|
import (
|
|
"3588AdminBackend/internal/config"
|
|
"3588AdminBackend/internal/models"
|
|
"3588AdminBackend/internal/service"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestUI_ActionDevicesBatchAction_RedirectsToTask(t *testing.T) {
|
|
cfg := &config.Config{Concurrency: 1, OfflineAfterMs: 1000000}
|
|
reg := service.NewRegistryService(cfg, nil)
|
|
reg.UpdateDevice(&models.Device{DeviceID: "dev1", IP: "127.0.0.1", AgentPort: 9100, Online: true})
|
|
reg.UpdateDevice(&models.Device{DeviceID: "dev2", IP: "127.0.0.1", AgentPort: 9100, Online: true})
|
|
tasks := service.NewTaskService(cfg, nil, reg)
|
|
|
|
ui, err := NewUI(nil, reg, nil, tasks, nil)
|
|
if err != nil {
|
|
t.Fatalf("NewUI: %v", err)
|
|
}
|
|
|
|
form := url.Values{}
|
|
form.Set("action", "media_start")
|
|
form.Add("device_id", "dev1")
|
|
form.Add("device_id", "dev2")
|
|
form.Set("config", "cam1")
|
|
|
|
req := httptest.NewRequest(http.MethodPost, "/ui/devices/batch-action", strings.NewReader(form.Encode()))
|
|
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
|
rr := httptest.NewRecorder()
|
|
|
|
ui.actionDevicesBatchAction(rr, req)
|
|
|
|
if rr.Code != http.StatusFound {
|
|
t.Fatalf("expected 302, got %d: %s", rr.Code, rr.Body.String())
|
|
}
|
|
loc := rr.Header().Get("Location")
|
|
if !strings.HasPrefix(loc, "/ui/tasks/") {
|
|
t.Fatalf("expected redirect to /ui/tasks/*, got %q", loc)
|
|
}
|
|
}
|