http-add-on/operator/controllers/http/ping_test.go

58 lines
1.4 KiB
Go

package http
import (
"context"
"net/http"
"testing"
"github.com/stretchr/testify/require"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
"github.com/kedacore/http-add-on/pkg/k8s"
kedanet "github.com/kedacore/http-add-on/pkg/net"
)
func TestPingInterceptors(t *testing.T) {
const (
ns = "testns"
svcName = "testsvc"
)
r := require.New(t)
// create a new server (that we can introspect later on) to act
// like a fake interceptor. we expect that pingInterceptors()
// will make requests to this server
hdl := kedanet.NewTestHTTPHandlerWrapper(
http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(200)
}),
)
srv, url, err := kedanet.StartTestServer(hdl)
r.NoError(err)
defer srv.Close()
ctx := context.Background()
endpoints, err := k8s.FakeEndpointsForURL(url, ns, svcName, 1)
r.NoError(err)
eps := []client.Object{}
for i := range endpoints.Items {
eps = append(eps, &endpoints.Items[i])
}
cl := fake.NewClientBuilder().WithObjects(eps...).Build()
r.NoError(pingInterceptors(
ctx,
cl,
srv.Client(),
ns,
svcName,
url.Port(),
))
reqs := hdl.IncomingRequests()
var endpointsAddrs []string
for _, es := range endpoints.Items {
for _, e := range es.Endpoints {
endpointsAddrs = append(endpointsAddrs, e.Addresses...)
}
}
r.Equal(len(endpointsAddrs), len(reqs))
}