1 package info_test
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 corev1 "k8s.io/api/core/v1"
8 "sigs.k8s.io/controller-runtime/pkg/client/fake"
9
10 "edge-infra.dev/pkg/edge/info"
11 fakeinfo "edge-infra.dev/pkg/edge/info/fake"
12 "edge-infra.dev/pkg/k8s/unstructured"
13 "edge-infra.dev/test/f2"
14 )
15
16 func TestConfigMapValidation(t *testing.T) {
17 feature := f2.NewFeature("Test Configmap").
18 Test("FromConfigMap", func(ctx f2.Context, t *testing.T) f2.Context {
19 expected := fakeinfo.GetEdgeInfo()
20 cfg := fakeinfo.GetEdgeInfoConfigMap()
21 edgeInfo := info.FromConfigMap(cfg)
22 assert.Equal(t, expected, edgeInfo)
23 return ctx
24 }).
25 Test("ToConfigMap", func(ctx f2.Context, t *testing.T) f2.Context {
26 expected := fakeinfo.GetEdgeInfoConfigMap()
27 edgeInfo := fakeinfo.GetEdgeInfo()
28 cfg := edgeInfo.ToConfigMap()
29 assert.Equal(t, expected.Data, cfg.Data)
30 return ctx
31 }).
32 Test("NewValidConfigMap", func(ctx f2.Context, t *testing.T) f2.Context {
33 cfg := fakeinfo.GetEdgeInfoConfigMap()
34 expected := fakeinfo.GetEdgeInfo()
35 edgeInfo, err := info.New(cfg)
36 assert.NoError(t, err)
37 assert.Equal(t, expected, edgeInfo)
38 return ctx
39 }).
40 Test("NewInvalidConfigMap", func(ctx f2.Context, t *testing.T) f2.Context {
41 cfg := fakeinfo.GetEdgeInfoConfigMap()
42 delete(cfg.Data, info.ProjectID)
43 edgeInfo, err := info.New(cfg)
44 assert.Error(t, err)
45 assert.Nil(t, edgeInfo)
46 return ctx
47 }).
48 Test("IsEdgeInfoConfigMap", func(ctx f2.Context, t *testing.T) f2.Context {
49 expected := fakeinfo.GetEdgeInfoConfigMap()
50 isEdgeInfoConfigMap := info.IsEdgeInfoConfigMap(expected.ObjectMeta.Name, expected.ObjectMeta.Namespace)
51 assert.True(t, isEdgeInfoConfigMap)
52 return ctx
53 }).
54 Test("FieldsRequired", func(ctx f2.Context, t *testing.T) f2.Context {
55 cfg := &corev1.ConfigMap{}
56 err := info.ValidateConfigMap(cfg)
57 assert.Error(t, err)
58 allFields := "edge-info configmap invalid, value(s) not provided: " +
59 "edge.banner,edge.project.id,cluster.name," +
60 "cluster.edge.id,cluster.type,cluster.location"
61 assert.Equal(t, allFields, err.Error())
62 return ctx
63 }).
64 Test("TopLevelValidation", func(ctx f2.Context, t *testing.T) f2.Context {
65 cfg := fakeinfo.GetEdgeInfoTopLevelConfigMap()
66 err := info.ValidateConfigMap(cfg)
67 assert.NoError(t, err)
68 return ctx
69 }).
70 Test("FromClient", func(ctx f2.Context, t *testing.T) f2.Context {
71 cl := fake.NewClientBuilder().Build()
72 expected := fakeinfo.GetEdgeInfo()
73
74
75 edgeInfo, err := info.FromClient(ctx, cl)
76 assert.Error(t, err)
77 assert.Nil(t, edgeInfo)
78
79
80 cfg := fakeinfo.GetEdgeInfoConfigMap()
81 assert.NoError(t, cl.Create(ctx, cfg))
82 edgeInfo, err = info.FromClient(ctx, cl)
83 assert.NoError(t, err)
84 assert.Equal(t, expected, edgeInfo)
85
86
87
88 delCfg := unstructured.New(corev1.SchemeGroupVersion, "ConfigMap", info.EdgeConfigMapNS, info.EdgeConfigMapName)
89 err = cl.Delete(ctx, delCfg)
90 assert.NoError(t, err)
91
92 invalidCfg := fakeinfo.GetEdgeInfoConfigMap()
93 delete(invalidCfg.Data, info.ProjectID)
94 assert.NoError(t, cl.Create(ctx, invalidCfg))
95 edgeInfo, err = info.FromClient(ctx, cl)
96 assert.Error(t, err)
97 assert.Nil(t, edgeInfo)
98 return ctx
99 }).
100 Test("BuildComfigmap", func(ctx f2.Context, t *testing.T) f2.Context {
101 expected := fakeinfo.GetEdgeInfo()
102 cfg := info.BuildConfigMap(expected.ProjectID, expected.Store, expected.ClusterType, expected.Location, expected.BannerName, expected.Fleet, expected.ForemanProjectID, expected.BannerEdgeID, expected.ClusterEdgeID, expected.EdgeAPIEndpoint)
103 assert.NotNil(t, cfg)
104 assert.NoError(t, info.ValidateConfigMap(cfg))
105 assert.Equal(t, expected, info.FromConfigMap(cfg))
106 return ctx
107 }).Feature()
108 f.Test(t, feature)
109 }
110
View as plain text