carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1package hostops
2
3import (
4 "crypto/ed25519"
5 "testing"
6 "time"
7
8 "github.com/carlosframework/platform/internal/release"
9)
10
11func TestPlan9Fix1RepeatedResetExpiryNeverPermanentlyPinsETag(t *testing.T) {
12 tr, r, o, _ := resetTransportFixture(t)
13 w, err := NewControlWriter(tr.Store, tr.Directory.PublicKey, tr.Now)
14 if err != nil {
15 t.Fatal(err)
16 }
17 h := o.Claim.Holder
18 grant := lifecycleGrant{kind: "app", account: h.Account, app: h.App, appID: "app", operation: "reset", owner: r.Admission.Owner, epoch: 1, w: w, registration: RegistrationWakeRetryReset, incarnation: h.Incarnation}
19 ctx := withLifecycleGrant(t.Context(), grant)
20 signer := release.RootSigner(ed25519.NewKeyFromSeed(make([]byte, 32)))
21 issue := func() (WakeResetRequest, error) {
22 return w.RequestWakeReset(ctx, tr, signer, r.Console, r.ConsoleEnrollment, r.Namespace, o, r.Attempt)
23 }
24 first, err := issue()
25 if err != nil {
26 t.Fatal(err)
27 }
28 if err := tr.Store.Delete(t.Context(), first.Key()); err != nil {
29 t.Fatal(err)
30 }
31 for round := uint64(0); round < 64; round++ {
32 expired := first
33 expired.Round = round
34 expired.IssuedAt = tr.Now().Add(-3 * time.Minute)
35 expired.Expires = expired.IssuedAt.Add(WakeResetLifetime)
36 expired.ID = wakeResetID(expired)
37 raw, err := release.SignRootEnvelope(signer, expired)
38 if err != nil {
39 t.Fatal(err)
40 }
41 if _, err := tr.Store.Put(t.Context(), wakeResetArchiveKey(expired), raw, ""); err != nil {
42 t.Fatal(err)
43 }
44 }
45 fresh, err := issue()
46 if err != nil {
47 t.Fatalf("repeated expiries permanently pinned claim ETag: %v", err)
48 }
49 if fresh.ClaimETag != first.ClaimETag || !fresh.Expires.After(tr.Now()) {
50 t.Fatalf("did not issue a live reset for the same ETag: %+v", fresh)
51 }
52}
53