Test case for custom onboard API
[ric-plt/ricdms.git] / pkg / resthooks / resthooks_test.go
index 991fbec..a40f7d7 100644 (file)
@@ -1,22 +1,23 @@
-//==================================================================================
-//  Copyright (c) 2022 Samsung
+// ==================================================================================
 //
-//   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
+//     Copyright (c) 2022 Samsung
 //
-//       http://www.apache.org/licenses/LICENSE-2.0
+//      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
 //
-//   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.
+//          http://www.apache.org/licenses/LICENSE-2.0
 //
-//   This source code is part of the near-RT RIC (RAN Intelligent Controller)
-//   platform project (RICP).
-//==================================================================================
+//      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.
 //
+//      This source code is part of the near-RT RIC (RAN Intelligent Controller)
+//      platform project (RICP).
+//
+// ==================================================================================
 package resthooks
 
 import (
@@ -39,10 +40,10 @@ import (
        "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/onboard"
        "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/charts"
        d "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/deploy"
+       "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/experiment"
        h "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/health"
        "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/ricdms"
        "github.com/stretchr/testify/assert"
-       "github.com/stretchr/testify/mock"
 )
 
 var rh *Resthook
@@ -55,7 +56,7 @@ func TestMain(m *testing.M) {
        }
        ricdms.Init()
        rh = &Resthook{
-               HealthChecker: HealthCheckerMock{},
+               HealthChecker: health.NewHealthChecker(),
                Onboarder:     onboard.NewOnboarder(),
                ChartMgr:      ch.NewChartmgr(),
                DeployMgr:     deploy.NewDeploymentManager(),
@@ -78,6 +79,54 @@ func TestHealth(t *testing.T) {
        }
 }
 
+func TestHealthxAppFail(t *testing.T) {
+       svr := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+               w.WriteHeader(501)
+       }))
+
+       svr.Listener.Close()
+       svr.Listener, _ = net.Listen("tcp", ricdms.Config.MockServer)
+
+       svr.Start()
+       defer svr.Close()
+
+       resp := rh.GetxAppHealth("test", "test")
+       switch resp.(type) {
+       case *h.GetHealthCheckOK:
+               assert.Fail(t, "Health check should not be okay: %v", resp)
+
+       case *h.GetHealthCheckInternalServerError:
+               break
+
+       default:
+               assert.Fail(t, "Unknown type of resp : %v", resp)
+       }
+}
+
+func TestHealthxApp(t *testing.T) {
+       svr := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+               w.WriteHeader(http.StatusOK)
+       }))
+
+       svr.Listener.Close()
+       svr.Listener, _ = net.Listen("tcp", ricdms.Config.MockServer)
+
+       svr.Start()
+       defer svr.Close()
+
+       resp := rh.GetxAppHealth("test", "test")
+       switch resp.(type) {
+       case *h.GetHealthCheckOK:
+               assert.Equal(t, successStatus, resp.(*h.GetHealthCheckOK).Payload)
+
+       case *h.GetHealthCheckInternalServerError:
+               assert.Fail(t, "Internal Server generated: %v", resp)
+
+       default:
+               assert.Fail(t, "Unknown type of resp : %v", resp)
+       }
+}
+
 func TestOnboard(t *testing.T) {
        xApp := &models.Descriptor{
                Config: "SAMPLE_CONFIGURATION",
@@ -213,10 +262,31 @@ func TestDownloadAndInstall(t *testing.T) {
 
 }
 
-type HealthCheckerMock struct {
-       mock.Mock
+func TestUninstallxApp(t *testing.T) {
+       response := rh.UninstallChart("test", "test", "test")
+       if _, ok := response.(*d.DeleteDeployInternalServerError); !ok {
+               assert.Fail(t, "response type did not match actual: %T", response)
+       }
 }
 
-func (h HealthCheckerMock) GetStatus() *models.Status {
-       return successStatus
+func TestCustomOnaboardEmptyPkg(t *testing.T) {
+       svr := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+               ricdms.Logger.Debug("request received by mock to get chart by name and version")
+       }))
+
+       svr.Listener.Close()
+       svr.Listener, _ = net.Listen("tcp", ricdms.Config.MockServer)
+
+       svr.Start()
+       defer svr.Close()
+
+       resp := rh.Onboarder.CustomOnboard(nil)
+       ricdms.Logger.Debug("resp type:%T", resp)
+
+       switch resp.(type) {
+       case *experiment.PostCustomOnboardInternalServerError:
+               break
+       default:
+               assert.Failf(t, "case 1 response type did not match", "[actual: %T]", resp)
+       }
 }