@@ -21,20 +21,21 @@ var _ = Describe("Protocolcheck", func() {
21
21
logger logger.Logger
22
22
ew = errorwriter .NewPlaintextErrorWriter ()
23
23
24
- nextCalled bool
25
- server * ghttp.Server
26
- n * negroni.Negroni
24
+ nextCalled bool
25
+ server * ghttp.Server
26
+ n * negroni.Negroni
27
+ enableHTTP2 bool
27
28
)
28
29
29
- BeforeEach (func () {
30
+ JustBeforeEach (func () {
30
31
logger = test_util .NewTestZapLogger ("protocolcheck" )
31
32
nextCalled = false
32
33
33
34
n = negroni .New ()
34
35
n .UseFunc (func (rw http.ResponseWriter , req * http.Request , next http.HandlerFunc ) {
35
36
next (rw , req )
36
37
})
37
- n .Use (handlers .NewProtocolCheck (logger , ew ))
38
+ n .Use (handlers .NewProtocolCheck (logger , ew , enableHTTP2 ))
38
39
n .UseHandlerFunc (func (http.ResponseWriter , * http.Request ) {
39
40
nextCalled = true
40
41
})
@@ -49,18 +50,44 @@ var _ = Describe("Protocolcheck", func() {
49
50
})
50
51
51
52
Context ("http2" , func () {
52
- It ("passes the request through" , func () {
53
- conn , err := net .Dial ("tcp" , server .Addr ())
54
- defer conn .Close ()
55
- Expect (err ).ToNot (HaveOccurred ())
56
- respReader := bufio .NewReader (conn )
53
+ Context ("when http2 is enabled" , func () {
54
+ BeforeEach (func () {
55
+ enableHTTP2 = true
56
+ })
57
+
58
+ It ("passes the request through" , func () {
59
+ conn , err := net .Dial ("tcp" , server .Addr ())
60
+ defer conn .Close ()
61
+ Expect (err ).ToNot (HaveOccurred ())
62
+ respReader := bufio .NewReader (conn )
63
+
64
+ conn .Write ([]byte ("PRI * HTTP/2.0\r \n Host: example.com\r \n \r \n " ))
65
+ resp , err := http .ReadResponse (respReader , nil )
66
+ Expect (err ).ToNot (HaveOccurred ())
67
+
68
+ Expect (resp .StatusCode ).To (Equal (200 ))
69
+ Expect (nextCalled ).To (BeTrue ())
70
+ })
71
+ })
57
72
58
- conn .Write ([]byte ("PRI * HTTP/2.0\r \n Host: example.com\r \n \r \n " ))
59
- resp , err := http .ReadResponse (respReader , nil )
60
- Expect (err ).ToNot (HaveOccurred ())
73
+ Context ("when http2 is disabled" , func () {
74
+ BeforeEach (func () {
75
+ enableHTTP2 = false
76
+ })
61
77
62
- Expect (resp .StatusCode ).To (Equal (200 ))
63
- Expect (nextCalled ).To (BeTrue ())
78
+ It ("returns a 400 witha helpful error " , func () {
79
+ conn , err := net .Dial ("tcp" , server .Addr ())
80
+ defer conn .Close ()
81
+ Expect (err ).ToNot (HaveOccurred ())
82
+ respReader := bufio .NewReader (conn )
83
+
84
+ conn .Write ([]byte ("PRI * HTTP/2.0\r \n Host: example.com\r \n \r \n " ))
85
+ resp , err := http .ReadResponse (respReader , nil )
86
+ Expect (err ).ToNot (HaveOccurred ())
87
+
88
+ Expect (resp .StatusCode ).To (Equal (400 ))
89
+ Expect (nextCalled ).To (BeFalse ())
90
+ })
64
91
})
65
92
})
66
93
0 commit comments