Skip to content

Commit 31d7b7f

Browse files
committed
f
1 parent 8a2a2d3 commit 31d7b7f

File tree

1 file changed

+142
-115
lines changed

1 file changed

+142
-115
lines changed

cmd/installer/cli/install_test.go

Lines changed: 142 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -335,12 +335,12 @@ func getReleasesHandler(t *testing.T, channelID string, apiHandler http.HandlerF
335335
}
336336
}
337337

338-
func Test_getLicenseFromFilepath(t *testing.T) {
338+
func Test_verifyLicense(t *testing.T) {
339339
tests := []struct {
340-
name string
341-
licenseContents string
342-
wantErr string
343-
useRelease bool
340+
name string
341+
license *kotsv1beta1.License
342+
wantErr string
343+
useRelease bool
344344
}{
345345
{
346346
name: "no license, no release",
@@ -353,152 +353,184 @@ func Test_getLicenseFromFilepath(t *testing.T) {
353353
},
354354
{
355355
name: "valid license, no release",
356-
licenseContents: `
357-
spec:
358-
appSlug: embedded-cluster-smoke-test-staging-app
359-
channelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP"
360-
isEmbeddedClusterDownloadEnabled: true
361-
`,
356+
license: &kotsv1beta1.License{
357+
Spec: kotsv1beta1.LicenseSpec{
358+
AppSlug: "embedded-cluster-smoke-test-staging-app",
359+
ChannelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP",
360+
IsEmbeddedClusterDownloadEnabled: true,
361+
},
362+
},
362363
wantErr: "a license was provided but no release was found in binary, please rerun without the license flag",
363364
},
364365
{
365366
name: "valid license, with release",
366367
useRelease: true,
367-
licenseContents: `
368-
spec:
369-
appSlug: embedded-cluster-smoke-test-staging-app
370-
channelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP"
371-
isEmbeddedClusterDownloadEnabled: true
372-
`,
368+
license: &kotsv1beta1.License{
369+
Spec: kotsv1beta1.LicenseSpec{
370+
AppSlug: "embedded-cluster-smoke-test-staging-app",
371+
ChannelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP",
372+
IsEmbeddedClusterDownloadEnabled: true,
373+
},
374+
},
373375
},
374376
{
375377
name: "valid multi-channel license, with release",
376378
useRelease: true,
377-
licenseContents: `
378-
spec:
379-
appSlug: embedded-cluster-smoke-test-staging-app
380-
channelID: "OtherChannelID"
381-
isEmbeddedClusterDownloadEnabled: true
382-
channels:
383-
- channelID: OtherChannelID
384-
channelName: OtherChannel
385-
channelSlug: other-channel
386-
isDefault: true
387-
- channelID: 2cHXb1RCttzpR0xvnNWyaZCgDBP
388-
channelName: ExpectedChannel
389-
channelSlug: expected-channel
390-
isDefault: false
391-
`,
379+
license: &kotsv1beta1.License{
380+
Spec: kotsv1beta1.LicenseSpec{
381+
AppSlug: "embedded-cluster-smoke-test-staging-app",
382+
ChannelID: "OtherChannelID",
383+
IsEmbeddedClusterDownloadEnabled: true,
384+
Channels: []kotsv1beta1.Channel{
385+
{
386+
ChannelID: "OtherChannelID",
387+
ChannelName: "OtherChannel",
388+
ChannelSlug: "other-channel",
389+
IsDefault: true,
390+
},
391+
{
392+
ChannelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP",
393+
ChannelName: "ExpectedChannel",
394+
ChannelSlug: "expected-channel",
395+
IsDefault: false,
396+
},
397+
},
398+
},
399+
},
392400
},
393401
{
394402
name: "expired license, with release",
395403
useRelease: true,
396-
licenseContents: `
397-
spec:
398-
appSlug: embedded-cluster-smoke-test-staging-app
399-
channelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP"
400-
isEmbeddedClusterDownloadEnabled: true
401-
entitlements:
402-
expires_at:
403-
description: License Expiration
404-
signature: {}
405-
title: Expiration
406-
value: "2024-06-03T00:00:00Z"
407-
valueType: String
408-
`,
404+
license: &kotsv1beta1.License{
405+
Spec: kotsv1beta1.LicenseSpec{
406+
AppSlug: "embedded-cluster-smoke-test-staging-app",
407+
ChannelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP",
408+
IsEmbeddedClusterDownloadEnabled: true,
409+
Entitlements: map[string]kotsv1beta1.EntitlementField{
410+
"expires_at": {
411+
Value: kotsv1beta1.EntitlementValue{
412+
Type: kotsv1beta1.String,
413+
StrVal: "2024-06-03T00:00:00Z",
414+
},
415+
},
416+
},
417+
},
418+
},
409419
wantErr: "license expired on 2024-06-03 00:00:00 +0000 UTC, please provide a valid license",
410420
},
411421
{
412422
name: "license with no expiration, with release",
413423
useRelease: true,
414-
licenseContents: `
415-
spec:
416-
appSlug: embedded-cluster-smoke-test-staging-app
417-
channelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP"
418-
isEmbeddedClusterDownloadEnabled: true
419-
entitlements:
420-
expires_at:
421-
description: License Expiration
422-
signature: {}
423-
title: Expiration
424-
value: ""
425-
valueType: String
426-
`,
424+
license: &kotsv1beta1.License{
425+
Spec: kotsv1beta1.LicenseSpec{
426+
AppSlug: "embedded-cluster-smoke-test-staging-app",
427+
ChannelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP",
428+
IsEmbeddedClusterDownloadEnabled: true,
429+
Entitlements: map[string]kotsv1beta1.EntitlementField{
430+
"expires_at": {
431+
Value: kotsv1beta1.EntitlementValue{
432+
Type: kotsv1beta1.String,
433+
StrVal: "",
434+
},
435+
},
436+
},
437+
},
438+
},
439+
},
440+
{
441+
name: "license with 100 year expiration, with release",
442+
useRelease: true,
443+
license: &kotsv1beta1.License{
444+
Spec: kotsv1beta1.LicenseSpec{
445+
AppSlug: "embedded-cluster-smoke-test-staging-app",
446+
ChannelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP",
447+
IsEmbeddedClusterDownloadEnabled: true,
448+
Entitlements: map[string]kotsv1beta1.EntitlementField{
449+
"expires_at": {
450+
Value: kotsv1beta1.EntitlementValue{
451+
Type: kotsv1beta1.String,
452+
StrVal: "2124-06-03T00:00:00Z",
453+
},
454+
},
455+
},
456+
},
457+
},
427458
},
428459
{
429460
name: "license with 100 year expiration, with release",
430461
useRelease: true,
431-
licenseContents: `
432-
spec:
433-
appSlug: embedded-cluster-smoke-test-staging-app
434-
channelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP"
435-
isEmbeddedClusterDownloadEnabled: true
436-
entitlements:
437-
expires_at:
438-
description: License Expiration
439-
signature: {}
440-
title: Expiration
441-
value: "2124-06-03T00:00:00Z"
442-
valueType: String
443-
`,
462+
license: &kotsv1beta1.License{
463+
Spec: kotsv1beta1.LicenseSpec{
464+
AppSlug: "embedded-cluster-smoke-test-staging-app",
465+
ChannelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP",
466+
IsEmbeddedClusterDownloadEnabled: true,
467+
Entitlements: map[string]kotsv1beta1.EntitlementField{
468+
"expires_at": {
469+
Value: kotsv1beta1.EntitlementValue{
470+
Type: kotsv1beta1.String,
471+
StrVal: "2124-06-03T00:00:00Z",
472+
},
473+
},
474+
},
475+
},
476+
},
444477
},
445478
{
446479
name: "embedded cluster not enabled, with release",
447480
useRelease: true,
448-
licenseContents: `
449-
spec:
450-
appSlug: embedded-cluster-smoke-test-staging-app
451-
channelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP"
452-
isEmbeddedClusterDownloadEnabled: false
453-
`,
481+
license: &kotsv1beta1.License{
482+
Spec: kotsv1beta1.LicenseSpec{
483+
AppSlug: "embedded-cluster-smoke-test-staging-app",
484+
ChannelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP",
485+
IsEmbeddedClusterDownloadEnabled: false,
486+
},
487+
},
454488
wantErr: "license does not have embedded cluster enabled, please provide a valid license",
455489
},
456490
{
457491
name: "incorrect license (multichan license)",
458492
useRelease: true,
459-
licenseContents: `
460-
spec:
461-
appSlug: embedded-cluster-smoke-test-staging-app
462-
channelID: "2i9fCbxTNIhuAOaC6MoKMVeGzuK"
463-
isEmbeddedClusterDownloadEnabled: false
464-
channels:
465-
- channelID: 2i9fCbxTNIhuAOaC6MoKMVeGzuK
466-
channelName: Stable
467-
channelSlug: stable
468-
isDefault: true
469-
- channelID: 4l9fCbxTNIhuAOaC6MoKMVeV3K
470-
channelName: Alternate
471-
channelSlug: alternate
472-
isDefault: false
473-
`,
493+
license: &kotsv1beta1.License{
494+
Spec: kotsv1beta1.LicenseSpec{
495+
AppSlug: "embedded-cluster-smoke-test-staging-app",
496+
ChannelID: "2i9fCbxTNIhuAOaC6MoKMVeGzuK",
497+
IsEmbeddedClusterDownloadEnabled: false,
498+
Channels: []kotsv1beta1.Channel{
499+
{
500+
ChannelID: "2i9fCbxTNIhuAOaC6MoKMVeGzuK",
501+
ChannelName: "Stable",
502+
ChannelSlug: "stable",
503+
IsDefault: true,
504+
},
505+
{
506+
ChannelID: "4l9fCbxTNIhuAOaC6MoKMVeV3K",
507+
ChannelName: "Alternate",
508+
ChannelSlug: "alternate",
509+
IsDefault: false,
510+
},
511+
},
512+
},
513+
},
474514
wantErr: "binary channel 2cHXb1RCttzpR0xvnNWyaZCgDBP (CI) not present in license, channels allowed by license are: stable (2i9fCbxTNIhuAOaC6MoKMVeGzuK), alternate (4l9fCbxTNIhuAOaC6MoKMVeV3K)",
475515
},
476516
{
477517
name: "incorrect license (pre-multichan license)",
478518
useRelease: true,
479-
licenseContents: `
480-
spec:
481-
appSlug: embedded-cluster-smoke-test-staging-app
482-
channelID: "2i9fCbxTNIhuAOaC6MoKMVeGzuK"
483-
channelName: "Stable"
484-
isEmbeddedClusterDownloadEnabled: false
485-
`,
519+
license: &kotsv1beta1.License{
520+
Spec: kotsv1beta1.LicenseSpec{
521+
AppSlug: "embedded-cluster-smoke-test-staging-app",
522+
ChannelID: "2i9fCbxTNIhuAOaC6MoKMVeGzuK",
523+
ChannelName: "Stable",
524+
IsEmbeddedClusterDownloadEnabled: false,
525+
},
526+
},
486527
wantErr: "binary channel 2cHXb1RCttzpR0xvnNWyaZCgDBP (CI) not present in license, channels allowed by license are: Stable (2i9fCbxTNIhuAOaC6MoKMVeGzuK)",
487528
},
488529
}
489530
for _, tt := range tests {
490531
t.Run(tt.name, func(t *testing.T) {
491532
req := require.New(t)
492533

493-
tmpdir, err := os.MkdirTemp("", "license")
494-
defer os.RemoveAll(tmpdir)
495-
req.NoError(err)
496-
497-
licenseFile, err := os.Create(tmpdir + "/license.yaml")
498-
req.NoError(err)
499-
_, err = licenseFile.Write([]byte(tt.licenseContents))
500-
req.NoError(err)
501-
502534
dataMap := map[string][]byte{}
503535
if tt.useRelease {
504536
dataMap["release.yaml"] = []byte(`
@@ -509,19 +541,14 @@ appSlug: "embedded-cluster-smoke-test-staging-app"
509541
versionLabel: testversion
510542
`)
511543
}
512-
err = release.SetReleaseDataForTests(dataMap)
544+
err := release.SetReleaseDataForTests(dataMap)
513545
req.NoError(err)
514546

515547
t.Cleanup(func() {
516548
release.SetReleaseDataForTests(nil)
517549
})
518550

519-
if tt.licenseContents != "" {
520-
_, err = getLicenseFromFilepath(filepath.Join(tmpdir, "license.yaml"))
521-
} else {
522-
_, err = getLicenseFromFilepath("")
523-
}
524-
551+
_, err = verifyLicense(tt.license)
525552
if tt.wantErr != "" {
526553
req.EqualError(err, tt.wantErr)
527554
} else {

0 commit comments

Comments
 (0)