ultisuite-backend/internal/migration/drive_shared_test.go
R3D347HR4Y 1ffd0817d8
Some checks are pending
CI / Go tests (push) Waiting to run
CI / Integration tests (push) Waiting to run
CI / DB migrations (push) Waiting to run
feat(migration): enhance migration API with roster and audit export features
- Added endpoints for listing and importing migration rosters.
- Introduced audit export functionality for migration jobs in CSV and NDJSON formats.
- Implemented tenant mismatch validation for Microsoft migration claims.
- Enhanced error handling for email claiming and migration processes.
- Added integration tests for roster import and claim workflows.
2026-06-13 13:11:30 +02:00

117 lines
3.7 KiB
Go

package migration
import (
"context"
"net/http"
"strings"
"testing"
)
func TestSharedDriveItemDedup(t *testing.T) {
store := NewSharedDriveItemStoreMemory()
ctx := context.Background()
if store.Has("drive-1", "file-1") {
t.Fatal("expected miss before mark")
}
if err := store.MarkImported(ctx, "drive-1", "file-1", "Shared Drives/Team/doc.pdf", "job-1"); err != nil {
t.Fatal(err)
}
if !store.Has("drive-1", "file-1") {
t.Fatal("expected hit after mark")
}
if store.Has("drive-1", "file-2") {
t.Fatal("different file should not match")
}
if store.Has("drive-2", "file-1") {
t.Fatal("different drive should not match")
}
}
func TestDriveImporterSharedDedup(t *testing.T) {
d := &DriveImporter{sharedDedup: NewSharedDriveItemStoreMemory()}
ctx := context.Background()
if err := d.sharedDedup.MarkImported(ctx, "sd-1", "f-1", "path", "job-a"); err != nil {
t.Fatal(err)
}
if !d.alreadyImportedShared("sd-1", "f-1", true) {
t.Fatal("expected shared dedup hit")
}
if d.alreadyImportedShared("sd-1", "f-2", true) {
t.Fatal("expected miss for other file")
}
if d.alreadyImportedShared("", "f-1", false) {
t.Fatal("personal drive should not dedup at project level")
}
}
func TestBootstrapSharedDrivesDiscovery(t *testing.T) {
client := mockGoogleHTTPClient(t, func(w http.ResponseWriter, r *http.Request) {
if strings.Contains(r.URL.Path, "/drive/v3/drives") {
_, _ = w.Write([]byte(`{"drives":[{"id":"sd-team","name":"Team Drive"}]}`))
return
}
http.NotFound(w, r)
})
d := NewDriveImporter(nil, nil).WithHTTPClient(client).WithProject("proj-1", SharedDriveModeAuto, NewSharedDriveItemStoreMemory())
job := &Job{ProjectID: "proj-1", UserID: "user-1", CursorJSON: map[string]any{}}
if err := d.bootstrapSharedDrives(context.Background(), job, "token"); err != nil {
t.Fatalf("bootstrap: %v", err)
}
}
func TestGoogleDriveListParams(t *testing.T) {
myDrive := googleDriveListParams(driveFolderRef{ID: "root"})
if !strings.Contains(myDrive, "supportsAllDrives=true") {
t.Fatalf("my drive params: %q", myDrive)
}
if strings.Contains(myDrive, "corpora=drive") {
t.Fatalf("my drive should not use corpora=drive: %q", myDrive)
}
shared := googleDriveListParams(driveFolderRef{ID: "sd-1", DriveID: "sd-1", Shared: true})
if !strings.Contains(shared, "corpora=drive") || !strings.Contains(shared, "driveId=sd-1") {
t.Fatalf("shared drive params: %q", shared)
}
}
func TestGoogleDriveDownloadURL(t *testing.T) {
personal := googleDriveDownloadURL("file-1", false)
if strings.Contains(personal, "supportsAllDrives") {
t.Fatalf("personal download: %q", personal)
}
shared := googleDriveDownloadURL("file-1", true)
if !strings.Contains(shared, "supportsAllDrives=true") {
t.Fatalf("shared download: %q", shared)
}
}
func TestMergeSharedDriveFolders(t *testing.T) {
d := NewDriveImporter(nil, nil)
job := &Job{CursorJSON: map[string]any{}}
if err := d.mergeSharedDriveFolders(context.Background(), job, "google"); err != nil {
t.Fatal(err)
}
queue := readDriveFolderQueue(job.CursorJSON, "google")
if len(queue) != 1 || queue[0].ID != "root" {
t.Fatalf("without db only root queue: %#v", queue)
}
manualQueue := readDriveFolderQueue(map[string]any{}, "google")
manualQueue = enqueueDriveFolder(manualQueue, driveFolderRef{
ID: "sd-1", Path: "Shared Drives/Finance", DriveID: "sd-1", Shared: true,
})
if len(manualQueue) != 2 || !manualQueue[1].Shared {
t.Fatalf("manual enqueue: %#v", manualQueue)
}
}
func TestNormalizeSharedDriveMode(t *testing.T) {
if got := NormalizeSharedDriveMode("manual"); got != SharedDriveModeManual {
t.Fatalf("got %q", got)
}
if got := NormalizeSharedDriveMode(""); got != SharedDriveModeAuto {
t.Fatalf("default got %q", got)
}
}