Some checks failed
Deploy / deploy (push) Has been cancelled
Reviewed-on: http://gitea/marcusDenslow/terminalShop/pulls/1
68 lines
1.8 KiB
Go
68 lines
1.8 KiB
Go
package database
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"terminalShop/pkg/models"
|
|
)
|
|
|
|
func TestBackfillCardStorageExpiration_FillsNullRowsOnly(t *testing.T) {
|
|
testDB := "test_backfill.db"
|
|
defer func() { _ = os.Remove(testDB) }()
|
|
defer ResetForTesting()
|
|
|
|
db, err := Connect(testDB)
|
|
if err != nil {
|
|
t.Fatalf("connect: %v", err)
|
|
}
|
|
if err := Migrate(db); err != nil {
|
|
t.Fatalf("migrate: %v", err)
|
|
}
|
|
|
|
user := models.User{
|
|
SSHKeyFingerprint: "SHA256:backfill",
|
|
SSHPublicKey: "ssh-ed25519 AAAA backfill",
|
|
Name: "Backfill",
|
|
Email: "backfill@example.com",
|
|
}
|
|
if err := db.Create(&user).Error; err != nil {
|
|
t.Fatalf("seed user: %v", err)
|
|
}
|
|
|
|
legacy := models.Card{
|
|
UserID: user.ID, StripePaymentID: "pm_legacy", Last4: "0000",
|
|
Brand: "Visa", ExpMonth: 1, ExpYear: 2030,
|
|
}
|
|
if err := db.Create(&legacy).Error; err != nil {
|
|
t.Fatalf("seed legacy: %v", err)
|
|
}
|
|
|
|
fixed := time.Date(2030, 1, 1, 0, 0, 0, 0, time.UTC)
|
|
preset := models.Card{
|
|
UserID: user.ID, StripePaymentID: "pm_preset", Last4: "9999",
|
|
Brand: "Visa", ExpMonth: 1, ExpYear: 2030, StorageExpiresAt: &fixed,
|
|
}
|
|
if err := db.Create(&preset).Error; err != nil {
|
|
t.Fatalf("ssed preset: %v", err)
|
|
}
|
|
if err := backfillCardStorageExpiration(db); err != nil {
|
|
t.Fatalf("seed preset: %v", err)
|
|
}
|
|
|
|
var reloadedLegacy, reloadedPreset models.Card
|
|
if err := db.First(&reloadedLegacy, legacy.ID).Error; err != nil {
|
|
t.Fatalf("reload legacy: %v", err)
|
|
}
|
|
if err := db.First(&reloadedPreset, preset.ID).Error; err != nil {
|
|
t.Fatalf("reload preset: %v", err)
|
|
}
|
|
if reloadedLegacy.StorageExpiresAt == nil {
|
|
t.Fatalf("legacy card storage_expires_at still NULL after backfill")
|
|
}
|
|
if reloadedPreset.StorageExpiresAt == nil || !reloadedPreset.StorageExpiresAt.Equal(fixed) {
|
|
t.Fatalf("preset card storage_expires_at was overwritten: %v", reloadedPreset.StorageExpiresAt)
|
|
}
|
|
}
|