...

Source file src/edge-infra.dev/pkg/edge/gitops/fns/edgerelease/config_test.go

Documentation: edge-infra.dev/pkg/edge/gitops/fns/edgerelease

     1  package edgerelease
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  
     9  	"edge-infra.dev/pkg/edge/component/build/image"
    10  )
    11  
    12  func TestConfigValidation(t *testing.T) {
    13  	validMetadata := Metadata{
    14  		"97117a2b07f13a6ffe423af362e13912412d3492",
    15  		"499021129",
    16  		"0.0.1-rc.499021129.97117a.2021-01-20",
    17  		"built.2021-01-20.17-04-04.0000UTC",
    18  		"edge-infra",
    19  		"ncrvoyix-swt-retail",
    20  	}
    21  	validImgShort := []PodImage{
    22  		{
    23  			Image: image.Image{
    24  				Repository: "edge-agent",
    25  				Digest:     "sha256:8334923ba95cfda891632977c5885b018aea2fba42423b32350ce8e42e13aa7f",
    26  			},
    27  		},
    28  	}
    29  	validImgRepo := []PodImage{
    30  		{
    31  			Image: image.Image{
    32  				Repository: "edge-agent",
    33  				Digest:     "sha256:8334923ba95cfda891632977c5885b018aea2fba42423b32350ce8e42e13aa7f",
    34  				Registry:   "ncr-emeraldedge-docker-dev.jfrog.io",
    35  			},
    36  		},
    37  	}
    38  	validCmpShort := []Component{
    39  		{
    40  			Name:   "edge-agent",
    41  			Images: validImgShort,
    42  		},
    43  	}
    44  
    45  	tcs := []struct {
    46  		name     string
    47  		config   EdgeRelease
    48  		expected error
    49  	}{
    50  		{
    51  			name: "Incomplete metadata: id",
    52  			config: config(Spec{
    53  				"gcr.io/edge-dev-alpha",
    54  				Metadata{
    55  					"97117a2b07f13a6ffe423af362e13912412d3492",
    56  					"",
    57  					"0.0.1-rc.499021129.97117a.2021-01-20",
    58  					"built.2021-01-20.17-04-04.0000UTC",
    59  					"edge-infra",
    60  					"ncrvoyix-swt-retail",
    61  				},
    62  				true,
    63  				validCmpShort,
    64  				[]image.Image{},
    65  			}),
    66  			expected: ErrIncompleteMetadata,
    67  		},
    68  		{
    69  			name: "Incomplete metadata: semver",
    70  			config: config(Spec{
    71  				"gcr.io/edge-dev-alpha",
    72  				Metadata{
    73  					"97117a2b07f13a6ffe423af362e13912412d3492",
    74  					"499021129",
    75  					"",
    76  					"built.2021-01-20.17-04-04.0000UTC",
    77  					"edge-infra",
    78  					"ncrvoyix-swt-retail",
    79  				},
    80  				true,
    81  				validCmpShort,
    82  				[]image.Image{},
    83  			}),
    84  			expected: ErrIncompleteMetadata,
    85  		},
    86  		{
    87  			name: "Incomplete metadata: timestamp",
    88  			config: config(Spec{
    89  				"gcr.io/edge-dev-alpha",
    90  				Metadata{
    91  					"97117a2b07f13a6ffe423af362e13912412d3492",
    92  					"499021129",
    93  					"0.0.1-rc.499021129.97117a.2021-01-20",
    94  					"",
    95  					"edge-infra",
    96  					"ncrvoyix-swt-retail",
    97  				},
    98  				true,
    99  				validCmpShort,
   100  				[]image.Image{},
   101  			}),
   102  			expected: ErrIncompleteMetadata,
   103  		},
   104  		{
   105  			name: "Incomplete metadata: repo",
   106  			config: config(Spec{
   107  				"gcr.io/edge-dev-alpha",
   108  				Metadata{
   109  					"97117a2b07f13a6ffe423af362e13912412d3492",
   110  					"499021129",
   111  					"0.0.1-rc.499021129.97117a.2021-01-20",
   112  					"built.2021-01-20.17-04-04.0000UTC",
   113  					"",
   114  					"",
   115  				},
   116  				true,
   117  				validCmpShort,
   118  				[]image.Image{},
   119  			}),
   120  			expected: ErrIncompleteMetadata,
   121  		},
   122  		{
   123  			name: "Incomplete metadata: commit",
   124  			config: config(Spec{
   125  				"gcr.io/edge-dev-alpha",
   126  				Metadata{
   127  					"",
   128  					"499021129",
   129  					"0.0.1-rc.499021129.97117a.2021-01-20",
   130  					"built.2021-01-20.17-04-04.0000UTC",
   131  					"edge-infra",
   132  					"ncrvoyix-swt-retail",
   133  				},
   134  				true,
   135  				validCmpShort,
   136  				[]image.Image{},
   137  			}),
   138  			expected: ErrIncompleteMetadata,
   139  		},
   140  		{
   141  			name: "Incomplete metadata",
   142  			config: config(Spec{
   143  				"gcr.io/edge-dev-alpha",
   144  				Metadata{
   145  					"",
   146  					"499021129",
   147  					"0.0.1-rc.499021129.97117a.2021-01-20",
   148  					"built.2021-01-20.17-04-04.0000UTC",
   149  					"edge-infra",
   150  					"ncrvoyix-swt-retail",
   151  				},
   152  				true,
   153  				validCmpShort,
   154  				[]image.Image{},
   155  			}),
   156  			expected: ErrIncompleteMetadata,
   157  		},
   158  		{
   159  			name: "Simple valid Config",
   160  			config: config(Spec{"gcr.io/edge-dev-alpha", validMetadata, false,
   161  				validCmpShort, []image.Image{}}),
   162  			expected: nil,
   163  		},
   164  		{
   165  			name:     "No registry",
   166  			config:   config(Spec{"", validMetadata, false, validCmpShort, []image.Image{}}),
   167  			expected: ErrNoRegistry,
   168  		},
   169  		{
   170  			name:     "No registry, but provided registry for each image",
   171  			config:   config(Spec{"", validMetadata, false, []Component{{"edge-agent", validImgRepo}}, []image.Image{}}),
   172  			expected: nil,
   173  		},
   174  		{
   175  			name:     "No input provided",
   176  			config:   config(Spec{"gcr.io/edge-dev-alpha", validMetadata, false, []Component{}, []image.Image{}}),
   177  			expected: ErrNoInput,
   178  		},
   179  		{
   180  			name: "No images provided",
   181  			config: config(Spec{
   182  				"gcr.io/edge-dev-alpha",
   183  				validMetadata,
   184  				false,
   185  				[]Component{{"edge-agent", []PodImage{}}},
   186  				[]image.Image{},
   187  			}),
   188  			expected: ErrNoImages,
   189  		},
   190  	}
   191  
   192  	for _, tc := range tcs {
   193  		err := tc.config.Spec.Validate()
   194  		if !errors.Is(err, tc.expected) {
   195  			t.Errorf("\n%s: Expected:\n%v\nGot:\n%v\n", tc.name, tc.expected, err)
   196  		}
   197  	}
   198  }
   199  
   200  func config(data Spec) EdgeRelease {
   201  	return EdgeRelease{
   202  		Spec: data,
   203  	}
   204  }
   205  
   206  func TestInitFns(t *testing.T) {
   207  	er := config(Spec{
   208  		"ncr-emeraldedge-docker-dev.jfrog.io",
   209  		Metadata{
   210  			"97117a2b07f13a6ffe423af362e13912412d3492",
   211  			"499021129",
   212  			"0.0.1-rc.499021129.97117a.2021-01-20",
   213  			"built.2021-01-20.17-04-04.0000UTC",
   214  			"edge-infra",
   215  			"ncrvoyix-swt-retail",
   216  		},
   217  		false,
   218  		[]Component{
   219  			{
   220  				"edge-agent",
   221  				[]PodImage{
   222  					{
   223  						Image: image.Image{
   224  							Repository: "edge-agent",
   225  							Digest:     "sha256:8334923ba95cfda891632977c5885b018aea2fba42423b32350ce8e42e13aa7f",
   226  						},
   227  					},
   228  				},
   229  			},
   230  			{
   231  				"fake-agent",
   232  				[]PodImage{
   233  					{
   234  						Image: image.Image{
   235  							Repository: "fake-agent",
   236  							Digest:     "sha256:8334923ba95cfda891632977c5885b018aea2fba42423b32350ce8e42e13aa7f",
   237  							Registry:   "alternate.gcr.io",
   238  						},
   239  					},
   240  				},
   241  			},
   242  		},
   243  		[]image.Image{{Repository: "kpt-unthos-sorter", Digest: "fakeShaFakeShaWhatchaGonnaDo"}},
   244  	})
   245  
   246  	er.init()
   247  
   248  	assert.Equal(t, er.Spec.Registry, er.Spec.Components[0].Images[0].Registry, "image.Registry did not match Spec.Registry after init")
   249  	assert.Equal(t, er.Spec.Registry, er.Spec.KptFns[0].Registry, "image.Registry did not match Spec.Registry after init")
   250  	assert.Equal(t, "alternate.gcr.io", er.Spec.Components[1].Images[0].Registry, "image.Registry was overridden by init functions when it shouldn't have been")
   251  	assert.NotEmpty(t, er.componentMap)
   252  	assert.NotEmpty(t, er.kptFnMap)
   253  }
   254  

View as plain text