summaryrefslogtreecommitdiffstats
path: root/src/k8splugin/krd/plugins_test.go
diff options
context:
space:
mode:
authorVictor Morales <victor.morales@intel.com>2018-09-25 08:39:05 -0700
committerVictor Morales <victor.morales@intel.com>2018-09-25 08:39:05 -0700
commit5fe7119d93b68b1ee916dbe6a2c678395469df19 (patch)
tree0334e32aa1090c757eba9fcc9f66dfddcd02649a /src/k8splugin/krd/plugins_test.go
parentb7e7f8f659439ac1db7b42ad47828def65eb094c (diff)
Add UTs for plugins module
The KRD plugins module wasn't cover by Unit Tests that ensure their functionality. This change create Unit Tests that guarantees basic use cases. Change-Id: Idac9179bfb7b805ebadc60d9d1a41e73a6f13be7 Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: MULTICLOUD-301
Diffstat (limited to 'src/k8splugin/krd/plugins_test.go')
-rw-r--r--src/k8splugin/krd/plugins_test.go95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/k8splugin/krd/plugins_test.go b/src/k8splugin/krd/plugins_test.go
new file mode 100644
index 00000000..81d2784e
--- /dev/null
+++ b/src/k8splugin/krd/plugins_test.go
@@ -0,0 +1,95 @@
+// +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 krd
+
+import (
+ "strings"
+ "testing"
+
+ appsV1 "k8s.io/api/apps/v1"
+ coreV1 "k8s.io/api/core/v1"
+ metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+)
+
+func TestDecodeYAML(t *testing.T) {
+ testCases := []struct {
+ label string
+ input string
+ expectedResult runtime.Object
+ expectedError string
+ }{
+ {
+ label: "Fail to read non-existing YAML file",
+ input: "unexisting-file.yaml",
+ expectedError: "not found",
+ },
+ {
+ label: "Fail to read invalid YAML format",
+ input: "./plugins_test.go",
+ expectedError: "mapping values are not allowed in this contex",
+ },
+ {
+ label: "Successfully read YAML file",
+ input: "../mock_files/mock_yamls/deployment.yaml",
+ expectedResult: &appsV1.Deployment{
+ ObjectMeta: metaV1.ObjectMeta{
+ Name: "mock-deployment",
+ },
+ Spec: appsV1.DeploymentSpec{
+ Template: coreV1.PodTemplateSpec{
+ ObjectMeta: metaV1.ObjectMeta{
+ Labels: map[string]string{"app": "sise"},
+ },
+ Spec: coreV1.PodSpec{
+ Containers: []coreV1.Container{
+ coreV1.Container{
+ Name: "sise",
+ Image: "mhausenblas/simpleservice:0.5.0",
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ }
+
+ for _, testCase := range testCases {
+ t.Run(testCase.label, func(t *testing.T) {
+ result, err := DecodeYAML(testCase.input)
+ if err != nil {
+ if testCase.expectedError == "" {
+ t.Fatalf("Decode YAML method return an un-expected (%s)", err)
+ }
+ if !strings.Contains(string(err.Error()), testCase.expectedError) {
+ t.Fatalf("Decode YAML method returned an error (%s)", err)
+ }
+ } else {
+ if testCase.expectedError != "" && testCase.expectedResult == nil {
+ t.Fatalf("Decode YAML method was expecting \"%s\" error message", testCase.expectedError)
+ }
+ if result == nil {
+ t.Fatal("Decode YAML method returned nil result")
+ }
+ // if !reflect.DeepEqual(testCase.expectedResult, result) {
+
+ // t.Fatalf("Decode YAML method returned: \n%v\n and it was expected: \n%v", result, testCase.expectedResult)
+ // }
+ }
+ })
+ }
+}