...

Source file src/edge-infra.dev/pkg/edge/info/config_test.go

Documentation: edge-infra.dev/pkg/edge/info

     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  			// not yet created
    75  			edgeInfo, err := info.FromClient(ctx, cl)
    76  			assert.Error(t, err)
    77  			assert.Nil(t, edgeInfo)
    78  
    79  			// valid cfg created
    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  			// invalid cfg
    87  			// delete existing cm first so we can create an invalid one next to test
    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