github.com/kubeshop/testkube@v1.17.23/internal/app/api/v1/events_test.go (about)

     1  package v1
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httptest"
     6  	"strings"
     7  	"testing"
     8  
     9  	"github.com/gofiber/fiber/v2"
    10  
    11  	"github.com/kubeshop/testkube/pkg/log"
    12  	"github.com/kubeshop/testkube/pkg/server"
    13  
    14  	"github.com/stretchr/testify/assert"
    15  )
    16  
    17  func TestTestkubeAPI_FluxEventHandler(t *testing.T) {
    18  	// bootstrap api server fiber app
    19  	app := fiber.New()
    20  	s := &TestkubeAPI{
    21  		HTTPServer: server.HTTPServer{
    22  			Mux: app,
    23  			Log: log.DefaultLogger,
    24  		},
    25  	}
    26  	app.Post("/events/flux", s.FluxEventHandler())
    27  
    28  	t.Run("test flux event", func(t *testing.T) {
    29  		// given
    30  		eventString := `{"involvedObject":{"kind":"Deployment","namespace":"my-ns","name":"my-deployment"},"severity":"info","timestamp":"2022-06-27T08:42:25Z","message":"some message","reason":"change","reportingController":"fluxcd"}`
    31  		req := httptest.NewRequest("POST", "/events/flux", strings.NewReader(eventString))
    32  
    33  		// when
    34  		resp, err := app.Test(req)
    35  
    36  		// then
    37  		assert.NoError(t, err)
    38  		assert.Equal(t, http.StatusOK, resp.StatusCode)
    39  	})
    40  
    41  }