From 2416ab0120bfe15cd3c5ef6cd0bbade288b32e7a Mon Sep 17 00:00:00 2001 From: Kiran Kamineni Date: Wed, 23 Jan 2019 12:54:50 -0800 Subject: Add support for parsing profile yaml files Add code to parse profile configuration yaml The parsing function is global and returns a client which can then be used to get or apply specific parts of the configuration on top of an extracted helm chart. P14: Add unit test that covers both ProcessProfileYaml and CopyConfigurationOverrides P15: Adding mock_charts and mock_profiles We expect to reuse these files for other unit tests Issue-ID: ONAPARC-348 Change-Id: I4504d0b158fdfef476b8c2a461d33306926545d7 Signed-off-by: Kiran Kamineni --- src/k8splugin/internal/rb/profile_yaml_test.go | 139 +++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 src/k8splugin/internal/rb/profile_yaml_test.go (limited to 'src/k8splugin/internal/rb/profile_yaml_test.go') diff --git a/src/k8splugin/internal/rb/profile_yaml_test.go b/src/k8splugin/internal/rb/profile_yaml_test.go new file mode 100644 index 00000000..c29bf9ed --- /dev/null +++ b/src/k8splugin/internal/rb/profile_yaml_test.go @@ -0,0 +1,139 @@ +// +build unit + +/* + * Copyright 2018 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 rb + +import ( + "os" + "path/filepath" + "strings" + "testing" +) + +func TestProcessProfileYaml(t *testing.T) { + + profileDir := "../../mock_files/mock_profiles/profile1" + manifestFile := "manifest.yaml" + faultymanifestfile := "faulty-manifest.yaml" + + testCases := []struct { + label string + prDir, manifest string + expectedError string + }{ + { + label: "Process Profile Yaml", + prDir: profileDir, + manifest: manifestFile, + expectedError: "", + }, + { + label: "Non existent manifest file", + prDir: profileDir, + manifest: "non-existant-file.yaml", + expectedError: "Reading manifest file", + }, + { + label: "Faulty manifest file", + prDir: profileDir, + manifest: faultymanifestfile, + expectedError: "Marshaling manifest yaml file", + }, + } + + for _, testCase := range testCases { + t.Run(testCase.label, func(t *testing.T) { + _, err := ProcessProfileYaml(testCase.prDir, testCase.manifest) + if err != nil { + if testCase.expectedError == "" { + t.Fatalf("Got an error %s", err) + } + if strings.Contains(err.Error(), testCase.expectedError) == false { + t.Fatalf("Got unexpected error message %s", err) + } + } + }) + } +} + +func TestCopyConfigurationOverrides(t *testing.T) { + + profileDir := "../../mock_files/mock_profiles/profile1" + profileFileName := "p1.yaml" + manifestFile := "manifest.yaml" + faultySrcManifestFile := "faulty-src-manifest.yaml" + faultyDestManifestFile := "faulty-dest-manifest.yaml" + chartBaseDir := "../../mock_files/mock_charts" + + //Remove the testchart1/templates/p1.yaml file that gets copied over + defer os.Remove(filepath.Join(chartBaseDir, "testchart1", "templates", profileFileName)) + + testCases := []struct { + label string + prDir, chDir, manifest string + expectedError string + }{ + { + label: "Copy Configuration Overrides", + prDir: profileDir, + manifest: manifestFile, + chDir: chartBaseDir, + expectedError: "", + }, + { + label: "Copy Configuration Overrides Faulty Source", + prDir: profileDir, + manifest: faultySrcManifestFile, + chDir: chartBaseDir, + expectedError: "Reading configuration file", + }, + { + label: "Copy Configuration Overrides Faulty Destination", + prDir: profileDir, + manifest: faultyDestManifestFile, + chDir: chartBaseDir, + expectedError: "Writing configuration file", + }, + } + + for _, testCase := range testCases { + t.Run(testCase.label, func(t *testing.T) { + p, err := ProcessProfileYaml(testCase.prDir, testCase.manifest) + if err != nil { + t.Fatalf("Got unexpected error processing yaml %s", err) + } + + err = p.CopyConfigurationOverrides(testCase.chDir) + if err != nil { + if testCase.expectedError == "" { + t.Fatalf("Got error %s", err) + } + if strings.Contains(err.Error(), testCase.expectedError) == false { + t.Fatalf("Got unexpected error message %s", err) + } + + } else { + //Check if the file got copied over + if _, err = os.Stat(filepath.Join(testCase.chDir, "testchart1", + "templates", profileFileName)); os.IsNotExist(err) { + t.Fatalf("Failed to copy override file: %s", profileFileName) + } + } + }) + } +} -- cgit 1.2.3-korg