+func TestUploadConfigAllSuccess(t *testing.T) {
+ var cfg interface{}
+ var expectedResult models.AllXappConfig
+ ns := "ricxapp"
+ xapps := []string{"anr", "appmgr", "dualco", "reporter", "uemgr"}
+
+ if ret := json.Unmarshal([]byte(cfgData), &cfg); ret != nil {
+ t.Errorf("UploadConfigAll Json unmarshal failed: %v", ret)
+ }
+
+ for i, _ := range xapps {
+ expectedResult = append(expectedResult,
+ &models.XAppConfig{
+ Config: cfg,
+ Metadata: &models.ConfigMetadata{
+ Namespace: &ns,
+ XappName: &xapps[i],
+ },
+ },
+ )
+ }
+
+ defer func() { resetHelmExecMock() }()
+ helmExec = mockedHelmExec
+ //Fake helm search success
+ helmExecRetOut = helmSearchOutput
+
+ defer func() { resetKubeExecMock() }()
+ kubeExec = mockedKubeExec
+ //Fake 'kubectl get configmap' success
+ kubeExecRetOut = strings.ReplaceAll(cfgData, "\\", "")
+
+ result := NewCM().UploadConfigAll()
+ if !reflect.DeepEqual(result, expectedResult) {
+ t.Errorf("UploadConfigAll failed: expected: %v, got: %v", expectedResult, result)
+ }
+ if caughtHelmExecArgs != expectedHelmSearchCmd {
+ t.Errorf("UploadConfigAll failed: expected: %v, got: %v", expectedHelmSearchCmd, caughtHelmExecArgs)
+ }
+ if !reflect.DeepEqual(caughtKubeExecArgs, expectedKubectlGetCmd) {
+ t.Errorf("UploadConfigAll failed: expected: %v, got: %v", expectedKubectlGetCmd, caughtKubeExecArgs)
+ }
+}
+
+func TestUploadConfigAllReturnsEmptyMapIfAllConfigMapReadsFail(t *testing.T) {
+ var expectedResult models.AllXappConfig
+
+ defer func() { resetHelmExecMock() }()
+ helmExec = mockedHelmExec
+ //Fake helm search success
+ helmExecRetOut = helmSearchOutput
+
+ defer func() { resetKubeExecMock() }()
+ kubeExec = mockedKubeExec
+ //Fake 'kubectl get configmap' failure
+ kubeExecRetErr = errors.New("some error")
+
+ result := NewCM().UploadConfigAll()
+ if !reflect.DeepEqual(result, expectedResult) {
+ t.Errorf("UploadConfigAll failed: expected: %v, got: %v", expectedResult, result)
+ }
+}
+
+func TestUploadConfigElementSuccess(t *testing.T) {
+ var cfg interface{}
+ var expectedResult models.AllXappConfig
+ ns := "ricxapp"
+ xapps := []string{"anr", "appmgr", "dualco", "reporter", "uemgr"}
+
+ if ret := json.Unmarshal([]byte(cfgData), &cfg); ret != nil {
+ t.Errorf("UploadConfigElement Json unmarshal failed: %v", ret)
+ }
+
+ for i, _ := range xapps {
+ expectedResult = append(expectedResult,
+ &models.XAppConfig{
+ Config: cfg.(map[string]interface{})["active"],
+ Metadata: &models.ConfigMetadata{
+ Namespace: &ns,
+ XappName: &xapps[i],
+ },
+ },
+ )
+ }
+
+ defer func() { resetHelmExecMock() }()
+ helmExec = mockedHelmExec
+ //Fake helm search success
+ helmExecRetOut = helmSearchOutput
+
+ defer func() { resetKubeExecMock() }()
+ kubeExec = mockedKubeExec
+ //Fake 'kubectl get configmap' success
+ kubeExecRetOut = strings.ReplaceAll(cfgData, "\\", "")
+
+ result := NewCM().UploadConfigElement("active")
+ if !reflect.DeepEqual(result, expectedResult) {
+ t.Errorf("UploadConfigElement failed: expected: %v, got: %v", expectedResult, result)
+ }
+ if caughtHelmExecArgs != expectedHelmSearchCmd {
+ t.Errorf("UploadConfigElement failed: expected: %v, got: %v", expectedHelmSearchCmd, caughtHelmExecArgs)
+ }
+ if !reflect.DeepEqual(caughtKubeExecArgs, expectedKubectlGetCmd) {
+ t.Errorf("UploadConfigElement failed: expected: %v, got: %v", expectedKubectlGetCmd, caughtKubeExecArgs)
+ }
+}
+
+func TestUploadConfigElementReturnsEmptyMapIfElementMissingFromConfigMap(t *testing.T) {
+ var expectedResult models.AllXappConfig
+
+ defer func() { resetHelmExecMock() }()
+ helmExec = mockedHelmExec
+ //Fake helm search success
+ helmExecRetOut = helmSearchOutput
+
+ defer func() { resetKubeExecMock() }()
+ kubeExec = mockedKubeExec
+ //Fake 'kubectl get configmap' success
+ kubeExecRetOut = strings.ReplaceAll(cfgData, "\\", "")
+
+ //Try to upload non-existing configuration element
+ result := NewCM().UploadConfigElement("some-not-existing-element")
+ if !reflect.DeepEqual(result, expectedResult) {
+ t.Errorf("UploadConfigElement failed: expected: %v, got: %v", expectedResult, result)
+ }
+}
+
+func TestGetRtmDataSuccess(t *testing.T) {
+ expectedKubeCmd := []string{
+ `get configmap -o jsonpath='{.data.config-file\.json}' -n ricxapp configmap-ricxapp-dummy-xapp-appconfig`,
+ }
+ expectedMsgs := appmgr.RtmData{
+ TxMessages: []string{"RIC_X2_LOAD_INFORMATION"},
+ RxMessages: []string{"RIC_X2_LOAD_INFORMATION"},
+ Policies: []int64{11, 22, 33},
+ }
+
+ defer func() { resetKubeExecMock() }()
+ kubeExec = mockedKubeExec
+ //Fake 'kubectl get configmap' success
+ kubeExecRetOut = kubectlConfigmapOutput
+
+ result := NewCM().GetRtmData("dummy-xapp")
+ if !reflect.DeepEqual(result, expectedMsgs) {
+ t.Errorf("GetRtmData failed: expected: %v, got: %v", expectedMsgs, result)
+ }
+ if !reflect.DeepEqual(caughtKubeExecArgs, expectedKubeCmd) {
+ t.Errorf("GetRtmData failed: expected: '%v', got: '%v'", expectedKubeCmd, caughtKubeExecArgs)
+ }
+}
+
+func TestGetRtmDataNewSuccess(t *testing.T) {
+ expectedKubeCmd := []string{
+ `get configmap -o jsonpath='{.data.config-file\.json}' -n ricxapp configmap-ricxapp-dummy-xapp-appconfig`,
+ }