@@ -17,15 +17,21 @@ limitations under the License.
17
17
package localkube
18
18
19
19
import (
20
+ "crypto/tls"
21
+ "crypto/x509"
20
22
"io"
23
+ "io/ioutil"
21
24
"net/http"
22
25
"net/http/httptest"
26
+ "os"
23
27
"testing"
28
+
29
+ "k8s.io/minikube/pkg/minikube/tests"
24
30
)
25
31
26
32
func TestBasicHealthCheck (t * testing.T ) {
27
33
28
- tests := []struct {
34
+ tcs := []struct {
29
35
body string
30
36
statusCode int
31
37
shouldSucceed bool
@@ -34,17 +40,43 @@ func TestBasicHealthCheck(t *testing.T) {
34
40
{"notok" , 200 , false },
35
41
}
36
42
37
- for _ , tc := range tests {
43
+ tempDir := tests .MakeTempDir ()
44
+ defer os .RemoveAll (tempDir )
45
+ lk := LocalkubeServer {LocalkubeDirectory : tempDir }
46
+ lk .GenerateCerts ()
47
+
48
+ cert , err := tls .LoadX509KeyPair (lk .GetPublicKeyCertPath (), lk .GetPrivateKeyCertPath ())
49
+ if err != nil {
50
+ t .Fatalf ("Unable to load server certs." )
51
+ }
52
+
53
+ caCert , err := ioutil .ReadFile (lk .GetCAPublicKeyCertPath ())
54
+ if err != nil {
55
+ t .Fatalf ("Unable to load CA certs." )
56
+ }
57
+ caCertPool := x509 .NewCertPool ()
58
+ caCertPool .AppendCertsFromPEM (caCert )
59
+
60
+ tls := tls.Config {
61
+ Certificates : []tls.Certificate {cert },
62
+ ClientCAs : caCertPool ,
63
+ }
64
+
65
+ tls .BuildNameToCertificate ()
66
+
67
+ for _ , tc := range tcs {
38
68
// Do this in a func so we can use defer.
39
69
doTest := func () {
40
70
handler := func (w http.ResponseWriter , r * http.Request ) {
41
71
w .WriteHeader (tc .statusCode )
42
72
io .WriteString (w , tc .body )
43
73
}
44
- server := httptest .NewServer (http .HandlerFunc (handler ))
74
+ server := httptest .NewUnstartedServer (http .HandlerFunc (handler ))
45
75
defer server .Close ()
76
+ server .TLS = & tls
77
+ server .StartTLS ()
46
78
47
- hcFunc := healthCheck (server .URL )
79
+ hcFunc := healthCheck (server .URL , lk )
48
80
result := hcFunc ()
49
81
if result != tc .shouldSucceed {
50
82
t .Errorf ("Expected healthcheck to return %v. Got %v" , result , tc .shouldSucceed )
0 commit comments