| 1 | package console |
| 2 | |
| 3 | import ( |
| 4 | "encoding/json" |
| 5 | "testing" |
| 6 | |
| 7 | "github.com/carlosframework/platform/internal/moves" |
| 8 | ) |
| 9 | |
| 10 | func TestPlan14FloorRiseWithoutPlatformUpdate(t *testing.T) { |
| 11 | for _, state := range []string{"accepted", "missing", "quarantined", "old generation", "old floor", "old prev", "compatible prev"} { |
| 12 | t.Run(state, func(t *testing.T) { |
| 13 | fx := newConsoleFixture(t) |
| 14 | if _, err := fx.rel.Put(t.Context(), moves.FloorKey, []byte(`{"min":1,"min_release":"v2.0.0"}`), ""); err != nil { |
| 15 | t.Fatal(err) |
| 16 | } |
| 17 | armMoveFleet(t, fx, ieBox("ie-box"), ukBox("uk-box")) |
| 18 | key := edgesFilePrefix + "uk-box.json" |
| 19 | raw, etag, err := fx.rel.Get(t.Context(), key) |
| 20 | if err != nil { |
| 21 | t.Fatal(err) |
| 22 | } |
| 23 | var m map[string]any |
| 24 | if err := json.Unmarshal(raw, &m); err != nil { |
| 25 | t.Fatal(err) |
| 26 | } |
| 27 | m["moves_floor_state"] = "accepted" |
| 28 | m["moves_floor_generation"] = 1 |
| 29 | switch state { |
| 30 | case "missing": |
| 31 | delete(m, "moves_floor_state") |
| 32 | case "quarantined": |
| 33 | m["moves_floor_state"] = "quarantined" |
| 34 | case "old generation": |
| 35 | m["moves_floor_generation"] = 0 |
| 36 | case "old floor": |
| 37 | m["moves_floor_min_release"] = "v1.0.0" |
| 38 | case "old prev": |
| 39 | m["prev_release"] = "v1.0.0" |
| 40 | m["prev_allowed_for"] = "v1.0.0" |
| 41 | case "compatible prev": |
| 42 | m["prev_release"] = "v2.0.0" |
| 43 | m["prev_allowed_for"] = "v2.0.0" |
| 44 | } |
| 45 | raw, _ = json.Marshal(m) |
| 46 | if _, err := fx.rel.Put(t.Context(), key, raw, etag); err != nil { |
| 47 | t.Fatal(err) |
| 48 | } |
| 49 | got, err := fx.srv.selectMoveBoxes(t.Context(), "acme.go.tito.io", "uk", "ie", "bab/titogo") |
| 50 | if err != nil { |
| 51 | t.Fatal(err) |
| 52 | } |
| 53 | want := state == "accepted" || state == "compatible prev" |
| 54 | if got.FloorOK != want { |
| 55 | t.Fatalf("FloorOK=%v want %v", got.FloorOK, want) |
| 56 | } |
| 57 | }) |
| 58 | } |
| 59 | } |
| 60 | |