Implementation for downloading charts
[ric-plt/ricdms.git] / pkg / resthooks / resthooks_test.go
index e7cbfbd..b18b164 100644 (file)
 package resthooks
 
 import (
+       "encoding/json"
+       "fmt"
+       "io"
+       "io/ioutil"
+       "net"
+       "net/http"
+       "net/http/httptest"
        "os"
+       "strings"
        "testing"
 
+       ch "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/charts"
        "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/health"
        "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/models"
+       "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/onboard"
+       "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/charts"
        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"
@@ -42,6 +53,8 @@ func TestMain(m *testing.M) {
        ricdms.Init()
        rh = &Resthook{
                HealthChecker: HealthCheckerMock{},
+               Onboarder:     onboard.NewOnboarder(),
+               ChartMgr:      ch.NewChartmgr(),
        }
        code := m.Run()
        os.Exit(code)
@@ -61,6 +74,76 @@ func TestHealth(t *testing.T) {
        }
 }
 
+func TestOnboard(t *testing.T) {
+       xApp := &models.Descriptor{
+               Config: "SAMPLE_CONFIGURATION",
+               Schema: "SAMPLE_SCHEMA",
+       }
+
+       svr := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+               var d map[string]interface{}
+               reqBytes, _ := ioutil.ReadAll(r.Body)
+               defer r.Body.Close()
+
+               err := json.Unmarshal(reqBytes, &d)
+
+               ricdms.Logger.Debug("after unmarshal : %+v body: %+v", d, string(reqBytes))
+
+               if err != nil {
+                       assert.Fail(t, "Not able to parse the request body")
+               }
+
+               assert.Equal(t, xApp.Config, d["config-file.json"])
+               assert.Equal(t, xApp.Schema, d["controls-schema.json"])
+               fmt.Fprintf(w, "SAMPLE_RESPONSE")
+       }))
+       svr.Listener.Close()
+       svr.Listener, _ = net.Listen("tcp", ricdms.Config.MockServer)
+
+       svr.Start()
+       defer svr.Close()
+
+       resp := rh.OnBoard(xApp)
+       assert.NotEqual(t, nil, resp)
+}
+
+func TestGetCharts(t *testing.T) {
+
+       svr := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+               ricdms.Logger.Debug("Mock server running")
+               fmt.Fprintf(w, "SAMPLE_RESPONSE")
+       }))
+       svr.Listener.Close()
+       svr.Listener, _ = net.Listen("tcp", ricdms.Config.MockServer)
+
+       svr.Start()
+       defer svr.Close()
+
+       resp := rh.GetCharts()
+       assert.NotEqual(t, nil, resp)
+
+       successResp := resp.(*charts.GetChartsListOK)
+       assert.Equal(t, "SAMPLE_RESPONSE", successResp.Payload)
+}
+
+func TestDownloadChart(t *testing.T) {
+       svr := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+               ricdms.Logger.Debug("request received by mock to download chart")
+               reader := strings.NewReader("SAMPLE_RESPONSE")
+               data, _ := io.ReadAll(reader)
+               ricdms.Logger.Debug("writing : %+v", data)
+               w.Write(data)
+       }))
+       svr.Listener.Close()
+       svr.Listener, _ = net.Listen("tcp", ricdms.Config.MockServer)
+
+       svr.Start()
+       defer svr.Close()
+
+       resp := rh.DownloadChart("CHART_NAME", "VERSION")
+       assert.IsType(t, &charts.DownloadHelmChartOK{}, resp, "response did not match type")
+}
+
 type HealthCheckerMock struct {
        mock.Mock
 }