package release import ( "context" "errors" "testing" "time" ) // Review Focus 5. func TestPruneThenReshipGetsAFreshRecord(t *testing.T) { s := NewDirStore(t.TempDir()) ctx := context.Background() priv, pub := testKeys(t) shipRelease(t, s, "bab", "km", "v1", adoptPlatform, []byte("one")) if err := Promote(ctx, s, priv, "bab", "km", "canary/x", "v1"); err != nil { t.Fatal(err) } if err := DeleteVersion(ctx, s, "bab", "km", "v1"); err != nil { t.Fatal(err) } if _, err := ReadPromotionRecord(ctx, s, pub, "bab", "km", "v1"); !errors.Is(err, ErrNoPromotionRecord) { t.Fatalf("the pruned version's record survived: %v", err) } shipRelease(t, s, "bab", "km", "v1", adoptPlatform, []byte("one again, other bytes")) if err := Promote(ctx, s, priv, "bab", "km", "canary/y", "v1"); err != nil { t.Fatal(err) } if _, err := AuthorizedManifest(ctx, s, pub, "bab", "km", "v1"); err != nil { t.Fatalf("the reshipped, promoted name has no valid record: %v", err) } } func TestPurgeRemovesEveryRecord(t *testing.T) { s := NewDirStore(t.TempDir()) ctx := context.Background() priv, pub := testKeys(t) shipRelease(t, s, "bab", "km", "v1", adoptPlatform, []byte("one")) if err := Promote(ctx, s, priv, "bab", "km", "canary/x", "v1"); err != nil { t.Fatal(err) } // Make the app purgeable: trash it and backdate the tombstone if err := TrashApp(ctx, s, "bab", "km", "paul@keymail.dev", time.Now()); err != nil { t.Fatal(err) } if err := PurgeApp(ctx, s, pub, "bab", "km", time.Now().Add(31*24*time.Hour)); err != nil { t.Fatal(err) } keys, _ := s.List(ctx, PromotedPrefix("bab", "km")) if len(keys) != 0 { t.Fatalf("records survived the purge: %v", keys) } }