diff options
Diffstat (limited to 'src/k8splugin/internal/rb/profile_test.go')
-rw-r--r-- | src/k8splugin/internal/rb/profile_test.go | 334 |
1 files changed, 155 insertions, 179 deletions
diff --git a/src/k8splugin/internal/rb/profile_test.go b/src/k8splugin/internal/rb/profile_test.go index df0db18a..5d41b019 100644 --- a/src/k8splugin/internal/rb/profile_test.go +++ b/src/k8splugin/internal/rb/profile_test.go @@ -22,7 +22,6 @@ import ( "bytes" "k8splugin/internal/db" "reflect" - "sort" "strings" "testing" @@ -40,101 +39,62 @@ func TestCreateProfile(t *testing.T) { { label: "Create Resource Bundle Profile", inp: Profile{ - UUID: "123e4567-e89b-12d3-a456-426655440000", - RBDID: "abcde123-e89b-8888-a456-986655447236", - Name: "testresourcebundle", - Namespace: "default", + Name: "testprofile1", + ReleaseName: "testprofilereleasename", + Namespace: "testnamespace", KubernetesVersion: "1.12.3", + RBName: "testresourcebundle", + RBVersion: "v1", }, expected: Profile{ - UUID: "123e4567-e89b-12d3-a456-426655440000", - RBDID: "abcde123-e89b-8888-a456-986655447236", - Name: "testresourcebundle", - Namespace: "default", + Name: "testprofile1", + ReleaseName: "testprofilereleasename", + Namespace: "testnamespace", KubernetesVersion: "1.12.3", + RBName: "testresourcebundle", + RBVersion: "v1", }, expectedError: "", mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - "abcde123-e89b-8888-a456-986655447236": { + DefinitionKey{Name: "testresourcebundle", Version: "v1"}.String(): { "metadata": []byte( - "{\"name\":\"testresourcebundle\"," + - "\"namespace\":\"default\"," + - "\"uuid\":\"123e4567-e89b-12d3-a456-426655440000\"," + - "\"kubernetesversion\":\"1.12.3\"}"), + "{\"rb-name\":\"testresourcebundle\"," + + "\"description\":\"testresourcebundle\"," + + "\"rb-version\":\"v1\"," + + "\"chart-name\":\"testchart\"}"), }, }, }, }, { - label: "Failed Create Resource Bundle Profile", - expectedError: "Error Creating Profile", - mockdb: &db.MockDB{ - Err: pkgerrors.New("Error Creating Profile"), - }, - }, - } - - for _, testCase := range testCases { - t.Run(testCase.label, func(t *testing.T) { - db.DBconn = testCase.mockdb - impl := NewProfileClient() - got, err := impl.Create(testCase.inp) - if err != nil { - if testCase.expectedError == "" { - t.Fatalf("Create returned an unexpected error %s", err) - } - if strings.Contains(err.Error(), testCase.expectedError) == false { - t.Fatalf("Create returned an unexpected error %s", err) - } - } else { - if reflect.DeepEqual(testCase.expected, got) == false { - t.Errorf("Create Resource Bundle returned unexpected body: got %v;"+ - " expected %v", got, testCase.expected) - } - } - }) - } -} - -func TestListProfiles(t *testing.T) { - - testCases := []struct { - label string - expectedError string - mockdb *db.MockDB - expected []Profile - }{ - { - label: "List Resource Bundle Profile", - expected: []Profile{ - { - UUID: "123e4567-e89b-12d3-a456-426655440000", - RBDID: "abcde123-e89b-8888-a456-986655447236", - Name: "testresourcebundle", - Namespace: "default", - KubernetesVersion: "1.12.3", - }, + label: "Create Resource Bundle Profile With Non-Existing Definition", + inp: Profile{ + Name: "testprofile1", + ReleaseName: "testprofilereleasename", + Namespace: "testnamespace", + KubernetesVersion: "1.12.3", + RBName: "testresourcebundle", + RBVersion: "v1", }, - expectedError: "", + expectedError: "Error getting Resource Bundle Definition", mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - "123e4567-e89b-12d3-a456-426655440000": { + DefinitionKey{Name: "testresourcebundle", Version: "v2"}.String(): { "metadata": []byte( - "{\"name\":\"testresourcebundle\"," + - "\"namespace\":\"default\"," + - "\"uuid\":\"123e4567-e89b-12d3-a456-426655440000\"," + - "\"rbdid\":\"abcde123-e89b-8888-a456-986655447236\"," + - "\"kubernetesversion\":\"1.12.3\"}"), + "{\"rb-name\":\"testresourcebundle\"," + + "\"description\":\"testresourcebundle\"," + + "\"rb-version\":\"v1\"," + + "\"chart-name\":\"testchart\"}"), }, }, }, }, { - label: "List Error", - expectedError: "DB Error", + label: "Failed Create Resource Bundle Profile", + expectedError: "Name is required", mockdb: &db.MockDB{ - Err: pkgerrors.New("DB Error"), + Err: pkgerrors.New("Error Creating Profile"), }, }, } @@ -143,28 +103,17 @@ func TestListProfiles(t *testing.T) { t.Run(testCase.label, func(t *testing.T) { db.DBconn = testCase.mockdb impl := NewProfileClient() - got, err := impl.List() + got, err := impl.Create(testCase.inp) if err != nil { if testCase.expectedError == "" { - t.Fatalf("List returned an unexpected error %s", err) + t.Fatalf("Create returned an unexpected error %s", err) } if strings.Contains(err.Error(), testCase.expectedError) == false { - t.Fatalf("List returned an unexpected error %s", err) + t.Fatalf("Create returned an unexpected error %s", err) } } else { - // Since the order of returned slice is not guaranteed - // Check both and return error if both don't match - sort.Slice(got, func(i, j int) bool { - return got[i].UUID < got[j].UUID - }) - // Sort both as it is not expected that testCase.expected - // is sorted - sort.Slice(testCase.expected, func(i, j int) bool { - return testCase.expected[i].UUID < testCase.expected[j].UUID - }) - if reflect.DeepEqual(testCase.expected, got) == false { - t.Errorf("List Resource Bundle returned unexpected body: got %v;"+ + t.Errorf("Create Resource Bundle returned unexpected body: got %v;"+ " expected %v", got, testCase.expected) } } @@ -175,32 +124,36 @@ func TestListProfiles(t *testing.T) { func TestGetProfile(t *testing.T) { testCases := []struct { - label string - expectedError string - mockdb *db.MockDB - inp string - expected Profile + label string + rbname, rbversion, prname string + expectedError string + mockdb *db.MockDB + expected Profile }{ { - label: "Get Resource Bundle Profile", - inp: "123e4567-e89b-12d3-a456-426655440000", + label: "Get Resource Bundle Profile", + rbname: "testresourcebundle", + rbversion: "v1", + prname: "testprofile1", expected: Profile{ - UUID: "123e4567-e89b-12d3-a456-426655440000", - RBDID: "abcde123-e89b-8888-a456-986655447236", - Name: "testresourcebundle", - Namespace: "default", + Name: "testprofile1", + ReleaseName: "testprofilereleasename", + Namespace: "testnamespace", KubernetesVersion: "1.12.3", + RBName: "testresourcebundle", + RBVersion: "v1", }, expectedError: "", mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - "123e4567-e89b-12d3-a456-426655440000": { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile1"}.String(): { "metadata": []byte( - "{\"name\":\"testresourcebundle\"," + - "\"namespace\":\"default\"," + - "\"uuid\":\"123e4567-e89b-12d3-a456-426655440000\"," + - "\"rbdid\":\"abcde123-e89b-8888-a456-986655447236\"," + - "\"kubernetesversion\":\"1.12.3\"}"), + "{\"profile-name\":\"testprofile1\"," + + "\"release-name\":\"testprofilereleasename\"," + + "\"namespace\":\"testnamespace\"," + + "\"rb-name\":\"testresourcebundle\"," + + "\"rb-version\":\"v1\"," + + "\"kubernetes-version\":\"1.12.3\"}"), }, }, }, @@ -218,7 +171,7 @@ func TestGetProfile(t *testing.T) { t.Run(testCase.label, func(t *testing.T) { db.DBconn = testCase.mockdb impl := NewProfileClient() - got, err := impl.Get(testCase.inp) + got, err := impl.Get(testCase.rbname, testCase.rbversion, testCase.prname) if err != nil { if testCase.expectedError == "" { t.Fatalf("Get returned an unexpected error %s", err) @@ -239,15 +192,17 @@ func TestGetProfile(t *testing.T) { func TestDeleteProfile(t *testing.T) { testCases := []struct { - label string - inp string - expectedError string - mockdb *db.MockDB + label string + rbname, rbversion, prname string + expectedError string + mockdb *db.MockDB }{ { - label: "Delete Resource Bundle Profile", - inp: "123e4567-e89b-12d3-a456-426655440000", - mockdb: &db.MockDB{}, + label: "Delete Resource Bundle Profile", + rbname: "testresourcebundle", + rbversion: "v1", + prname: "testprofile1", + mockdb: &db.MockDB{}, }, { label: "Delete Error", @@ -262,7 +217,7 @@ func TestDeleteProfile(t *testing.T) { t.Run(testCase.label, func(t *testing.T) { db.DBconn = testCase.mockdb impl := NewProfileClient() - err := impl.Delete(testCase.inp) + err := impl.Delete(testCase.rbname, testCase.rbversion, testCase.prname) if err != nil { if testCase.expectedError == "" { t.Fatalf("Delete returned an unexpected error %s", err) @@ -277,15 +232,17 @@ func TestDeleteProfile(t *testing.T) { func TestUploadProfile(t *testing.T) { testCases := []struct { - label string - inp string - content []byte - expectedError string - mockdb *db.MockDB + label string + rbname, rbversion, prname string + content []byte + expectedError string + mockdb *db.MockDB }{ { - label: "Upload Resource Bundle Profile", - inp: "123e4567-e89b-12d3-a456-426655440000", + label: "Upload Resource Bundle Profile", + rbname: "testresourcebundle", + rbversion: "v1", + prname: "testprofile1", content: []byte{ 0x1f, 0x8b, 0x08, 0x08, 0xb0, 0x6b, 0xf4, 0x5b, 0x00, 0x03, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x74, @@ -309,12 +266,13 @@ func TestUploadProfile(t *testing.T) { }, mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - "123e4567-e89b-12d3-a456-426655440000": { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile1"}.String(): { "metadata": []byte( - "{\"name\":\"testresourcebundle\"," + - "\"namespace\":\"default\"," + - "\"uuid\":\"123e4567-e89b-12d3-a456-426655440000\"," + - "\"rbdid\":\"abcde123-e89b-8888-a456-986655447236\"," + + "{\"profile-name\":\"testprofile1\"," + + "\"release-name\":\"testprofilereleasename\"," + + "\"namespace\":\"testnamespace\"," + + "\"rb-name\":\"testresourcebundle\"," + + "\"rb-version\":\"v1\"," + "\"kubernetesversion\":\"1.12.3\"}"), }, }, @@ -322,8 +280,10 @@ func TestUploadProfile(t *testing.T) { }, { label: "Upload with an Invalid Resource Bundle Profile", - inp: "123e4567-e89b-12d3-a456-426655440000", - expectedError: "Invalid Profile ID provided", + rbname: "testresourcebundle", + rbversion: "v1", + prname: "testprofile1", + expectedError: "Invalid Profile Name provided", content: []byte{ 0x1f, 0x8b, 0x08, 0x08, 0xb0, 0x6b, 0xf4, 0x5b, 0x00, 0x03, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x74, @@ -347,12 +307,13 @@ func TestUploadProfile(t *testing.T) { }, mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - "123e4567-e89b-12d3-a456-426655441111": { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile2"}.String(): { "metadata": []byte( - "{\"name\":\"testresourcebundle\"," + - "\"namespace\":\"default\"," + - "\"uuid\":\"123e4567-e89b-12d3-a456-426655441111\"," + - "\"rbdid\":\"abcde123-e89b-8888-a456-986655447236\"," + + "{\"profile-name\":\"testprofile1\"," + + "\"release-name\":\"testprofilereleasename\"," + + "\"namespace\":\"testnamespace\"," + + "\"rb-name\":\"testresourcebundle\"," + + "\"rb-version\":\"v1\"," + "\"kubernetesversion\":\"1.12.3\"}"), }, }, @@ -360,7 +321,9 @@ func TestUploadProfile(t *testing.T) { }, { label: "Invalid File Format Error", - inp: "123e4567-e89b-12d3-a456-426655440000", + rbname: "testresourcebundle", + rbversion: "v1", + prname: "testprofile1", expectedError: "Error in file format", content: []byte{ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -368,12 +331,13 @@ func TestUploadProfile(t *testing.T) { }, mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - "123e4567-e89b-12d3-a456-426655440000": { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile1"}.String(): { "metadata": []byte( - "{\"name\":\"testresourcebundle\"," + - "\"namespace\":\"default\"," + - "\"uuid\":\"123e4567-e89b-12d3-a456-426655440000\"," + - "\"rbdid\":\"abcde123-e89b-8888-a456-986655447236\"," + + "{\"profile-name\":\"testprofile1\"," + + "\"release-name\":\"testprofilereleasename\"," + + "\"namespace\":\"testnamespace\"," + + "\"rb-name\":\"testresourcebundle\"," + + "\"rb-version\":\"v1\"," + "\"kubernetesversion\":\"1.12.3\"}"), }, }, @@ -413,7 +377,7 @@ func TestUploadProfile(t *testing.T) { t.Run(testCase.label, func(t *testing.T) { db.DBconn = testCase.mockdb impl := NewProfileClient() - err := impl.Upload(testCase.inp, testCase.content) + err := impl.Upload(testCase.rbname, testCase.rbversion, testCase.prname, testCase.content) if err != nil { if testCase.expectedError == "" { t.Errorf("Upload returned an unexpected error %s", err) @@ -428,15 +392,17 @@ func TestUploadProfile(t *testing.T) { func TestDownloadProfile(t *testing.T) { testCases := []struct { - label string - inp string - expected []byte - expectedError string - mockdb *db.MockDB + label string + rbname, rbversion, prname string + expected []byte + expectedError string + mockdb *db.MockDB }{ { - label: "Download Resource Bundle Profile", - inp: "123e4567-e89b-12d3-a456-426655440000", + label: "Download Resource Bundle Profile", + rbname: "testresourcebundle", + rbversion: "v1", + prname: "testprofile1", expected: []byte{ 0x1f, 0x8b, 0x08, 0x08, 0xb0, 0x6b, 0xf4, 0x5b, 0x00, 0x03, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x74, @@ -460,12 +426,13 @@ func TestDownloadProfile(t *testing.T) { }, mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - "123e4567-e89b-12d3-a456-426655440000": { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile1"}.String(): { "metadata": []byte( - "{\"name\":\"testresourcebundle\"," + - "\"namespace\":\"default\"," + - "\"uuid\":\"123e4567-e89b-12d3-a456-426655440000\"," + - "\"rbdid\":\"abcde123-e89b-8888-a456-986655447236\"," + + "{\"profile-name\":\"testprofile1\"," + + "\"release-name\":\"testprofilereleasename\"," + + "\"namespace\":\"testnamespace\"," + + "\"rb-name\":\"testresourcebundle\"," + + "\"rb-version\":\"v1\"," + "\"kubernetesversion\":\"1.12.3\"}"), "content": []byte("H4sICLBr9FsAA3Rlc3QudGFyAO3OQQrCMBCF4aw9RU5" + "QEtLE40igAUtSC+2IHt9IEVwIpYtShP/bvGFmFk/SLI08Re3IVCG077Rn" + @@ -477,16 +444,19 @@ func TestDownloadProfile(t *testing.T) { }, { label: "Download with an Invalid Resource Bundle Profile", - inp: "123e4567-e89b-12d3-a456-426655440000", - expectedError: "Invalid Profile ID provided", + rbname: "testresourcebundle", + rbversion: "v1", + prname: "testprofile1", + expectedError: "Invalid Profile Name provided", mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - "123e4567-e89b-12d3-a456-426655441111": { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", Name: "testprofile2"}.String(): { "metadata": []byte( - "{\"name\":\"testresourcebundle\"," + - "\"uuid\":\"123e4567-e89b-12d3-a456-426655441111\"," + - "\"namespace\":\"default\"," + - "\"rbdid\":\"abcde123-e89b-8888-a456-986655447236\"," + + "{\"profile-name\":\"testprofile1\"," + + "\"release-name\":\"testprofilereleasename\"," + + "\"namespace\":\"testnamespace\"," + + "\"rb-name\":\"testresourcebundle\"," + + "\"rb-version\":\"v1\"," + "\"kubernetesversion\":\"1.12.3\"}"), }, }, @@ -495,7 +465,9 @@ func TestDownloadProfile(t *testing.T) { { label: "Download Error", expectedError: "DB Error", - inp: "123e4567-e89b-12d3-a456-426655440000", + rbname: "testresourcebundle", + rbversion: "v1", + prname: "testprofile1", mockdb: &db.MockDB{ Err: pkgerrors.New("DB Error"), }, @@ -506,7 +478,7 @@ func TestDownloadProfile(t *testing.T) { t.Run(testCase.label, func(t *testing.T) { db.DBconn = testCase.mockdb impl := NewProfileClient() - data, err := impl.Download(testCase.inp) + data, err := impl.Download(testCase.rbname, testCase.rbversion, testCase.prname) if err != nil { if testCase.expectedError == "" { t.Errorf("Download returned an unexpected error %s", err) @@ -526,24 +498,28 @@ func TestDownloadProfile(t *testing.T) { func TestResolveProfile(t *testing.T) { testCases := []struct { - label string - inp string - expected map[string][]string - expectedError string - mockdb *db.MockDB + label string + rbname, rbversion, prname string + expected map[string][]string + expectedError string + mockdb *db.MockDB }{ { - label: "Resolve Resource Bundle Profile", - inp: "123e4567-e89b-12d3-a456-426655440000", - expected: map[string][]string{}, + label: "Resolve Resource Bundle Profile", + rbname: "testresourcebundle", + rbversion: "v1", + prname: "profile1", + expected: map[string][]string{}, mockdb: &db.MockDB{ Items: map[string]map[string][]byte{ - "123e4567-e89b-12d3-a456-426655440000": { + ProfileKey{RBName: "testresourcebundle", RBVersion: "v1", + Name: "profile1"}.String(): { "metadata": []byte( - "{\"name\":\"testresourcebundle\"," + - "\"namespace\":\"default\"," + - "\"uuid\":\"123e4567-e89b-12d3-a456-426655440000\"," + - "\"rbdid\":\"abcde123-e89b-8888-a456-986655447236\"," + + "{\"profile-name\":\"profile1\"," + + "\"release-name\":\"testprofilereleasename\"," + + "\"namespace\":\"testnamespace\"," + + "\"rb-name\":\"testresourcebundle\"," + + "\"rb-version\":\"v1\"," + "\"kubernetesversion\":\"1.12.3\"}"), // base64 encoding of vagrant/tests/vnfs/testrb/helm/profile "content": []byte("H4sICLmjT1wAA3Byb2ZpbGUudGFyAO1Y32/bNhD2s/6Kg/KyYZZsy" + @@ -570,13 +546,12 @@ func TestResolveProfile(t *testing.T) { "YkDi6mRXNk/V1pUxy0uYsI1S+meU+XsPo2kJLnMOKZGy4J6Xt3XgZuHTayEKv3XZLjy+" + "yJ66WPQwcHBwcHBwcHBwcHBwcHBwcHhm8Q/mTHqWgAoAAA="), }, - "abcde123-e89b-8888-a456-986655447236": { + DefinitionKey{Name: "testresourcebundle", Version: "v1"}.String(): { "metadata": []byte( - "{\"name\":\"testresourcebundle\"," + + "{\"rb-name\":\"testresourcebundle\"," + + "\"rb-version\":\"v1\"," + "\"chart-name\":\"vault-consul-dev\"," + - "\"description\":\"testresourcebundle\"," + - "\"uuid\":\"abcde123-e89b-8888-a456-986655447236\"," + - "\"service-type\":\"firewall\"}"), + "\"description\":\"testresourcebundle\"}"), // base64 encoding of vagrant/tests/vnfs/testrb/helm/vault-consul-dev "content": []byte("H4sICEetS1wAA3ZhdWx0LWNvbnN1bC1kZXYudGFyAO0c7XLbNjK/+R" + "QYujdJehatb+V4czPnOmnPk9bO2Gk7nbaTgUhIxpgiGAK0o3P9QPca92S3C5AU9GXZiax" + @@ -651,7 +626,8 @@ func TestResolveProfile(t *testing.T) { t.Run(testCase.label, func(t *testing.T) { db.DBconn = testCase.mockdb impl := NewProfileClient() - data, err := impl.Resolve(testCase.inp, []string{}) + data, err := impl.Resolve(testCase.rbname, testCase.rbversion, testCase.prname, + []string{}) if err != nil { if testCase.expectedError == "" { t.Errorf("Resolve returned an unexpected error %s", err) |