65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
package services
|
|
|
|
import (
|
|
"image"
|
|
"image/png"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestScanner_EndToEnd_NoQRCode(t *testing.T) {
|
|
dir := t.TempDir()
|
|
imgPath := filepath.Join(dir, "blank.png")
|
|
|
|
f, err := os.Create(imgPath)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
img := image.NewRGBA(image.Rect(0, 0, 120, 120))
|
|
if err := png.Encode(f, img); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_ = f.Close()
|
|
|
|
store := NewTaskStore()
|
|
scanner := NewScanner(store, 0)
|
|
|
|
task := &Task{
|
|
ID: "t1",
|
|
TempDir: dir,
|
|
CreatedAt: time.Now(),
|
|
UpdatedAt: time.Now(),
|
|
Status: TaskUploaded,
|
|
Files: []TaskFile{
|
|
{Index: 1, RelPath: "blank.png", AbsPath: imgPath},
|
|
},
|
|
Concurrency: 1,
|
|
TimeoutS: 5,
|
|
}
|
|
store.Put(task)
|
|
|
|
if err := scanner.Start(task); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
deadline := time.Now().Add(5 * time.Second)
|
|
for time.Now().Before(deadline) {
|
|
cur, _ := store.Get("t1")
|
|
if cur.Status == TaskCompleted || cur.Status == TaskCanceled || cur.Status == TaskFailed {
|
|
results := cur.Results()
|
|
if len(results) != 1 {
|
|
t.Fatalf("expected 1 result, got %d", len(results))
|
|
}
|
|
if results[1].Success {
|
|
t.Fatalf("expected failure")
|
|
}
|
|
return
|
|
}
|
|
time.Sleep(50 * time.Millisecond)
|
|
}
|
|
|
|
t.Fatalf("timeout waiting for task completion")
|
|
}
|