@@ -31,7 +31,8 @@ import (
3131 "github.com/gruntwork-io/terratest/modules/k8s"
3232 "github.com/gruntwork-io/terratest/modules/testing"
3333 . "github.com/onsi/ginkgo/v2" //nolint:staticcheck
34- . "github.com/onsi/gomega" //nolint:staticcheck
34+ ginkgo "github.com/onsi/ginkgo/v2"
35+ . "github.com/onsi/gomega" //nolint:staticcheck
3536 corev1 "k8s.io/api/core/v1"
3637 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3738
@@ -80,6 +81,7 @@ type Tunnels struct {
8081 HTTP * k8s.Tunnel
8182 HTTPS * k8s.Tunnel
8283 TCP * k8s.Tunnel
84+ TLS * k8s.Tunnel
8385}
8486
8587func (t * Tunnels ) Close () {
@@ -95,6 +97,10 @@ func (t *Tunnels) Close() {
9597 t .safeClose (t .TCP .Close )
9698 t .TCP = nil
9799 }
100+ if t .TLS != nil {
101+ t .safeClose (t .TLS .Close )
102+ t .TLS = nil
103+ }
98104}
99105
100106func (t * Tunnels ) safeClose (close func ()) {
@@ -274,6 +280,31 @@ func (s *Scaffold) NewAPISIXClientWithTCPProxy() *httpexpect.Expect {
274280 })
275281}
276282
283+ func (s * Scaffold ) NewAPISIXClientWithTLSProxy (host string ) * httpexpect.Expect {
284+ u := url.URL {
285+ Scheme : apiv2 .SchemeHTTPS ,
286+ Host : s .apisixTunnels .TLS .Endpoint (),
287+ }
288+ return httpexpect .WithConfig (httpexpect.Config {
289+ BaseURL : u .String (),
290+ Client : & http.Client {
291+ Transport : & http.Transport {
292+ TLSClientConfig : & tls.Config {
293+ // accept any certificate; for testing only!
294+ InsecureSkipVerify : true ,
295+ ServerName : host ,
296+ },
297+ },
298+ CheckRedirect : func (req * http.Request , via []* http.Request ) error {
299+ return http .ErrUseLastResponse
300+ },
301+ },
302+ Reporter : httpexpect .NewAssertReporter (
303+ httpexpect .NewAssertReporter (ginkgo .GinkgoT ()),
304+ ),
305+ })
306+ }
307+
277308func (s * Scaffold ) DefaultDataplaneResource () DataplaneResource {
278309 return s .Deployer .DefaultDataplaneResource ()
279310}
@@ -359,6 +390,7 @@ func (s *Scaffold) createDataplaneTunnels(
359390 httpPort int
360391 httpsPort int
361392 tcpPort int
393+ tlsPort int
362394 )
363395
364396 for _ , port := range svc .Spec .Ports {
@@ -369,6 +401,8 @@ func (s *Scaffold) createDataplaneTunnels(
369401 httpsPort = int (port .Port )
370402 case apiv2 .SchemeTCP :
371403 tcpPort = int (port .Port )
404+ case apiv2 .SchemeTLS :
405+ tlsPort = int (port .Port )
372406 }
373407 }
374408
@@ -381,6 +415,8 @@ func (s *Scaffold) createDataplaneTunnels(
381415 0 , httpsPort )
382416 tcpTunnel := k8s .NewTunnel (kubectlOpts , k8s .ResourceTypeService , serviceName ,
383417 0 , tcpPort )
418+ tlsTunnel := k8s .NewTunnel (kubectlOpts , k8s .ResourceTypeService , serviceName ,
419+ 0 , tlsPort )
384420
385421 if err := httpTunnel .ForwardPortE (s .t ); err != nil {
386422 return nil , err
@@ -396,6 +432,10 @@ func (s *Scaffold) createDataplaneTunnels(
396432 return nil , err
397433 }
398434 tunnels .TCP = tcpTunnel
435+ if err := tlsTunnel .ForwardPortE (s .t ); err != nil {
436+ return nil , err
437+ }
438+ tunnels .TLS = tlsTunnel
399439
400440 return tunnels , nil
401441}
0 commit comments