Added tests to Composite App API 31/102131/9
authorSrivahni Chivukula <srivahni.chivukula@intel.com>
Fri, 21 Feb 2020 00:23:58 +0000 (16:23 -0800)
committerSrivahni Chivukula <srivahni.chivukula@intel.com>
Thu, 12 Mar 2020 18:35:54 +0000 (18:35 +0000)
Issue-ID: MULTICLOUD-994
Signed-off-by: Srivahni Chivukula <srivahni.chivukula@intel.com>
Change-Id: I39f3dc28bca3ff7cefda006cb96eb86c2c069efe

src/orchestrator/api/compositeapphandler.go [moved from src/orchestrator/api/composite_app_handler.go with 100% similarity]
src/orchestrator/pkg/module/app_intent_test.go
src/orchestrator/pkg/module/compositeapp.go
src/orchestrator/pkg/module/compositeapp_test.go [new file with mode: 0644]
src/orchestrator/pkg/module/deployment_intent_groups_test.go
src/orchestrator/pkg/module/generic_placement_intent_test.go

index 5a4f769..fa2e440 100644 (file)
@@ -118,7 +118,7 @@ func TestCreateAppIntent(t *testing.T) {
                                        },
                                        CompositeAppKey{CompositeAppName: "testCompositeApp",
                                                Version: "testCompositeAppVersion", Project: "testProject"}.String(): {
-                                               "compositeAppmetadata": []byte(
+                                               "compositeapp": []byte(
                                                        "{\"metadata\":{" +
                                                                "\"name\":\"testCompositeApp\"," +
                                                                "\"description\":\"description\"," +
index 0a4e158..74fbe0d 100644 (file)
@@ -70,8 +70,8 @@ type CompositeAppManager interface {
 // CompositeAppClient implements the CompositeAppManager
 // It will also be used to maintain some localized state
 type CompositeAppClient struct {
-       storeName           string
-       tagMeta, tagContent string
+       storeName string
+       tagMeta   string
 }
 
 // NewCompositeAppClient returns an instance of the CompositeAppClient
@@ -79,7 +79,7 @@ type CompositeAppClient struct {
 func NewCompositeAppClient() *CompositeAppClient {
        return &CompositeAppClient{
                storeName: "orchestrator",
-               tagMeta:   "compositeAppmetadata",
+               tagMeta:   "compositeapp",
        }
 }
 
diff --git a/src/orchestrator/pkg/module/compositeapp_test.go b/src/orchestrator/pkg/module/compositeapp_test.go
new file mode 100644 (file)
index 0000000..a1a2ec1
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+ * Copyright 2020 Intel Corporation, Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package module
+
+import (
+       "reflect"
+       "strings"
+       "testing"
+
+       "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db"
+
+       pkgerrors "github.com/pkg/errors"
+)
+
+func TestCreateCompositeApp(t *testing.T) {
+       testCases := []struct {
+               label         string
+               inpCompApp    CompositeApp
+               inpProject    string
+               expectedError string
+               mockdb        *db.MockDB
+               expected      CompositeApp
+       }{
+               {
+                       label: "Create Composite App",
+                       inpCompApp: CompositeApp{
+                               Metadata: CompositeAppMetaData{
+                                       Name:        "testCompositeApp",
+                                       Description: "A sample composite app used for unit testing",
+                                       UserData1:   "userData1",
+                                       UserData2:   "userData2",
+                               },
+                               Spec: CompositeAppSpec{
+                                       Version: "v1",
+                               },
+                       },
+
+                       inpProject: "testProject",
+                       expected: CompositeApp{
+                               Metadata: CompositeAppMetaData{
+                                       Name:        "testCompositeApp",
+                                       Description: "A sample composite app used for unit testing",
+                                       UserData1:   "userData1",
+                                       UserData2:   "userData2",
+                               },
+                               Spec: CompositeAppSpec{
+                                       Version: "v1",
+                               },
+                       },
+                       expectedError: "",
+                       mockdb: &db.MockDB{
+                               Items: map[string]map[string][]byte{
+                                       ProjectKey{ProjectName: "testProject"}.String(): {
+                                               "projectmetadata": []byte(
+                                                       "{" +
+                                                               "\"metadata\": {" +
+                                                               "\"Name\": \"testProject\"," +
+                                                               "\"Description\": \"Test project for unit testing\"," +
+                                                               "\"UserData1\": \"userData1\"," +
+                                                               "\"UserData2\": \"userData2\"}" +
+                                                               "}"),
+                                       },
+                               },
+                       },
+               },
+       }
+
+       for _, testCase := range testCases {
+               t.Run(testCase.label, func(t *testing.T) {
+                       db.DBconn = testCase.mockdb
+                       impl := NewCompositeAppClient()
+                       got, err := impl.CreateCompositeApp(testCase.inpCompApp, testCase.inpProject)
+                       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 returned unexpected body: got %v;"+
+                                               " expected %v", got, testCase.expected)
+                               }
+                       }
+               })
+       }
+}
+
+func TestGetCompositeApp(t *testing.T) {
+
+       testCases := []struct {
+               label         string
+               inpName       string
+               inpVersion    string
+               inpProject    string
+               expectedError string
+               mockdb        *db.MockDB
+               expected      CompositeApp
+       }{
+               {
+                       label:      "Get Composite App",
+                       inpName:    "testCompositeApp",
+                       inpVersion: "v1",
+                       inpProject: "testProject",
+                       expected: CompositeApp{
+                               Metadata: CompositeAppMetaData{
+                                       Name:        "testCompositeApp",
+                                       Description: "Test CompositeApp for unit testing",
+                                       UserData1:   "userData1",
+                                       UserData2:   "userData2",
+                               },
+                               Spec: CompositeAppSpec{
+                                       Version: "v1",
+                               },
+                       },
+                       expectedError: "",
+                       mockdb: &db.MockDB{
+                               Items: map[string]map[string][]byte{
+                                       CompositeAppKey{CompositeAppName: "testCompositeApp", Version: "v1", Project: "testProject"}.String(): {
+                                               "compositeapp": []byte(
+                                                       "{" +
+                                                               "\"metadata\":{" +
+                                                               "\"Name\":\"testCompositeApp\"," +
+                                                               "\"Description\":\"Test CompositeApp for unit testing\"," +
+                                                               "\"UserData1\":\"userData1\"," +
+                                                               "\"UserData2\":\"userData2\"}," +
+                                                               "\"spec\":{" +
+                                                               "\"Version\":\"v1\"}" +
+                                                               "}"),
+                                       },
+                               },
+                       },
+               },
+               {
+                       label:         "Get Error",
+                       expectedError: "DB Error",
+                       mockdb: &db.MockDB{
+                               Err: pkgerrors.New("DB Error"),
+                       },
+               },
+       }
+
+       for _, testCase := range testCases {
+               t.Run(testCase.label, func(t *testing.T) {
+                       db.DBconn = testCase.mockdb
+                       impl := NewCompositeAppClient()
+                       got, err := impl.GetCompositeApp(testCase.inpName, testCase.inpVersion, testCase.inpProject)
+                       if err != nil {
+                               if testCase.expectedError == "" {
+                                       t.Fatalf("Get returned an unexpected error: %s", err)
+                               }
+                               if strings.Contains(err.Error(), testCase.expectedError) == false {
+                                       t.Fatalf("Get returned an unexpected error: %s", err)
+                               }
+                       } else {
+                               if reflect.DeepEqual(testCase.expected, got) == false {
+                                       t.Errorf("Get returned unexpected body: got %v;"+
+                                               " expected %v", got, testCase.expected)
+                               }
+                       }
+               })
+       }
+}
+
+func TestDeleteCompositeApp(t *testing.T) {
+
+       testCases := []struct {
+               label         string
+               inpName       string
+               inpVersion    string
+               inpProject    string
+               expectedError string
+               mockdb        *db.MockDB
+       }{
+               {
+                       label:      "Delete Composite app",
+                       inpName:    "testCompositeApp",
+                       inpVersion: "v1",
+                       inpProject: "testProject",
+                       mockdb: &db.MockDB{
+                               Items: map[string]map[string][]byte{
+                                       CompositeAppKey{CompositeAppName: "testCompositeApp", Version: "v1", Project: "testProject"}.String(): {
+                                               "compositeapp": []byte(
+                                                       "{" +
+                                                               "\"metadata\":{" +
+                                                               "\"Name\":\"testCompositeApp\"," +
+                                                               "\"Description\":\"Test CompositeApp for unit testing\"," +
+                                                               "\"UserData1\":\"userData1\"," +
+                                                               "\"UserData2\":\"userData2\"}," +
+                                                               "\"spec\":{" +
+                                                               "\"Version\":\"v1\"}" +
+                                                               "}"),
+                                       },
+                               },
+                       },
+               },
+               {
+                       label:         "Delete Error",
+                       expectedError: "DB Error",
+                       mockdb: &db.MockDB{
+                               Err: pkgerrors.New("DB Error"),
+                       },
+               },
+       }
+
+       for _, testCase := range testCases {
+               t.Run(testCase.label, func(t *testing.T) {
+                       db.DBconn = testCase.mockdb
+                       impl := NewCompositeAppClient()
+                       err := impl.DeleteCompositeApp(testCase.inpName, testCase.inpVersion, testCase.inpProject)
+                       if err != nil {
+                               if testCase.expectedError == "" {
+                                       t.Fatalf("Delete returned an unexpected error %s", err)
+                               }
+                               if strings.Contains(err.Error(), testCase.expectedError) == false {
+                                       t.Fatalf("Delete returned an unexpected error %s", err)
+                               }
+                       }
+               })
+       }
+}
index c0876ce..13dafd1 100644 (file)
@@ -94,7 +94,7 @@ func TestCreateDeploymentIntentGroup(t *testing.T) {
                                        },
                                        CompositeAppKey{CompositeAppName: "testCompositeApp",
                                                Version: "testCompositeAppVersion", Project: "testProject"}.String(): {
-                                               "compositeAppmetadata": []byte(
+                                               "compositeapp": []byte(
                                                        "{\"metadata\":{" +
                                                                "\"name\":\"testCompositeApp\"," +
                                                                "\"description\":\"description\"," +
index c87f9dd..7121e05 100644 (file)
@@ -72,7 +72,7 @@ func TestCreateGenericPlacementIntent(t *testing.T) {
                                        },
                                        CompositeAppKey{CompositeAppName: "testCompositeApp",
                                                Version: "testCompositeAppVersion", Project: "testProject"}.String(): {
-                                               "compositeAppmetadata": []byte(
+                                               "compositeapp": []byte(
                                                        "{\"metadata\":{" +
                                                                "\"name\":\"testCompositeApp\"," +
                                                                "\"description\":\"description\"," +