ingress-nginx-helm/images/kube-webhook-certgen/rootfs/pkg/certs/certs_test.go
my-git9 787ea74b6b
cleanup: remove ioutil for new go version (#9427)
Signed-off-by: xin.li <xin.li@daocloud.io>

Signed-off-by: xin.li <xin.li@daocloud.io>
2022-12-20 09:39:46 -08:00

62 lines
1.2 KiB
Go

package certs
import (
"bytes"
"crypto/tls"
"crypto/x509"
"fmt"
"io"
"net/http"
"net/http/httptest"
"testing"
)
func handler(w http.ResponseWriter, r *http.Request) {
_, _ = fmt.Fprintf(w, "Hello World")
}
func TestCertificateCreation(t *testing.T) {
ca, cert, key := GenerateCerts("localhost")
c, err := tls.X509KeyPair(cert, key)
if err != nil {
t.Fatal(err)
}
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(ca)
tr := &http.Transport{
TLSClientConfig: &tls.Config{
RootCAs: caCertPool,
ServerName: "localhost",
},
}
ts := httptest.NewUnstartedServer(http.HandlerFunc(handler))
ts.TLS = &tls.Config{Certificates: []tls.Certificate{c}}
ts.StartTLS()
defer ts.Close()
client := &http.Client{Transport: tr}
res, err := client.Get(ts.URL)
if err != nil {
t.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
t.Errorf("Response code was %v; want 200", res.StatusCode)
}
body, err := io.ReadAll(res.Body)
if err != nil {
t.Fatal(err)
}
expected := []byte("Hello World")
if bytes.Compare(expected, body) != 0 {
t.Errorf("Response body was '%v'; want '%v'", expected, body)
}
}