78 lines
1.8 KiB
Go
78 lines
1.8 KiB
Go
package server
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestJobManagerCreateGetUpdateCancel(t *testing.T) {
|
|
manager := NewJobManager()
|
|
|
|
req := CollectRequest{
|
|
Host: "bmc01.local",
|
|
Protocol: "redfish",
|
|
Port: 443,
|
|
Username: "admin",
|
|
AuthType: "password",
|
|
Password: "top-secret",
|
|
TLSMode: "strict",
|
|
}
|
|
|
|
job := manager.CreateJob(req)
|
|
if job == nil {
|
|
t.Fatalf("expected created job")
|
|
}
|
|
if job.Status != CollectStatusQueued {
|
|
t.Fatalf("expected queued status, got %q", job.Status)
|
|
}
|
|
if job.Progress != 0 {
|
|
t.Fatalf("expected progress 0, got %d", job.Progress)
|
|
}
|
|
if job.RequestMeta.Host != req.Host {
|
|
t.Fatalf("expected host in request meta")
|
|
}
|
|
if strings.Contains(strings.Join(job.Logs, " "), req.Password) {
|
|
t.Fatalf("password leaked in logs")
|
|
}
|
|
|
|
got, ok := manager.GetJob(job.ID)
|
|
if !ok {
|
|
t.Fatalf("expected job to exist")
|
|
}
|
|
if got.ID != job.ID {
|
|
t.Fatalf("wrong job id")
|
|
}
|
|
|
|
updated, ok := manager.UpdateJobStatus(job.ID, CollectStatusRunning, 42, "")
|
|
if !ok {
|
|
t.Fatalf("expected update to succeed")
|
|
}
|
|
if updated.Status != CollectStatusRunning || updated.Progress != 42 {
|
|
t.Fatalf("unexpected update snapshot: %+v", updated)
|
|
}
|
|
|
|
withLog, ok := manager.AppendJobLog(job.ID, "Сбор инвентаря...")
|
|
if !ok {
|
|
t.Fatalf("expected append to succeed")
|
|
}
|
|
if len(withLog.Logs) < 2 {
|
|
t.Fatalf("expected additional log, got %v", withLog.Logs)
|
|
}
|
|
|
|
canceled, ok := manager.CancelJob(job.ID)
|
|
if !ok {
|
|
t.Fatalf("expected cancel to succeed")
|
|
}
|
|
if canceled.Status != CollectStatusCanceled {
|
|
t.Fatalf("expected canceled status, got %q", canceled.Status)
|
|
}
|
|
|
|
canceledAgain, ok := manager.CancelJob(job.ID)
|
|
if !ok {
|
|
t.Fatalf("expected repeated cancel to succeed")
|
|
}
|
|
if canceledAgain.Status != CollectStatusCanceled {
|
|
t.Fatalf("expected canceled status after repeated cancel")
|
|
}
|
|
}
|