@@ -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"
509541versionLabel: 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