summaryrefslogtreecommitdiffstats
path: root/src/k8splugin/plugins/service/plugin_test.go
diff options
context:
space:
mode:
authorVictor Morales <victor.morales@intel.com>2018-09-18 17:19:00 -0700
committerVictor Morales <victor.morales@intel.com>2018-09-18 17:19:00 -0700
commit05274b1b149139d91445ca10a73defe41f14824a (patch)
tree2ad5e9169a521d29d0c909a271f1ff23b35d2dac /src/k8splugin/plugins/service/plugin_test.go
parentb368dfe25337494060eb8cd85a5becaf7a465643 (diff)
Add UTs to plugins
Deployment, service and namespace are plugins which offers CRUD operations to manage their resources. They haven't implemented Unit Tests which makes fragile to change/refactor the source code. This change adds their corresponding Unit Tests and defines a standard interface. Change-Id: I1e1eb40f1a18ba33c74069a117462c8df17767ac Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: MULTICLOUD-301
Diffstat (limited to 'src/k8splugin/plugins/service/plugin_test.go')
-rw-r--r--src/k8splugin/plugins/service/plugin_test.go199
1 files changed, 199 insertions, 0 deletions
diff --git a/src/k8splugin/plugins/service/plugin_test.go b/src/k8splugin/plugins/service/plugin_test.go
new file mode 100644
index 00000000..001467df
--- /dev/null
+++ b/src/k8splugin/plugins/service/plugin_test.go
@@ -0,0 +1,199 @@
+// +build unit
+
+/*
+Copyright 2018 Intel Corporation.
+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 main
+
+import (
+ "reflect"
+ "strings"
+ "testing"
+
+ "k8splugin/krd"
+
+ coreV1 "k8s.io/api/core/v1"
+ metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ testclient "k8s.io/client-go/kubernetes/fake"
+)
+
+func TestCreateService(t *testing.T) {
+ namespace := "test1"
+ name := "mock-service"
+ internalVNFID := "1"
+ testCases := []struct {
+ label string
+ input *krd.ResourceData
+ clientOutput *coreV1.Service
+ expectedResult string
+ expectedError string
+ }{
+ {
+ label: "Fail to create a service with non-existing file",
+ input: &krd.ResourceData{
+ YamlFilePath: "non-existing_test_file.yaml",
+ },
+ clientOutput: &coreV1.Service{},
+ expectedError: "not found",
+ },
+ {
+ label: "Fail to create a service with invalid type",
+ input: &krd.ResourceData{
+ YamlFilePath: "../../mock_files/mock_yamls/deployment.yaml",
+ },
+ clientOutput: &coreV1.Service{},
+ expectedError: "contains another resource different than Service",
+ },
+ {
+ label: "Successfully create a service",
+ input: &krd.ResourceData{
+ VnfId: internalVNFID,
+ YamlFilePath: "../../mock_files/mock_yamls/service.yaml",
+ },
+ clientOutput: &coreV1.Service{
+ ObjectMeta: metaV1.ObjectMeta{
+ Name: name,
+ Namespace: namespace,
+ },
+ },
+ expectedResult: internalVNFID + "-" + name,
+ },
+ }
+
+ for _, testCase := range testCases {
+ client := testclient.NewSimpleClientset(testCase.clientOutput)
+ t.Run(testCase.label, func(t *testing.T) {
+ result, err := Create(testCase.input, client)
+ if err != nil {
+ if !strings.Contains(string(err.Error()), testCase.expectedError) {
+ t.Fatalf("Create method returned an error (%s)", err)
+ }
+ }
+ if !reflect.DeepEqual(testCase.expectedResult, result) {
+ t.Fatalf("Create method returned %v and it was expected (%v)", result, testCase.expectedResult)
+ }
+ })
+ }
+}
+
+func TestListService(t *testing.T) {
+ namespace := "test1"
+ testCases := []struct {
+ label string
+ input string
+ clientOutput *coreV1.ServiceList
+ expectedResult []string
+ }{
+ {
+ label: "Sucessfully to display an empty service list",
+ input: namespace,
+ clientOutput: &coreV1.ServiceList{},
+ expectedResult: []string{},
+ },
+ {
+ label: "Sucessfully to display a list of existing services",
+ input: namespace,
+ clientOutput: &coreV1.ServiceList{
+ Items: []coreV1.Service{
+ coreV1.Service{
+ ObjectMeta: metaV1.ObjectMeta{
+ Name: "test",
+ Namespace: namespace,
+ },
+ },
+ },
+ },
+ expectedResult: []string{"test"},
+ },
+ }
+
+ for _, testCase := range testCases {
+ client := testclient.NewSimpleClientset(testCase.clientOutput)
+ t.Run(testCase.label, func(t *testing.T) {
+ result, err := List(testCase.input, client)
+ if err != nil {
+ t.Fatalf("List method returned an error (%s)", err)
+ }
+ if !reflect.DeepEqual(testCase.expectedResult, result) {
+ t.Fatalf("List method returned %v and it was expected (%v)", result, testCase.expectedResult)
+ }
+ })
+ }
+}
+
+func TestDeleteService(t *testing.T) {
+ namespace := "test1"
+ name := "mock-service"
+ testCases := []struct {
+ label string
+ input string
+ clientOutput *coreV1.Service
+ }{
+ {
+ label: "Sucessfully to delete an existing service",
+ input: name,
+ clientOutput: &coreV1.Service{
+ ObjectMeta: metaV1.ObjectMeta{
+ Name: name,
+ Namespace: namespace,
+ },
+ },
+ },
+ }
+
+ for _, testCase := range testCases {
+ client := testclient.NewSimpleClientset(testCase.clientOutput)
+ t.Run(testCase.label, func(t *testing.T) {
+ err := Delete(testCase.input, namespace, client)
+ if err != nil {
+ t.Fatalf("Delete method returned an error (%s)", err)
+ }
+ })
+ }
+}
+
+func TestGetService(t *testing.T) {
+ namespace := "test1"
+ name := "mock-service"
+ testCases := []struct {
+ label string
+ input string
+ clientOutput *coreV1.Service
+ expectedResult string
+ }{
+ {
+ label: "Sucessfully to get an existing service",
+ input: name,
+ clientOutput: &coreV1.Service{
+ ObjectMeta: metaV1.ObjectMeta{
+ Name: name,
+ Namespace: namespace,
+ },
+ },
+ expectedResult: name,
+ },
+ }
+
+ for _, testCase := range testCases {
+ client := testclient.NewSimpleClientset(testCase.clientOutput)
+ t.Run(testCase.label, func(t *testing.T) {
+ result, err := Get(testCase.input, namespace, client)
+ if err != nil {
+ t.Fatalf("Get method returned an error (%s)", err)
+ }
+ if !reflect.DeepEqual(testCase.expectedResult, result) {
+ t.Fatalf("Get method returned %v and it was expected (%v)", result, testCase.expectedResult)
+ }
+ })
+ }
+}