fix: upload part tmp+rename (B4), transactional last-admin DeleteUser (B5), RowsAffected order (B13)
This commit is contained in:
@@ -2,6 +2,7 @@ package store
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
@@ -129,3 +130,50 @@ func TestProgressUpsertAndJoin(t *testing.T) {
|
||||
t.Fatalf("views %+v", views)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteUserLastAdmin(t *testing.T) {
|
||||
s := setup(t)
|
||||
ctx := context.Background()
|
||||
id, err := s.CreateUser(ctx, "onlyadmin", "hash", "admin")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = s.DeleteUser(ctx, id)
|
||||
if !errors.Is(err, ErrLastAdmin) {
|
||||
t.Fatalf("expected ErrLastAdmin, got %v", err)
|
||||
}
|
||||
// Verify user still exists.
|
||||
_, err = s.GetUserByID(ctx, id)
|
||||
if err != nil {
|
||||
t.Fatal("admin should still exist after blocked delete")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteUserNonLastAdmin(t *testing.T) {
|
||||
s := setup(t)
|
||||
ctx := context.Background()
|
||||
id1, _ := s.CreateUser(ctx, "admin1", "h", "admin")
|
||||
_, _ = s.CreateUser(ctx, "admin2", "h", "admin")
|
||||
if err := s.DeleteUser(ctx, id1); err != nil {
|
||||
t.Fatalf("should allow deleting non-last admin: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteUserMember(t *testing.T) {
|
||||
s := setup(t)
|
||||
ctx := context.Background()
|
||||
id, _ := s.CreateUser(ctx, "member", "h", "member")
|
||||
if err := s.DeleteUser(ctx, id); err != nil {
|
||||
t.Fatalf("member delete should succeed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsUniqueViolation(t *testing.T) {
|
||||
s := setup(t)
|
||||
ctx := context.Background()
|
||||
_, _ = s.CreateUser(ctx, "dup", "h", "member")
|
||||
_, err := s.CreateUser(ctx, "dup", "h", "member")
|
||||
if !IsUniqueViolation(err) {
|
||||
t.Fatalf("expected unique violation, got %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user