Enabling helm3 Support for appmgr.
[ric-plt/appmgr.git] / pkg / helm / helm_test.go
index 1bfdb22..1f54c29 100755 (executable)
 package helm
 
 import (
-       "errors"
-       "github.com/spf13/viper"
-       "os"
-       "reflect"
-       "strconv"
-       "strings"
-       "testing"
-
-       "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/appmgr"
-       "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/models"
-       "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/util"
+        "errors"
+        "github.com/spf13/viper"
+        "os"
+        "reflect"
+        "strconv"
+        "strings"
+        "testing"
+        "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/cm"
+        "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/appmgr"
+        "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/models"
+        "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/util"
 )
 
 var caughtKubeExecArgs string
@@ -143,473 +143,507 @@ var kubeServiceOutput = `{
 
 // Test cases
 func TestMain(m *testing.M) {
-       appmgr.Init()
-       appmgr.Logger.SetLevel(0)
+        appmgr.Init()
+        appmgr.Logger.SetLevel(0)
 
-       code := m.Run()
-       os.Exit(code)
+        code := m.Run()
+        os.Exit(code)
 }
 
 func TestInit(t *testing.T) {
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
+        defer func() { resetHelmExecMock() }()
+        var expectedHelmCommand string = ""
+        helmExec = mockedHelmExec
 
-       NewHelm().Init()
+        NewHelm().Init()
 
-       expectedHelmCommand := "init -c --skip-refresh"
-       if caughtHelmExecArgs != expectedHelmCommand {
-               t.Errorf("Init failed: expected %v, got %v", expectedHelmCommand, caughtHelmExecArgs)
-       }
+        if cm.EnvHelmVersion == cm.HELM_VERSION_2{
+                expectedHelmCommand = "init -c --skip-refresh"
+                if caughtHelmExecArgs != expectedHelmCommand {
+                        t.Errorf("Init failed: expected %v, got %v", expectedHelmCommand, caughtHelmExecArgs)
+                }
+        }
 }
 
 func TestAddRepoSuccess(t *testing.T) {
-       defer func() {
-               resetHelmExecMock()
-               removeTestUsernameFile()
-               removeTestPasswordFile()
-       }()
-       helmExec = mockedHelmExec
-
-       if err := writeTestUsernameFile(); err != nil {
-               t.Errorf("AddRepo username file create failed: %s", err)
-               return
-       }
-       if err := writeTestPasswordFile(); err != nil {
-               t.Errorf("AddRepo password file create failed: %s", err)
-               return
-       }
-
-       if _, err := NewHelm().AddRepo(); err != nil {
-               t.Errorf("AddRepo failed: %v", err)
-       }
-
-       if !strings.Contains(caughtHelmExecArgs, "repo add") {
-               t.Errorf("AddRepo failed: expected %v, got %v", "repo add", caughtHelmExecArgs)
-       }
+        defer func() {
+                resetHelmExecMock()
+                removeTestUsernameFile()
+                removeTestPasswordFile()
+        }()
+        helmExec = mockedHelmExec
+
+        if err := writeTestUsernameFile(); err != nil {
+                t.Errorf("AddRepo username file create failed: %s", err)
+                return
+        }
+        if err := writeTestPasswordFile(); err != nil {
+                t.Errorf("AddRepo password file create failed: %s", err)
+                return
+        }
+
+        if _, err := NewHelm().AddRepo(); err != nil {
+                t.Errorf("AddRepo failed: %v", err)
+        }
+
+        if !strings.Contains(caughtHelmExecArgs, "repo add") {
+                t.Errorf("AddRepo failed: expected %v, got %v", "repo add", caughtHelmExecArgs)
+        }
 }
 
 func TestAddRepoReturnsErrorIfNoUsernameFile(t *testing.T) {
-       if _, err := NewHelm().AddRepo(); err == nil {
-               t.Errorf("AddRepo expected to fail but it didn't")
-       }
+        if _, err := NewHelm().AddRepo(); err == nil {
+                t.Errorf("AddRepo expected to fail but it didn't")
+        }
 }
 
 func TestAddRepoReturnsErrorIfNoPasswordFile(t *testing.T) {
-       defer func() { resetHelmExecMock(); removeTestUsernameFile() }()
-       helmExec = mockedHelmExec
+        defer func() { resetHelmExecMock(); removeTestUsernameFile() }()
+        helmExec = mockedHelmExec
 
-       if err := writeTestUsernameFile(); err != nil {
-               t.Errorf("AddRepo username file create failed: %s", err)
-               return
-       }
-       if _, err := NewHelm().AddRepo(); err == nil {
-               t.Errorf("AddRepo expected to fail but it didn't")
-       }
+        if err := writeTestUsernameFile(); err != nil {
+                t.Errorf("AddRepo username file create failed: %s", err)
+                return
+        }
+        if _, err := NewHelm().AddRepo(); err == nil {
+                t.Errorf("AddRepo expected to fail but it didn't")
+        }
 }
 
 func TestInstallSuccess(t *testing.T) {
-       name := "dummy-xapp"
-       xappDesc := models.XappDescriptor{XappName: &name, Namespace: "ricxapp"}
+        name := "dummy-xapp"
+        xappDesc := models.XappDescriptor{XappName: &name, Namespace: "ricxapp"}
 
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetOut = helmStatusOutput
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetOut = helmStatusOutput
 
-       defer func() { resetKubeExecMock() }()
-       kubeExec = mockedKubeExec
-       kubeExecRetOut = kubeServiceOutput
+        defer func() { resetKubeExecMock() }()
+        kubeExec = mockedKubeExec
+        kubeExecRetOut = kubeServiceOutput
 
-       xapp, err := NewHelm().Install(xappDesc)
-       if err != nil {
-               t.Errorf("Install failed: %v", err)
-       }
-       validateXappModel(t, xapp)
+        xapp, err := NewHelm().Install(xappDesc)
+        if err != nil {
+                t.Errorf("Install failed: %v", err)
+        }
+        validateXappModel(t, xapp)
 }
 
 func TestInstallReturnsErrorIfHelmRepoUpdateFails(t *testing.T) {
-       name := "dummy-xapp"
-       xappDesc := models.XappDescriptor{XappName: &name, Namespace: "ricxapp"}
+        name := "dummy-xapp"
+        xappDesc := models.XappDescriptor{XappName: &name, Namespace: "ricxapp"}
 
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetErr = errors.New("some helm command error")
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetErr = errors.New("some helm command error")
 
-       if _, err := NewHelm().Install(xappDesc); err == nil {
-               t.Errorf("Install expected to fail but it didn't")
-       }
+        if _, err := NewHelm().Install(xappDesc); err == nil {
+                t.Errorf("Install expected to fail but it didn't")
+        }
 }
 
 func TestStatusSuccess(t *testing.T) {
-       name := "dummy-xapp"
+        name := "dummy-xapp"
 
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetOut = helmStatusOutput
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetOut = helmStatusOutput
 
-       xapp, err := NewHelm().Status(name)
-       if err != nil {
-               t.Errorf("Status failed: %v", err)
-       }
-       validateXappModel(t, xapp)
+        xapp, err := NewHelm().Status(name)
+        if err != nil {
+                t.Errorf("Status failed: %v", err)
+        }
+        validateXappModel(t, xapp)
 }
 
 func TestStatusReturnsErrorIfHelmStatusFails(t *testing.T) {
-       name := "dummy-xapp"
+        name := "dummy-xapp"
 
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetErr = errors.New("some helm command error")
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetErr = errors.New("some helm command error")
 
-       if _, err := NewHelm().Status(name); err == nil {
-               t.Errorf("Status expected to fail but it didn't")
-       }
+        if _, err := NewHelm().Status(name); err == nil {
+                t.Errorf("Status expected to fail but it didn't")
+        }
 }
 
 func TestParseStatusSuccess(t *testing.T) {
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetOut = helListOutput
+        defer func() { resetHelmExecMock() }()
+        var expectedHelmCommand string = ""
+        helmExec = mockedHelmExec
+        helmExecRetOut = helListOutput
 
-       defer func() { resetKubeExecMock() }()
-       kubeExec = mockedKubeExec
-       kubeExecRetOut = kubeServiceOutput
+        defer func() { resetKubeExecMock() }()
+        kubeExec = mockedKubeExec
+        kubeExecRetOut = kubeServiceOutput
 
-       xapp, err := NewHelm().ParseStatus("dummy-xapp", helmStatusOutput)
-       if err != nil {
-               t.Errorf("ParseStatus failed: %v", err)
-       }
+        xapp, err := NewHelm().ParseStatus("dummy-xapp", helmStatusOutput)
+        if err != nil {
+                t.Errorf("ParseStatus failed: %v", err)
+        }
 
-       validateXappModel(t, xapp)
+        validateXappModel(t, xapp)
 
-       expectedHelmCommand := "list --deployed --output yaml --namespace=ricxapp dummy-xapp"
-       if caughtHelmExecArgs != expectedHelmCommand {
-               t.Errorf("ParseStatus failed: expected %v, got %v", expectedHelmCommand, caughtHelmExecArgs)
-       }
+        if cm.EnvHelmVersion == cm.HELM_VERSION_2 {
+                expectedHelmCommand = "list --deployed --output yaml --namespace=ricxapp dummy-xapp"
+        }else {
+                expectedHelmCommand = "list --deployed --output yaml --namespace=ricxapp -f dummy-xapp"
+        }
+        if caughtHelmExecArgs != expectedHelmCommand {
+                t.Errorf("ParseStatus failed: expected %v, got %v", expectedHelmCommand, caughtHelmExecArgs)
+        }
 }
 
 func TestListSuccess(t *testing.T) {
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetOut = helListAllOutput
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetOut = helListAllOutput
 
-       names, err := NewHelm().List()
-       if err != nil {
-               t.Errorf("List failed: %v", err)
-       }
+        names, err := NewHelm().List()
+        if err != nil {
+                t.Errorf("List failed: %v", err)
+        }
 
-       if !reflect.DeepEqual(names, []string{"dummy-xapp", "dummy-xapp2"}) {
-               t.Errorf("List failed: %v", err)
-       }
-       expectedHelmCommand := "list --all --deployed --output yaml --namespace=ricxapp"
-       if caughtHelmExecArgs != expectedHelmCommand {
-               t.Errorf("List: expected %v, got %v", expectedHelmCommand, caughtHelmExecArgs)
-       }
+        if !reflect.DeepEqual(names, []string{"dummy-xapp", "dummy-xapp2"}) {
+                t.Errorf("List failed: %v", err)
+        }
+        expectedHelmCommand := "list --all --deployed --output yaml --namespace=ricxapp"
+        if caughtHelmExecArgs != expectedHelmCommand {
+                t.Errorf("List: expected %v, got %v", expectedHelmCommand, caughtHelmExecArgs)
+        }
 }
 
 func TestListReturnsErrorIfHelmListFails(t *testing.T) {
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetErr = errors.New("some helm command error")
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetErr = errors.New("some helm command error")
 
-       if _, err := NewHelm().List(); err == nil {
-               t.Errorf("List expected to fail but it didn't")
-       }
+        if _, err := NewHelm().List(); err == nil {
+                t.Errorf("List expected to fail but it didn't")
+        }
 }
 
 func TestDeleteSuccess(t *testing.T) {
-       name := "dummy-xapp"
+        name := "dummy-xapp"
 
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetOut = helmStatusOutput
+        var expectedHelmCommand string = ""
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetOut = helmStatusOutput
 
-       defer func() { resetKubeExecMock() }()
-       kubeExec = mockedKubeExec
-       kubeExecRetOut = kubeServiceOutput
+        defer func() { resetKubeExecMock() }()
+        kubeExec = mockedKubeExec
+        kubeExecRetOut = kubeServiceOutput
 
-       xapp, err := NewHelm().Delete(name)
-       if err != nil {
-               t.Errorf("Delete failed: %v", err)
-       }
+        xapp, err := NewHelm().Delete(name)
+        if err != nil {
+                t.Errorf("Delete failed: %v", err)
+        }
 
-       validateXappModel(t, xapp)
+        validateXappModel(t, xapp)
 
-       expectedHelmCommand := "del --purge dummy-xapp"
-       if caughtHelmExecArgs != expectedHelmCommand {
-               t.Errorf("Delete failed: expected %v, got %v", expectedHelmCommand, caughtHelmExecArgs)
-       }
+        if cm.EnvHelmVersion == cm.HELM_VERSION_2 {
+                expectedHelmCommand = "del --purge dummy-xapp"
+        } else {
+                expectedHelmCommand =   "uninstall dummy-xapp -n ricxapp"
+        }
+        if caughtHelmExecArgs != expectedHelmCommand {
+                t.Errorf("Delete failed: expected %v, got %v", expectedHelmCommand, caughtHelmExecArgs)
+        }
 }
 
 func TestDeleteReturnsErrorIfHelmStatusFails(t *testing.T) {
-       name := "dummy-xapp"
+        name := "dummy-xapp"
 
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetErr = errors.New("some helm command error")
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetErr = errors.New("some helm command error")
 
-       if _, err := NewHelm().Delete(name); err == nil {
-               t.Errorf("Delete expected to fail but it didn't")
-       }
+        if _, err := NewHelm().Delete(name); err == nil {
+                t.Errorf("Delete expected to fail but it didn't")
+        }
 }
 
 func TestFetchSuccessIfCmdArgHasTestSuffix(t *testing.T) {
-       if err := NewHelm().Fetch("kissa", "koira"); err != nil {
-               t.Errorf("Fetch failed: %v", err)
-       }
+        if err := NewHelm().Fetch("kissa", "koira"); err != nil {
+                t.Errorf("Fetch failed: %v", err)
+        }
 }
 
 func TestGetVersionSuccess(t *testing.T) {
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetOut = helListOutput
+        defer func() { resetHelmExecMock() }()
+        var expectedHelmCommand string = ""
+        helmExec = mockedHelmExec
+        helmExecRetOut = helListOutput
 
-       if version := NewHelm().GetVersion("dummy-xapp"); version != "1.0" {
-               t.Errorf("GetVersion failed: expected 1.0, got %v", version)
-       }
+        if version := NewHelm().GetVersion("dummy-xapp"); version != "1.0" {
+                t.Errorf("GetVersion failed: expected 1.0, got %v", version)
+        }
 
-       expectedHelmCommand := "list --deployed --output yaml --namespace=ricxapp dummy-xapp"
-       if caughtHelmExecArgs != expectedHelmCommand {
-               t.Errorf("GetVersion failed: expected %v, got %v", expectedHelmCommand, caughtHelmExecArgs)
-       }
+        if cm.EnvHelmVersion == cm.HELM_VERSION_2{
+                expectedHelmCommand = "list --deployed --output yaml --namespace=ricxapp dummy-xapp"
+        }else {
+                expectedHelmCommand = "list --deployed --output yaml --namespace=ricxapp -f dummy-xapp"
+        }
+        if caughtHelmExecArgs != expectedHelmCommand {
+                t.Errorf("GetVersion failed: expected %v, got %v", expectedHelmCommand, caughtHelmExecArgs)
+        }
 }
 
 func TestGetVersionReturnsEmptyStringIfHelmListFails(t *testing.T) {
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetErr = errors.New("some helm command error")
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetErr = errors.New("some helm command error")
 
-       if version := NewHelm().GetVersion("dummy-xapp"); version != "" {
-               t.Errorf("GetVersion expected to return empty string, got %v", version)
-       }
+        if version := NewHelm().GetVersion("dummy-xapp"); version != "" {
+                t.Errorf("GetVersion expected to return empty string, got %v", version)
+        }
 }
 
 func TestGetAddressSuccess(t *testing.T) {
-       ip, port := NewHelm().GetAddress(helmStatusOutput)
-       if ip != "10.102.184.212" {
-               t.Errorf("GetAddress failed: expected 10.102.184.212, got %v", ip)
-       }
-       if port != "80/TCP" {
-               t.Errorf("GetAddress failed: expected 80/TCP, got %v", port)
-       }
+        ip, port := NewHelm().GetAddress(helmStatusOutput)
+        if ip != "10.102.184.212" {
+                t.Errorf("GetAddress failed: expected 10.102.184.212, got %v", ip)
+        }
+        if port != "80/TCP" {
+                t.Errorf("GetAddress failed: expected 80/TCP, got %v", port)
+        }
 }
 
 func TestGetEndpointInfoSuccess(t *testing.T) {
-       defer func() { resetKubeExecMock() }()
-       kubeExec = mockedKubeExec
-       kubeExecRetOut = kubeServiceOutput
-
-       svc, port := NewHelm().GetEndpointInfo("dummy-xapp")
-       expectedSvc := "service-ricxapp-dummy-xapp-rmr.ricxapp"
-       if svc != expectedSvc {
-               t.Errorf("GetEndpointInfo failed: expected %v, got %v", expectedSvc, svc)
-       }
-       if port != 4560 {
-               t.Errorf("GetEndpointInfo failed: expected port 4560, got %v", port)
-       }
-       expectedKubeCommand := " get service -n ricxapp service-ricxapp-dummy-xapp-rmr -o json"
-       if caughtKubeExecArgs != expectedKubeCommand {
-               t.Errorf("GetEndpointInfo failed: expected %v, got %v", expectedKubeCommand, caughtKubeExecArgs)
-       }
+        defer func() { resetKubeExecMock() }()
+        kubeExec = mockedKubeExec
+        kubeExecRetOut = kubeServiceOutput
+
+        svc, port := NewHelm().GetEndpointInfo("dummy-xapp")
+        expectedSvc := "service-ricxapp-dummy-xapp-rmr.ricxapp"
+        if svc != expectedSvc {
+                t.Errorf("GetEndpointInfo failed: expected %v, got %v", expectedSvc, svc)
+        }
+        if port != 4560 {
+                t.Errorf("GetEndpointInfo failed: expected port 4560, got %v", port)
+        }
+        expectedKubeCommand := " get service -n ricxapp service-ricxapp-dummy-xapp-rmr -o json"
+        if caughtKubeExecArgs != expectedKubeCommand {
+                t.Errorf("GetEndpointInfo failed: expected %v, got %v", expectedKubeCommand, caughtKubeExecArgs)
+        }
 }
 
 func TestGetEndpointInfoReturnsDefaultPortIfJsonParseFails(t *testing.T) {
-       defer func() { resetKubeExecMock() }()
-       kubeExec = mockedKubeExec
-       kubeExecRetOut = "not-json-syntax"
+        defer func() { resetKubeExecMock() }()
+        kubeExec = mockedKubeExec
+        kubeExecRetOut = "not-json-syntax"
 
-       svc, port := NewHelm().GetEndpointInfo("dummy-xapp")
-       expectedSvc := "service-ricxapp-dummy-xapp-rmr.ricxapp"
-       if svc != expectedSvc {
-               t.Errorf("GetEndpointInfo failed: expected %v, got %v", expectedSvc, svc)
-       }
-       if port != 4560 {
-               t.Errorf("GetEndpointInfo failed: expected port 4560, got %v", port)
-       }
+        svc, port := NewHelm().GetEndpointInfo("dummy-xapp")
+        expectedSvc := "service-ricxapp-dummy-xapp-rmr.ricxapp"
+        if svc != expectedSvc {
+                t.Errorf("GetEndpointInfo failed: expected %v, got %v", expectedSvc, svc)
+        }
+        if port != 4560 {
+                t.Errorf("GetEndpointInfo failed: expected port 4560, got %v", port)
+        }
 }
 
 func TestGetEndpointInfoReturnsDefaultPortIfKubeGetServiceFails(t *testing.T) {
-       defer func() { resetKubeExecMock() }()
-       kubeExec = mockedKubeExec
-       kubeExecRetErr = errors.New("some helm command error")
+        defer func() { resetKubeExecMock() }()
+        kubeExec = mockedKubeExec
+        kubeExecRetErr = errors.New("some helm command error")
 
-       svc, port := NewHelm().GetEndpointInfo("dummy-xapp")
-       expectedSvc := "service-ricxapp-dummy-xapp-rmr.ricxapp"
-       if svc != expectedSvc {
-               t.Errorf("GetEndpointInfo failed: expected %v, got %v", expectedSvc, svc)
-       }
-       if port != 4560 {
-               t.Errorf("GetEndpointInfo failed: expected port 4560, got %v", port)
-       }
+        svc, port := NewHelm().GetEndpointInfo("dummy-xapp")
+        expectedSvc := "service-ricxapp-dummy-xapp-rmr.ricxapp"
+        if svc != expectedSvc {
+                t.Errorf("GetEndpointInfo failed: expected %v, got %v", expectedSvc, svc)
+        }
+        if port != 4560 {
+                t.Errorf("GetEndpointInfo failed: expected port 4560, got %v", port)
+        }
 }
 
 func TestHelmStatusAllSuccess(t *testing.T) {
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetOut = helListAllOutput
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetOut = helListAllOutput
 
-       if _, err := NewHelm().StatusAll(); err != nil {
-               t.Errorf("StatusAll failed: %v", err)
-       }
-       // Todo: check StatusAll response content
+        if _, err := NewHelm().StatusAll(); err != nil {
+                t.Errorf("StatusAll failed: %v", err)
+        }
+        // Todo: check StatusAll response content
 }
 
 func TestStatusAllReturnsErrorIfHelmListFails(t *testing.T) {
-       defer func() { resetHelmExecMock() }()
-       helmExec = mockedHelmExec
-       helmExecRetErr = errors.New("some helm command error")
+        defer func() { resetHelmExecMock() }()
+        helmExec = mockedHelmExec
+        helmExecRetErr = errors.New("some helm command error")
 
-       if _, err := NewHelm().StatusAll(); err == nil {
-               t.Errorf("StatusAll expected to fail but it didn't")
-       }
+        if _, err := NewHelm().StatusAll(); err == nil {
+                t.Errorf("StatusAll expected to fail but it didn't")
+        }
 }
 
 func TestGetNamesSuccess(t *testing.T) {
-       names, err := NewHelm().GetNames(helListAllOutput)
-       if err != nil {
-               t.Errorf("GetNames failed: %v", err)
-       }
-       if !reflect.DeepEqual(names, []string{"dummy-xapp", "dummy-xapp2"}) {
-               t.Errorf("GetNames failed: %v", err)
-       }
+        names, err := NewHelm().GetNames(helListAllOutput)
+        if err != nil {
+                t.Errorf("GetNames failed: %v", err)
+        }
+        if !reflect.DeepEqual(names, []string{"dummy-xapp", "dummy-xapp2"}) {
+                t.Errorf("GetNames failed: %v", err)
+        }
 }
 
 func TestAddTillerEnv(t *testing.T) {
-       if NewHelm().AddTillerEnv() != nil {
-               t.Errorf("AddTillerEnv failed!")
-       }
+        if NewHelm().AddTillerEnv() != nil {
+                t.Errorf("AddTillerEnv failed!")
+        }
 }
 
 func TestGetInstallArgs(t *testing.T) {
-       name := "dummy-xapp"
-       x := models.XappDescriptor{XappName: &name, Namespace: "ricxapp"}
-
-       expectedArgs := "install helm-repo/dummy-xapp  --namespace=ricxapp --name=dummy-xapp"
-       if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
-               t.Errorf("GetInstallArgs failed: expected %v, got %v", expectedArgs, args)
-       }
-
-       expectedArgs += " --set ricapp.appconfig.override=dummy-xapp-appconfig"
-       if args := NewHelm().GetInstallArgs(x, true); args != expectedArgs {
-               t.Errorf("GetInstallArgs failed: expected %v, got %v", expectedArgs, args)
-       }
-
-       x.HelmVersion = "1.2.3"
-       expectedArgs = "install helm-repo/dummy-xapp  --namespace=ricxapp --version=1.2.3 --name=dummy-xapp"
-       if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
-               t.Errorf("GetInstallArgs failed: expected %v, got %v", expectedArgs, args)
-       }
-
-       x.ReleaseName = "ueec-xapp"
-       expectedArgs = "install helm-repo/dummy-xapp  --namespace=ricxapp --version=1.2.3 --name=ueec-xapp"
-       if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
-               t.Errorf("GetInstallArgs failed: expected %v, got %v", expectedArgs, args)
-       }
-
-       x.OverrideFile = "../../test/dummy-xapp_values.json"
-       expectedArgs += " -f=/tmp/appmgr_override.yaml"
-       if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
-               t.Errorf("GetInstallArgs failed: expected %v, got %v", expectedArgs, args)
-       }
+        name := "dummy-xapp"
+        var expectedArgs string = ""
+
+        x := models.XappDescriptor{XappName: &name, Namespace: "ricxapp"}
+
+        if cm.EnvHelmVersion == cm.HELM_VERSION_3 {
+                expectedArgs = "install dummy-xapp helm-repo/dummy-xapp --namespace=ricxapp"
+        }else {
+                expectedArgs = "install helm-repo/dummy-xapp --namespace=ricxapp --name=dummy-xapp"
+        }
+
+        if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
+                t.Errorf("GetInstallArgs failed: expected '%v', got '%v'", expectedArgs, args)
+        }
+
+        expectedArgs += " --set ricapp.appconfig.override=dummy-xapp-appconfig"
+        if args := NewHelm().GetInstallArgs(x, true); args != expectedArgs {
+                t.Errorf("GetInstallArgs failed: expected %v, got %v", expectedArgs, args)
+        }
+
+        x.HelmVersion = "1.2.3"
+        if cm.EnvHelmVersion == cm.HELM_VERSION_3 {
+                expectedArgs = "install dummy-xapp helm-repo/dummy-xapp --namespace=ricxapp --version=1.2.3"
+        } else {
+                expectedArgs = "install helm-repo/dummy-xapp --namespace=ricxapp --version=1.2.3 --name=dummy-xapp"
+        }
+        if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
+                t.Errorf("GetInstallArgs failed: expected %v, got %v", expectedArgs, args)
+        }
+
+
+        x.ReleaseName = "ueec-xapp"
+        if cm.EnvHelmVersion == cm.HELM_VERSION_3 {
+                expectedArgs = "install dummy-xapp helm-repo/dummy-xapp --namespace=ricxapp --version=1.2.3"
+        } else {
+                expectedArgs = "install helm-repo/dummy-xapp --namespace=ricxapp --version=1.2.3 --name=ueec-xapp"
+        }
+        if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
+                t.Errorf("GetInstallArgs failed: expected %v, got %v", expectedArgs, args)
+        }
+
+        x.OverrideFile = "../../test/dummy-xapp_values.json"
+        expectedArgs += " -f=/tmp/appmgr_override.yaml"
+        if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
+                t.Errorf("GetInstallArgs failed: expected %v, got %v", expectedArgs, args)
+        }
 }
 
 func writeTestUsernameFile() error {
-       f, err := os.Create(viper.GetString("helm.helm-username-file"))
-       if err != nil {
-               return err
-       }
-       _, err = f.WriteString("some-username")
-       f.Close()
-       return err
+        f, err := os.Create(viper.GetString("helm.helm-username-file"))
+        if err != nil {
+                return err
+        }
+        _, err = f.WriteString("some-username")
+        f.Close()
+        return err
 }
 
 func removeTestUsernameFile() error {
-       return os.Remove(viper.GetString("helm.helm-username-file"))
+        return os.Remove(viper.GetString("helm.helm-username-file"))
 }
 
 func writeTestPasswordFile() (err error) {
-       f, err := os.Create(viper.GetString("helm.helm-password-file"))
-       if err != nil {
-               return err
-       }
+        f, err := os.Create(viper.GetString("helm.helm-password-file"))
+        if err != nil {
+                return err
+        }
 
-       _, err = f.WriteString("some-password")
-       f.Close()
-       return err
+        _, err = f.WriteString("some-password")
+        f.Close()
+        return err
 }
 
 func removeTestPasswordFile() error {
-       return os.Remove(viper.GetString("helm.helm-password-file"))
+        return os.Remove(viper.GetString("helm.helm-password-file"))
 }
 
 func getXappData() (x models.Xapp) {
-       //name1 := "dummy-xapp-8984fc9fd-l6xch"
-       //name2 := "dummy-xapp-8984fc9fd-pp4hg"
-       x = generateXapp("dummy-xapp", "deployed", "1.0", "dummy-xapp-8984fc9fd-bkcbp", "running", "service-ricxapp-dummy-xapp-rmr.ricxapp", "4560")
-       //x.Instances = append(x.Instances, x.Instances[0])
-       //x.Instances = append(x.Instances, x.Instances[0])
-       //x.Instances[1].Name = &name1
-       //x.Instances[2].Name = &name2
+        //name1 := "dummy-xapp-8984fc9fd-l6xch"
+        //name2 := "dummy-xapp-8984fc9fd-pp4hg"
+        x = generateXapp("dummy-xapp", "deployed", "1.0", "dummy-xapp-8984fc9fd-bkcbp", "running", "service-ricxapp-dummy-xapp-rmr.ricxapp", "4560")
+        //x.Instances = append(x.Instances, x.Instances[0])
+        //x.Instances = append(x.Instances, x.Instances[0])
+        //x.Instances[1].Name = &name1
+        //x.Instances[2].Name = &name2
 
-       return x
+        return x
 }
 
 func generateXapp(name, status, ver, iname, istatus, ip, port string) (x models.Xapp) {
-       x.Name = &name
-       x.Status = status
-       x.Version = ver
-       p, _ := strconv.Atoi(port)
-       var msgs appmgr.RtmData
+        x.Name = &name
+        x.Status = status
+        x.Version = ver
+        p, _ := strconv.Atoi(port)
+        var msgs appmgr.RtmData
 
-       instance := &models.XappInstance{
-               Name:       &iname,
-               Status:     istatus,
-               IP:         ip,
-               Port:       int64(p),
-               TxMessages: msgs.TxMessages,
-               RxMessages: msgs.RxMessages,
-       }
-       x.Instances = append(x.Instances, instance)
+        instance := &models.XappInstance{
+                Name:       &iname,
+                Status:     istatus,
+                IP:         ip,
+                Port:       int64(p),
+                TxMessages: msgs.TxMessages,
+                RxMessages: msgs.RxMessages,
+        }
+        x.Instances = append(x.Instances, instance)
 
-       return
+        return
 }
 
 func mockedKubeExec(args string) (out []byte, err error) {
-       caughtKubeExecArgs = args
-       return []byte(kubeExecRetOut), kubeExecRetErr
+        caughtKubeExecArgs = args
+        return []byte(kubeExecRetOut), kubeExecRetErr
 }
 
 func resetKubeExecMock() {
-       kubeExec = util.KubectlExec
-       caughtKubeExecArgs = ""
-       kubeExecRetOut = ""
-       kubeExecRetErr = nil
+        kubeExec = util.KubectlExec
+        caughtKubeExecArgs = ""
+        kubeExecRetOut = ""
+        kubeExecRetErr = nil
 }
 
 func mockedHelmExec(args string) (out []byte, err error) {
-       caughtHelmExecArgs = args
-       return []byte(helmExecRetOut), helmExecRetErr
+        caughtHelmExecArgs = args
+        return []byte(helmExecRetOut), helmExecRetErr
 }
 
 func resetHelmExecMock() {
-       helmExec = util.HelmExec
-       caughtHelmExecArgs = ""
-       helmExecRetOut = ""
-       helmExecRetErr = nil
+        helmExec = util.HelmExec
+        caughtHelmExecArgs = ""
+        helmExecRetOut = ""
+        helmExecRetErr = nil
 }
 
 func validateXappModel(t *testing.T, xapp models.Xapp) {
-       expXapp := getXappData()
-       xapp.Version = "1.0"
+        expXapp := getXappData()
+        xapp.Version = "1.0"
 
-       if *expXapp.Name != *xapp.Name || expXapp.Status != xapp.Status || expXapp.Version != xapp.Version {
-               t.Errorf("\n%v \n%v", *xapp.Name, *expXapp.Name)
-       }
+        if *expXapp.Name != *xapp.Name || expXapp.Status != xapp.Status || expXapp.Version != xapp.Version {
+                t.Errorf("\n%v \n%v", *xapp.Name, *expXapp.Name)
+        }
 
-       if *expXapp.Instances[0].Name != *xapp.Instances[0].Name || expXapp.Instances[0].Status != xapp.Instances[0].Status {
-               t.Errorf("\n1:%v 2:%v", *expXapp.Instances[0].Name, *xapp.Instances[0].Name)
-       }
+        if *expXapp.Instances[0].Name != *xapp.Instances[0].Name || expXapp.Instances[0].Status != xapp.Instances[0].Status {
+                t.Errorf("\n1:%v 2:%v", *expXapp.Instances[0].Name, *xapp.Instances[0].Name)
+        }
 
-       if expXapp.Instances[0].IP != xapp.Instances[0].IP || expXapp.Instances[0].Port != xapp.Instances[0].Port {
-               t.Errorf("\n%v - %v, %v - %v", expXapp.Instances[0].IP, xapp.Instances[0].IP, expXapp.Instances[0].Port, xapp.Instances[0].Port)
-       }
+        if expXapp.Instances[0].IP != xapp.Instances[0].IP || expXapp.Instances[0].Port != xapp.Instances[0].Port {
+                t.Errorf("\n%v - %v, %v - %v", expXapp.Instances[0].IP, xapp.Instances[0].IP, expXapp.Instances[0].Port, xapp.Instances[0].Port)
+        }
 }