49 lines
1.9 KiB
Go
49 lines
1.9 KiB
Go
package paymentaccount
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
"hfb_jysh/backend/internal/database"
|
|
"hfb_jysh/backend/internal/model"
|
|
)
|
|
|
|
func TestPrivateCertificateURLsConvertsLegacyPublicURL(t *testing.T) {
|
|
values := privateCertificateURLs([]string{
|
|
"/api/public/files/object?key=payment-cert%2F2026%2Fqr.jpg",
|
|
"/api/public/files/object?key=avatar%2Fuser.jpg",
|
|
})
|
|
if values[0] != "/api/files/object?key=payment-cert%2F2026%2Fqr.jpg" {
|
|
t.Fatalf("payment certificate URL = %q", values[0])
|
|
}
|
|
if values[1] != "/api/public/files/object?key=avatar%2Fuser.jpg" {
|
|
t.Fatalf("non-certificate URL changed = %q", values[1])
|
|
}
|
|
}
|
|
|
|
func TestValidateCertificateURLsRequiresUploaderOwnership(t *testing.T) {
|
|
db := database.NewTestDB()
|
|
if err := database.AutoMigrateIfMissing(db, &model.FileUploadOwner{}); err != nil {
|
|
t.Fatalf("migrate upload owners error = %v", err)
|
|
}
|
|
if err := db.Create(&model.FileUploadOwner{UserID: 1, ObjectKey: "payment-cert/owned.jpg"}).Error; err != nil {
|
|
t.Fatalf("create upload owner error = %v", err)
|
|
}
|
|
repo := NewRepository(db, nil)
|
|
ownedURL := "/api/files/object?key=payment-cert%2Fowned.jpg"
|
|
if err := repo.validateCertificateURLs(context.Background(), 1, []string{ownedURL}, nil); err != nil {
|
|
t.Fatalf("owned certificate rejected: %v", err)
|
|
}
|
|
if err := repo.validateCertificateURLs(context.Background(), 2, []string{ownedURL}, nil); !errors.Is(err, ErrInvalidCertificateURL) {
|
|
t.Fatalf("other user's certificate validation error = %v", err)
|
|
}
|
|
if err := repo.validateCertificateURLs(context.Background(), 1, []string{"/api/files/object?key=listing%2Fowned.jpg"}, nil); !errors.Is(err, ErrInvalidCertificateURL) {
|
|
t.Fatalf("non-certificate file validation error = %v", err)
|
|
}
|
|
legacyURL := "/api/public/files/object?key=payment-cert%2Flegacy.jpg"
|
|
if err := repo.validateCertificateURLs(context.Background(), 1, []string{legacyURL}, []string{legacyURL}); err != nil {
|
|
t.Fatalf("existing legacy certificate rejected: %v", err)
|
|
}
|
|
}
|