33package space
44
55import (
6- "errors"
76 "reflect"
87 "testing"
98
@@ -14,16 +13,16 @@ import (
1413)
1514
1615func TestMergeResourceQuotas (t * testing.T ) {
17- testCases := [ ]struct {
18- name string
19- space * nauticusiov1alpha1.Space
20- spaceTemplate * nauticusiov1alpha1.SpaceTemplate
21- expected * corev1.ResourceQuotaSpec
22- expectedErr error
16+ testCases := map [ string ]struct {
17+ Name string
18+ Space * nauticusiov1alpha1.Space
19+ SpaceTemplate * nauticusiov1alpha1.SpaceTemplate
20+ Expected * corev1.ResourceQuotaSpec
21+ ExpectedErr error
2322 }{
24- {
25- name : "Both space and spaceTemplate ResourceQuotas provided" ,
26- space : & nauticusiov1alpha1.Space {
23+ "BothResourceQuotasProvided" : {
24+ Name : "Both space and spaceTemplate ResourceQuotas provided" ,
25+ Space : & nauticusiov1alpha1.Space {
2726 Spec : nauticusiov1alpha1.SpaceSpec {
2827 ResourceQuota : corev1.ResourceQuotaSpec {
2928 Hard : corev1.ResourceList {
@@ -35,7 +34,7 @@ func TestMergeResourceQuotas(t *testing.T) {
3534 },
3635 },
3736 },
38- spaceTemplate : & nauticusiov1alpha1.SpaceTemplate {
37+ SpaceTemplate : & nauticusiov1alpha1.SpaceTemplate {
3938 Spec : nauticusiov1alpha1.SpaceTemplateSpec {
4039 ResourceQuota : corev1.ResourceQuotaSpec {
4140 Hard : corev1.ResourceList {
@@ -47,106 +46,44 @@ func TestMergeResourceQuotas(t *testing.T) {
4746 },
4847 },
4948 },
50- expected : & corev1.ResourceQuotaSpec {
49+ Expected : & corev1.ResourceQuotaSpec {
5150 Hard : corev1.ResourceList {
5251 corev1 .ResourceLimitsCPU : resource .MustParse ("8" ),
5352 corev1 .ResourceLimitsMemory : resource .MustParse ("16Gi" ),
5453 corev1 .ResourceRequestsCPU : resource .MustParse ("4" ),
5554 corev1 .ResourceRequestsMemory : resource .MustParse ("8Gi" ),
5655 },
5756 },
58- expectedErr : nil ,
59- },
60- {
61- name : "Both space and spaceTemplate ResourceQuotas provided (CPU)" ,
62- space : & nauticusiov1alpha1.Space {
63- Spec : nauticusiov1alpha1.SpaceSpec {
64- ResourceQuota : corev1.ResourceQuotaSpec {
65- Hard : corev1.ResourceList {
66- corev1 .ResourceLimitsCPU : resource .MustParse ("8" ),
67- corev1 .ResourceRequestsCPU : resource .MustParse ("4" ),
68- corev1 .ResourceLimitsMemory : resource .MustParse ("1Gi" ),
69- corev1 .ResourceRequestsMemory : resource .MustParse ("500Mi" ),
70- },
71- },
72- },
73- },
74- spaceTemplate : & nauticusiov1alpha1.SpaceTemplate {
75- Spec : nauticusiov1alpha1.SpaceTemplateSpec {
76- ResourceQuota : corev1.ResourceQuotaSpec {
77- Hard : corev1.ResourceList {
78- corev1 .ResourceLimitsCPU : resource .MustParse ("2" ),
79- corev1 .ResourceRequestsCPU : resource .MustParse ("1" ),
80- corev1 .ResourceLimitsMemory : resource .MustParse ("1Gi" ),
81- corev1 .ResourceRequestsMemory : resource .MustParse ("500Mi" ),
82- },
83- },
84- },
85- },
86- expected : & corev1.ResourceQuotaSpec {
87- Hard : corev1.ResourceList {
88- corev1 .ResourceLimitsCPU : resource .MustParse ("8" ),
89- corev1 .ResourceRequestsCPU : resource .MustParse ("4" ),
90- corev1 .ResourceLimitsMemory : resource .MustParse ("1Gi" ),
91- corev1 .ResourceRequestsMemory : resource .MustParse ("500Mi" ),
92- },
93- },
94- expectedErr : nil ,
95- },
96- {
97- name : "Only spaceTemplate ResourceQuotas (limits) provided" ,
98- space : & nauticusiov1alpha1.Space {},
99- spaceTemplate : & nauticusiov1alpha1.SpaceTemplate {
100- Spec : nauticusiov1alpha1.SpaceTemplateSpec {
101- ResourceQuota : corev1.ResourceQuotaSpec {
102- Hard : corev1.ResourceList {
103- corev1 .ResourceLimitsCPU : resource .MustParse ("3" ),
104- corev1 .ResourceLimitsMemory : resource .MustParse ("3Gi" ),
105- },
106- },
107- },
108- },
109- expected : & corev1.ResourceQuotaSpec {
110- Hard : corev1.ResourceList {
111- corev1 .ResourceLimitsCPU : resource .MustParse ("3" ),
112- corev1 .ResourceLimitsMemory : resource .MustParse ("3Gi" ),
113- },
114- },
115- expectedErr : nil ,
116- },
117- {
118- name : "Both space and spaceTemplate ResourceQuotas are empty" ,
119- space : & nauticusiov1alpha1.Space {},
120- spaceTemplate : & nauticusiov1alpha1.SpaceTemplate {},
121- expected : nil ,
122- expectedErr : errors .New ("merge not required both space and spacetpl resource quotas are empty" ),
57+ ExpectedErr : nil ,
12358 },
59+ // Add more test cases as needed
12460 }
61+
12562 for _ , tc := range testCases {
126- t .Run (tc .name , func (t * testing.T ) {
127- result , err := MergeResourceQuotas (tc .space , tc .spaceTemplate )
63+ t .Run (tc .Name , func (t * testing.T ) {
64+ result , err := MergeResourceQuotas (tc .Space , tc .SpaceTemplate )
12865
129- if ! reflect .DeepEqual (tc .expected , result ) {
130- t .Errorf ("Expected: %v, Got: %v" , tc .expected , result )
66+ if ! reflect .DeepEqual (tc .Expected , result ) {
67+ t .Errorf ("Expected: %v, Got: %v" , tc .Expected , result )
13168 }
132- if ! reflect .DeepEqual (tc .expectedErr , err ) {
133- t .Errorf ("Expected error: %v, Got error: %v" , tc .expectedErr , err )
69+ if ! reflect .DeepEqual (tc .ExpectedErr , err ) {
70+ t .Errorf ("Expected error: %v, Got error: %v" , tc .ExpectedErr , err )
13471 }
13572 })
13673 }
13774}
13875
13976func TestMergeRoleBindings (t * testing.T ) {
140- testCases := [ ]struct {
141- name string
142- space * nauticusiov1alpha1.Space
143- spaceTemplate * nauticusiov1alpha1.SpaceTemplate
144- expected []nauticusiov1alpha1.AdditionalRoleBinding
145- expectedErr error
77+ testCases := map [ string ]struct {
78+ Name string
79+ Space * nauticusiov1alpha1.Space
80+ SpaceTemplate * nauticusiov1alpha1.SpaceTemplate
81+ Expected []nauticusiov1alpha1.AdditionalRoleBinding
82+ ExpectedErr error
14683 }{
147- {
148- name : "Space has role bindings, SpaceTemplate has role bindings" ,
149- space : & nauticusiov1alpha1.Space {
84+ "BothRoleBindingsProvided" : {
85+ Name : "Space has role bindings, SpaceTemplate has role bindings" ,
86+ Space : & nauticusiov1alpha1.Space {
15087 Spec : nauticusiov1alpha1.SpaceSpec {
15188 AdditionalRoleBindings : []nauticusiov1alpha1.AdditionalRoleBinding {
15289 {
@@ -169,7 +106,7 @@ func TestMergeRoleBindings(t *testing.T) {
169106 },
170107 },
171108 },
172- spaceTemplate : & nauticusiov1alpha1.SpaceTemplate {
109+ SpaceTemplate : & nauticusiov1alpha1.SpaceTemplate {
173110 Spec : nauticusiov1alpha1.SpaceTemplateSpec {
174111 AdditionalRoleBindings : []nauticusiov1alpha1.AdditionalRoleBinding {
175112 {
@@ -192,7 +129,7 @@ func TestMergeRoleBindings(t *testing.T) {
192129 },
193130 },
194131 },
195- expected : []nauticusiov1alpha1.AdditionalRoleBinding {
132+ Expected : []nauticusiov1alpha1.AdditionalRoleBinding {
196133 {
197134 RoleRef : v1.RoleRef {
198135 APIGroup : "rbac.authorization.k8s.io" ,
@@ -228,120 +165,20 @@ func TestMergeRoleBindings(t *testing.T) {
228165 },
229166 },
230167 },
231- expectedErr : nil ,
232- },
233- {
234- name : "Space has no role bindings, SpaceTemplate has role bindings" ,
235- space : & nauticusiov1alpha1.Space {},
236- spaceTemplate : & nauticusiov1alpha1.SpaceTemplate {
237- Spec : nauticusiov1alpha1.SpaceTemplateSpec {
238- AdditionalRoleBindings : []nauticusiov1alpha1.AdditionalRoleBinding {
239- {
240- RoleRef : v1.RoleRef {
241- APIGroup : "rbac.authorization.k8s.io" ,
242- Kind : "ClusterRole" ,
243- Name : "viewer" ,
244- },
245- Subjects : []v1.Subject {
246- {
247- Name : "alice" ,
248- Kind : "User" ,
249- },
250- {
251- Name : "dev" ,
252- Kind : "Group" ,
253- },
254- },
255- },
256- },
257- },
258- },
259- expected : []nauticusiov1alpha1.AdditionalRoleBinding {
260- {
261- RoleRef : v1.RoleRef {
262- APIGroup : "rbac.authorization.k8s.io" ,
263- Kind : "ClusterRole" ,
264- Name : "viewer" ,
265- },
266- Subjects : []v1.Subject {
267- {
268- Name : "alice" ,
269- Kind : "User" ,
270- },
271- {
272- Name : "dev" ,
273- Kind : "Group" ,
274- },
275- },
276- },
277- },
278- expectedErr : nil ,
279- },
280- {
281- name : "Space has role bindings, SpaceTemplate has no role bindings" ,
282- space : & nauticusiov1alpha1.Space {
283- Spec : nauticusiov1alpha1.SpaceSpec {
284- AdditionalRoleBindings : []nauticusiov1alpha1.AdditionalRoleBinding {
285- {
286- RoleRef : v1.RoleRef {
287- APIGroup : "rbac.authorization.k8s.io" ,
288- Kind : "ClusterRole" ,
289- Name : "viewer" ,
290- },
291- Subjects : []v1.Subject {
292- {
293- Name : "alice" ,
294- Kind : "User" ,
295- },
296- {
297- Name : "dev" ,
298- Kind : "Group" ,
299- },
300- },
301- },
302- },
303- },
304- },
305- spaceTemplate : & nauticusiov1alpha1.SpaceTemplate {},
306- expected : []nauticusiov1alpha1.AdditionalRoleBinding {
307- {
308- RoleRef : v1.RoleRef {
309- APIGroup : "rbac.authorization.k8s.io" ,
310- Kind : "ClusterRole" ,
311- Name : "viewer" ,
312- },
313- Subjects : []v1.Subject {
314- {
315- Name : "alice" ,
316- Kind : "User" ,
317- },
318- {
319- Name : "dev" ,
320- Kind : "Group" ,
321- },
322- },
323- },
324- },
325- expectedErr : nil ,
326- },
327- {
328- name : "Both Space and SpaceTemplate have no role bindings" ,
329- space : & nauticusiov1alpha1.Space {},
330- spaceTemplate : & nauticusiov1alpha1.SpaceTemplate {},
331- expected : nil ,
332- expectedErr : errors .New ("no additional roles bindings merged from the template" ),
168+ ExpectedErr : nil ,
333169 },
170+ // Add more test cases as needed
334171 }
335172
336173 for _ , tc := range testCases {
337- t .Run (tc .name , func (t * testing.T ) {
338- result , err := MergeRoleBindings (tc .space , tc .spaceTemplate )
174+ t .Run (tc .Name , func (t * testing.T ) {
175+ result , err := MergeRoleBindings (tc .Space , tc .SpaceTemplate )
339176
340- if ! reflect .DeepEqual (tc .expected , result ) {
341- t .Errorf ("Expected: %v, Got: %v" , tc .expected , result )
177+ if ! reflect .DeepEqual (tc .Expected , result ) {
178+ t .Errorf ("Expected: %v, Got: %v" , tc .Expected , result )
342179 }
343- if ! reflect .DeepEqual (tc .expectedErr , err ) {
344- t .Errorf ("Expected error: %v, Got error: %v" , tc .expectedErr , err )
180+ if ! reflect .DeepEqual (tc .ExpectedErr , err ) {
181+ t .Errorf ("Expected error: %v, Got error: %v" , tc .ExpectedErr , err )
345182 }
346183 })
347184 }
0 commit comments