@@ -21,19 +21,21 @@ func TestClusterExtensionRevisionImmutability(t *testing.T) {
2121 }{
2222 "revision is immutable" : {
2323 spec : ClusterExtensionRevisionSpec {
24- Revision : 1 ,
24+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
25+ Revision : 1 ,
2526 },
2627 updateFunc : func (cer * ClusterExtensionRevision ) {
2728 cer .Spec .Revision = 2
2829 },
2930 },
3031 "phases may be initially empty" : {
3132 spec : ClusterExtensionRevisionSpec {
32- Revision : 1 ,
33- Phases : []ClusterExtensionRevisionPhase {},
33+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
34+ Revision : 1 ,
35+ InlinePhases : []ClusterExtensionRevisionPhase {},
3436 },
3537 updateFunc : func (cer * ClusterExtensionRevision ) {
36- cer .Spec .Phases = []ClusterExtensionRevisionPhase {
38+ cer .Spec .InlinePhases = []ClusterExtensionRevisionPhase {
3739 {
3840 Name : "foo" ,
3941 Objects : []ClusterExtensionRevisionObject {},
@@ -44,10 +46,11 @@ func TestClusterExtensionRevisionImmutability(t *testing.T) {
4446 },
4547 "phases may be initially unset" : {
4648 spec : ClusterExtensionRevisionSpec {
47- Revision : 1 ,
49+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
50+ Revision : 1 ,
4851 },
4952 updateFunc : func (cer * ClusterExtensionRevision ) {
50- cer .Spec .Phases = []ClusterExtensionRevisionPhase {
53+ cer .Spec .InlinePhases = []ClusterExtensionRevisionPhase {
5154 {
5255 Name : "foo" ,
5356 Objects : []ClusterExtensionRevisionObject {},
@@ -58,16 +61,17 @@ func TestClusterExtensionRevisionImmutability(t *testing.T) {
5861 },
5962 "phases are immutable if not empty" : {
6063 spec : ClusterExtensionRevisionSpec {
61- Revision : 1 ,
62- Phases : []ClusterExtensionRevisionPhase {
64+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
65+ Revision : 1 ,
66+ InlinePhases : []ClusterExtensionRevisionPhase {
6367 {
6468 Name : "foo" ,
6569 Objects : []ClusterExtensionRevisionObject {},
6670 },
6771 },
6872 },
6973 updateFunc : func (cer * ClusterExtensionRevision ) {
70- cer .Spec .Phases = []ClusterExtensionRevisionPhase {
74+ cer .Spec .InlinePhases = []ClusterExtensionRevisionPhase {
7175 {
7276 Name : "foo2" ,
7377 Objects : []ClusterExtensionRevisionObject {},
@@ -107,20 +111,87 @@ func TestClusterExtensionRevisionValidity(t *testing.T) {
107111 }{
108112 "revision cannot be negative" : {
109113 spec : ClusterExtensionRevisionSpec {
110- Revision : - 1 ,
114+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
115+ Revision : - 1 ,
111116 },
112117 valid : false ,
113118 },
114119 "revision cannot be zero" : {
115- spec : ClusterExtensionRevisionSpec {},
120+ spec : ClusterExtensionRevisionSpec {
121+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
122+ },
116123 valid : false ,
117124 },
118125 "revision must be positive" : {
119126 spec : ClusterExtensionRevisionSpec {
120- Revision : 1 ,
127+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
128+ Revision : 1 ,
121129 },
122130 valid : true ,
123131 },
132+ "lifecycleState must be set" : {
133+ spec : ClusterExtensionRevisionSpec {
134+ Revision : 1 ,
135+ },
136+ valid : false ,
137+ },
138+ "inlinePhases must have no more than 20 phases" : {
139+ spec : ClusterExtensionRevisionSpec {
140+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
141+ Revision : 1 ,
142+ InlinePhases : make ([]ClusterExtensionRevisionPhase , 21 ),
143+ },
144+ valid : false ,
145+ },
146+ "inlinePhases entries must have no more than 50 objects" : {
147+ spec : ClusterExtensionRevisionSpec {
148+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
149+ Revision : 1 ,
150+ InlinePhases : []ClusterExtensionRevisionPhase {
151+ {
152+ Name : "too-many-objects" ,
153+ Objects : make ([]ClusterExtensionRevisionObject , 51 ),
154+ },
155+ },
156+ },
157+ valid : false ,
158+ },
159+ "inlinePhases entry names cannot be empty" : {
160+ spec : ClusterExtensionRevisionSpec {
161+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
162+ Revision : 1 ,
163+ InlinePhases : []ClusterExtensionRevisionPhase {
164+ {
165+ Name : "" ,
166+ },
167+ },
168+ },
169+ valid : false ,
170+ },
171+ "inlinePhases entry names cannot start with symbols" : {
172+ spec : ClusterExtensionRevisionSpec {
173+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
174+ Revision : 1 ,
175+ InlinePhases : []ClusterExtensionRevisionPhase {
176+ {
177+ Name : "-invalid" ,
178+ },
179+ },
180+ },
181+ valid : false ,
182+ },
183+ "inlinePhases entry names cannot start with numeric characters" : {
184+ spec : ClusterExtensionRevisionSpec {
185+ LifecycleState : ClusterExtensionRevisionLifecycleStateActive ,
186+ Revision : 1 ,
187+ InlinePhases : []ClusterExtensionRevisionPhase {
188+ {
189+ Name : "1-invalid" ,
190+ },
191+ },
192+ },
193+ valid : false ,
194+ },
124195 } {
125196 t .Run (name , func (t * testing.T ) {
126197 cer := & ClusterExtensionRevision {
0 commit comments