add gitlab ci
This commit is contained in:
@@ -110,6 +110,59 @@ func TestOcrJobFailsWhenPhysicalFileMissing(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestOcrJobPersistsTextOnResourceAndGrantsRead(t *testing.T) {
|
||||
uploadDir := t.TempDir()
|
||||
o, ownerID, deviceID, _ := newTestOcr(t, uploadDir, stubEngine{text: " extrait du scan "})
|
||||
granteeID := mustCreateUser(t, o.Repository, "ocr-grantee")
|
||||
outsiderID := mustCreateUser(t, o.Repository, "ocr-outsider")
|
||||
mustRegisterDevice(t, o.Repository, shareTestDeviceID)
|
||||
|
||||
fileID := repository.NewID()
|
||||
insertOcrFile(t, o, ownerID, fileID)
|
||||
if err := os.MkdirAll(filepath.Join(uploadDir, ownerID), 0o755); err != nil {
|
||||
t.Fatalf("mkdir: %v", err)
|
||||
}
|
||||
if err := os.WriteFile(filepath.Join(uploadDir, ownerID, fileID+".png"), []byte("img"), 0o644); err != nil {
|
||||
t.Fatalf("write: %v", err)
|
||||
}
|
||||
|
||||
job, err := o.Create(ownerID, deviceID, fileID)
|
||||
if err != nil {
|
||||
t.Fatalf("create: %v", err)
|
||||
}
|
||||
row := waitTillTerminal(t, o, deviceID, job.ID)
|
||||
if row.Status != "done" {
|
||||
t.Fatalf("job %s: attendu done", row.Status)
|
||||
}
|
||||
|
||||
// Le texte (trimé) a atterri sur la ressource, lisible par l'owner.
|
||||
s := NewResources(o.Repository, uploadDir, 100)
|
||||
owned, err := s.GetFileOcr(ownerID, fileID)
|
||||
if err != nil {
|
||||
t.Fatalf("get ocr owner: %v", err)
|
||||
}
|
||||
if owned.Text != "extrait du scan" {
|
||||
t.Errorf("ocr_text = %q, attendu %q", owned.Text, "extrait du scan")
|
||||
}
|
||||
|
||||
// ... et par un grantee viewer+ (docs §5 : partage rend le texte lisible).
|
||||
if err := o.Repository.Shares.Upsert(fileID, granteeID, "viewer", false, nil, ownerID); err != nil {
|
||||
t.Fatalf("share: %v", err)
|
||||
}
|
||||
shared, err := s.GetFileOcr(granteeID, fileID)
|
||||
if err != nil {
|
||||
t.Fatalf("get ocr grantee: %v", err)
|
||||
}
|
||||
if shared.Text != "extrait du scan" {
|
||||
t.Errorf("ocr_text grantee = %q, attendu %q", shared.Text, "extrait du scan")
|
||||
}
|
||||
|
||||
// Un tiers n'y a pas accès.
|
||||
if _, err := s.GetFileOcr(outsiderID, fileID); !errors.Is(err, repository.ErrNotFound) {
|
||||
t.Errorf("tiers : attendu ErrNotFound, got %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestOcrJobFailsOnEngineError(t *testing.T) {
|
||||
uploadDir := t.TempDir()
|
||||
o, userID, deviceID, _ := newTestOcr(t, uploadDir, stubEngine{err: errors.New("tesseract boom")})
|
||||
|
||||
Reference in New Issue
Block a user