package db import ( "errors" "testing" ) func TestCreateAndGetUpload(t *testing.T) { d := openTestDB(t) if err := d.Migrate(); err != nil { t.Fatalf("Migrate: %v", err) } // Create a repository for the upload. _, err := d.Exec(`INSERT INTO repositories (name) VALUES ('testrepo')`) if err != nil { t.Fatalf("insert repo: %v", err) } if err := d.CreateUpload("test-uuid-1", 1); err != nil { t.Fatalf("CreateUpload: %v", err) } u, err := d.GetUpload("test-uuid-1") if err != nil { t.Fatalf("GetUpload: %v", err) } if u.UUID != "test-uuid-1" { t.Fatalf("uuid: got %q, want %q", u.UUID, "test-uuid-1") } if u.RepositoryID != 1 { t.Fatalf("repo id: got %d, want 1", u.RepositoryID) } if u.ByteOffset != 0 { t.Fatalf("byte offset: got %d, want 0", u.ByteOffset) } } func TestGetUploadNotFound(t *testing.T) { d := openTestDB(t) if err := d.Migrate(); err != nil { t.Fatalf("Migrate: %v", err) } _, err := d.GetUpload("nonexistent") if !errors.Is(err, ErrUploadNotFound) { t.Fatalf("err: got %v, want ErrUploadNotFound", err) } } func TestUpdateUploadOffset(t *testing.T) { d := openTestDB(t) if err := d.Migrate(); err != nil { t.Fatalf("Migrate: %v", err) } _, err := d.Exec(`INSERT INTO repositories (name) VALUES ('testrepo')`) if err != nil { t.Fatalf("insert repo: %v", err) } if err := d.CreateUpload("test-uuid-2", 1); err != nil { t.Fatalf("CreateUpload: %v", err) } if err := d.UpdateUploadOffset("test-uuid-2", 1024); err != nil { t.Fatalf("UpdateUploadOffset: %v", err) } u, err := d.GetUpload("test-uuid-2") if err != nil { t.Fatalf("GetUpload: %v", err) } if u.ByteOffset != 1024 { t.Fatalf("byte offset: got %d, want 1024", u.ByteOffset) } } func TestUpdateUploadOffsetNotFound(t *testing.T) { d := openTestDB(t) if err := d.Migrate(); err != nil { t.Fatalf("Migrate: %v", err) } err := d.UpdateUploadOffset("nonexistent", 100) if !errors.Is(err, ErrUploadNotFound) { t.Fatalf("err: got %v, want ErrUploadNotFound", err) } } func TestDeleteUpload(t *testing.T) { d := openTestDB(t) if err := d.Migrate(); err != nil { t.Fatalf("Migrate: %v", err) } _, err := d.Exec(`INSERT INTO repositories (name) VALUES ('testrepo')`) if err != nil { t.Fatalf("insert repo: %v", err) } if err := d.CreateUpload("test-uuid-3", 1); err != nil { t.Fatalf("CreateUpload: %v", err) } if err := d.DeleteUpload("test-uuid-3"); err != nil { t.Fatalf("DeleteUpload: %v", err) } _, err = d.GetUpload("test-uuid-3") if !errors.Is(err, ErrUploadNotFound) { t.Fatalf("after delete: got %v, want ErrUploadNotFound", err) } } func TestDeleteUploadNotFound(t *testing.T) { d := openTestDB(t) if err := d.Migrate(); err != nil { t.Fatalf("Migrate: %v", err) } err := d.DeleteUpload("nonexistent") if !errors.Is(err, ErrUploadNotFound) { t.Fatalf("err: got %v, want ErrUploadNotFound", err) } }