carlos / platform Public

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

Plain git — no account needed to clone.

Download

Download this file

1package release
2
3import (
4 "github.com/carlosframework/platform/internal/registry"
5 "testing"
6)
7
8func TestPlan9ReleaseIdentityRequiresSignedTarget(t *testing.T) {
9 s := NewDirStore(t.TempDir())
10 key, pub := testKeys(t)
11 rt := registry.Route{Host: "x.example", Account: "bab", App: "demo", Channel: "canary/x"}
12 for _, v := range []string{"one", "two"} {
13 shipRelease(t, s, "bab", "demo", v, "linux-amd64", []byte(v))
14 }
15 if err := Promote(t.Context(), s, key, "bab", "demo", rt.Channel, "one"); err != nil {
16 t.Fatal(err)
17 }
18 m, err := GetManifest(t.Context(), s, "bab", "demo", "one")
19 if err != nil {
20 t.Fatal(err)
21 }
22 id, err := releaseIdentity(m)
23 if err != nil {
24 t.Fatal(err)
25 }
26 if err := CheckRouteReleaseIdentity(t.Context(), s, pub, rt, id); err != nil {
27 t.Fatal(err)
28 }
29 if err := Promote(t.Context(), s, key, "bab", "demo", rt.Channel, "two"); err != nil {
30 t.Fatal(err)
31 }
32 if err := CheckRouteReleaseIdentity(t.Context(), s, pub, rt, id); err == nil {
33 t.Fatal("arbitrary old version accepted")
34 }
35 rt.Version = "one"
36 if err := CheckRouteReleaseIdentity(t.Context(), s, pub, rt, id); err != nil {
37 t.Fatalf("installed rollback refused: %v", err)
38 }
39}
40