git.iko.soy/typeable/oauth2-proxy
on master help sign in
Merge pull request #2539 from isodude/fix-leaky-test

pkg/http: Fix leaky test

commit0678626e63f26277e61c15b5f1a2647f61e76306 authorJoel Speed <Joel.speed@hotmail.co.uk> dateSat 30 Mar 2024, 11:48 (3 years ago) parent3b11a518f7209b
3 files changed+45−32
CHANGELOG.md+2 pkg/http/http_suite_test.go+14−6 pkg/http/server_test.go+29−26
CHANGELOG.md+2
@@ -8,6 +8,8 @@
88
99## Changes since v7.6.0
1010
11+- [#2539](https://github.com/oauth2-proxy/oauth2-proxy/pull/2539) pkg/http: Fix leaky test (@isodude)
12+
1113# V7.6.0
1214
1315## Release Highlights
pkg/http/http_suite_test.go+14−6
@@ -2,6 +2,7 @@ package http
22
33import (
44 "bytes"
5+ "context"
56 "crypto/tls"
67 "crypto/x509"
78 "encoding/pem"
@@ -18,7 +19,7 @@ import (
1819var ipv4CertData, ipv6CertData []byte
1920var ipv4CertDataSource, ipv4KeyDataSource options.SecretSource
2021var ipv6CertDataSource, ipv6KeyDataSource options.SecretSource
21−var client *http.Client
22+var transport *http.Transport
2223
2324func TestHTTPSuite(t *testing.T) {
2425 logger.SetOutput(GinkgoWriter)
@@ -28,6 +29,17 @@ func TestHTTPSuite(t *testing.T) {
2829 RunSpecs(t, "HTTP")
2930}
3031
32+func httpGet(ctx context.Context, url string) (*http.Response, error) {
33+ c := &http.Client{
34+ Transport: transport.Clone(),
35+ }
36+ req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
37+ if err != nil {
38+ return nil, err
39+ }
40+ return c.Do(req)
41+}
42+
3143var _ = BeforeSuite(func() {
3244 By("Generating a ipv4 self-signed cert for TLS tests", func() {
3345 certBytes, keyBytes, err := util.GenerateCert("127.0.0.1")
@@ -70,11 +82,7 @@ var _ = BeforeSuite(func() {
7082 certpool.AddCert(ipv4certificate)
7183 certpool.AddCert(ipv6certificate)
7284
73− transport := http.DefaultTransport.(*http.Transport).Clone()
85+ transport = http.DefaultTransport.(*http.Transport).Clone()
7486 transport.TLSClientConfig.RootCAs = certpool
75−
76− client = &http.Client{
77− Transport: transport,
78− }
7987 })
8088})
pkg/http/server_test.go+29−26
@@ -12,6 +12,7 @@ import (
1212 . "github.com/onsi/ginkgo"
1313 . "github.com/onsi/ginkgo/extensions/table"
1414 . "github.com/onsi/gomega"
15+ . "github.com/onsi/gomega/gleak"
1516)
1617
1718const hello = "Hello World!"
@@ -559,6 +560,8 @@ var _ = Describe("Server", func() {
559560
560561 AfterEach(func() {
561562 cancel()
563+ Eventually(Goroutines).ShouldNot(HaveLeaked())
564+
562565 })
563566
564567 Context("with an ipv4 http server", func() {
@@ -584,7 +587,7 @@ var _ = Describe("Server", func() {
584587 Expect(srv.Start(ctx)).To(Succeed())
585588 }()
586589
587− resp, err := client.Get(listenAddr)
590+ resp, err := httpGet(ctx, listenAddr)
588591 Expect(err).ToNot(HaveOccurred())
589592 Expect(resp.StatusCode).To(Equal(http.StatusOK))
590593
@@ -599,13 +602,13 @@ var _ = Describe("Server", func() {
599602 Expect(srv.Start(ctx)).To(Succeed())
600603 }()
601604
602− _, err := client.Get(listenAddr)
605+ _, err := httpGet(ctx, listenAddr)
603606 Expect(err).ToNot(HaveOccurred())
604607
605608 cancel()
606609
607610 Eventually(func() error {
608− _, err := client.Get(listenAddr)
611+ _, err := httpGet(ctx, listenAddr)
609612 return err
610613 }).Should(HaveOccurred())
611614 })
@@ -638,7 +641,7 @@ var _ = Describe("Server", func() {
638641 Expect(srv.Start(ctx)).To(Succeed())
639642 }()
640643
641− resp, err := client.Get(secureListenAddr)
644+ resp, err := httpGet(ctx, secureListenAddr)
642645 Expect(err).ToNot(HaveOccurred())
643646 Expect(resp.StatusCode).To(Equal(http.StatusOK))
644647
@@ -653,13 +656,13 @@ var _ = Describe("Server", func() {
653656 Expect(srv.Start(ctx)).To(Succeed())
654657 }()
655658
656− _, err := client.Get(secureListenAddr)
659+ _, err := httpGet(ctx, secureListenAddr)
657660 Expect(err).ToNot(HaveOccurred())
658661
659662 cancel()
660663
661664 Eventually(func() error {
662− _, err := client.Get(secureListenAddr)
665+ _, err := httpGet(ctx, secureListenAddr)
663666 return err
664667 }).Should(HaveOccurred())
665668 })
@@ -670,7 +673,7 @@ var _ = Describe("Server", func() {
670673 Expect(srv.Start(ctx)).To(Succeed())
671674 }()
672675
673− resp, err := client.Get(secureListenAddr)
676+ resp, err := httpGet(ctx, secureListenAddr)
674677 Expect(err).ToNot(HaveOccurred())
675678 Expect(resp.StatusCode).To(Equal(http.StatusOK))
676679
@@ -709,7 +712,7 @@ var _ = Describe("Server", func() {
709712 Expect(srv.Start(ctx)).To(Succeed())
710713 }()
711714
712− resp, err := client.Get(listenAddr)
715+ resp, err := httpGet(ctx, listenAddr)
713716 Expect(err).ToNot(HaveOccurred())
714717 Expect(resp.StatusCode).To(Equal(http.StatusOK))
715718
@@ -724,7 +727,7 @@ var _ = Describe("Server", func() {
724727 Expect(srv.Start(ctx)).To(Succeed())
725728 }()
726729
727− resp, err := client.Get(secureListenAddr)
730+ resp, err := httpGet(ctx, secureListenAddr)
728731 Expect(err).ToNot(HaveOccurred())
729732 Expect(resp.StatusCode).To(Equal(http.StatusOK))
730733
@@ -739,19 +742,19 @@ var _ = Describe("Server", func() {
739742 Expect(srv.Start(ctx)).To(Succeed())
740743 }()
741744
742− _, err := client.Get(listenAddr)
745+ _, err := httpGet(ctx, listenAddr)
743746 Expect(err).ToNot(HaveOccurred())
744− _, err = client.Get(secureListenAddr)
747+ _, err = httpGet(ctx, secureListenAddr)
745748 Expect(err).ToNot(HaveOccurred())
746749
747750 cancel()
748751
749752 Eventually(func() error {
750− _, err := client.Get(listenAddr)
753+ _, err := httpGet(ctx, listenAddr)
751754 return err
752755 }).Should(HaveOccurred())
753756 Eventually(func() error {
754− _, err := client.Get(secureListenAddr)
757+ _, err := httpGet(ctx, secureListenAddr)
755758 return err
756759 }).Should(HaveOccurred())
757760 })
@@ -781,7 +784,7 @@ var _ = Describe("Server", func() {
781784 Expect(srv.Start(ctx)).To(Succeed())
782785 }()
783786
784− resp, err := client.Get(listenAddr)
787+ resp, err := httpGet(ctx, listenAddr)
785788 Expect(err).ToNot(HaveOccurred())
786789 Expect(resp.StatusCode).To(Equal(http.StatusOK))
787790
@@ -796,13 +799,13 @@ var _ = Describe("Server", func() {
796799 Expect(srv.Start(ctx)).To(Succeed())
797800 }()
798801
799− _, err := client.Get(listenAddr)
802+ _, err := httpGet(ctx, listenAddr)
800803 Expect(err).ToNot(HaveOccurred())
801804
802805 cancel()
803806
804807 Eventually(func() error {
805− _, err := client.Get(listenAddr)
808+ _, err := httpGet(ctx, listenAddr)
806809 return err
807810 }).Should(HaveOccurred())
808811 })
@@ -836,7 +839,7 @@ var _ = Describe("Server", func() {
836839 Expect(srv.Start(ctx)).To(Succeed())
837840 }()
838841
839− resp, err := client.Get(secureListenAddr)
842+ resp, err := httpGet(ctx, secureListenAddr)
840843 Expect(err).ToNot(HaveOccurred())
841844 Expect(resp.StatusCode).To(Equal(http.StatusOK))
842845
@@ -851,13 +854,13 @@ var _ = Describe("Server", func() {
851854 Expect(srv.Start(ctx)).To(Succeed())
852855 }()
853856
854− _, err := client.Get(secureListenAddr)
857+ _, err := httpGet(ctx, secureListenAddr)
855858 Expect(err).ToNot(HaveOccurred())
856859
857860 cancel()
858861
859862 Eventually(func() error {
860− _, err := client.Get(secureListenAddr)
863+ _, err := httpGet(ctx, secureListenAddr)
861864 return err
862865 }).Should(HaveOccurred())
863866 })
@@ -868,7 +871,7 @@ var _ = Describe("Server", func() {
868871 Expect(srv.Start(ctx)).To(Succeed())
869872 }()
870873
871− resp, err := client.Get(secureListenAddr)
874+ resp, err := httpGet(ctx, secureListenAddr)
872875 Expect(err).ToNot(HaveOccurred())
873876 Expect(resp.StatusCode).To(Equal(http.StatusOK))
874877
@@ -908,7 +911,7 @@ var _ = Describe("Server", func() {
908911 Expect(srv.Start(ctx)).To(Succeed())
909912 }()
910913
911− resp, err := client.Get(listenAddr)
914+ resp, err := httpGet(ctx, listenAddr)
912915 Expect(err).ToNot(HaveOccurred())
913916 Expect(resp.StatusCode).To(Equal(http.StatusOK))
914917
@@ -923,7 +926,7 @@ var _ = Describe("Server", func() {
923926 Expect(srv.Start(ctx)).To(Succeed())
924927 }()
925928
926− resp, err := client.Get(secureListenAddr)
929+ resp, err := httpGet(ctx, secureListenAddr)
927930 Expect(err).ToNot(HaveOccurred())
928931 Expect(resp.StatusCode).To(Equal(http.StatusOK))
929932
@@ -938,19 +941,19 @@ var _ = Describe("Server", func() {
938941 Expect(srv.Start(ctx)).To(Succeed())
939942 }()
940943
941− _, err := client.Get(listenAddr)
944+ _, err := httpGet(ctx, listenAddr)
942945 Expect(err).ToNot(HaveOccurred())
943− _, err = client.Get(secureListenAddr)
946+ _, err = httpGet(ctx, secureListenAddr)
944947 Expect(err).ToNot(HaveOccurred())
945948
946949 cancel()
947950
948951 Eventually(func() error {
949− _, err := client.Get(listenAddr)
952+ _, err := httpGet(ctx, listenAddr)
950953 return err
951954 }).Should(HaveOccurred())
952955 Eventually(func() error {
953− _, err := client.Get(secureListenAddr)
956+ _, err := httpGet(ctx, secureListenAddr)
954957 return err
955958 }).Should(HaveOccurred())
956959 })