cloudflare/cloudflared
Publicmirrored from https://github.com/cloudflare/cloudflaredAvailable
streamhandler/request_test.go
77lines · modecode
| 1 | package streamhandler |
| 2 | |
| 3 | import ( |
| 4 | "net/http" |
| 5 | "testing" |
| 6 | |
| 7 | "github.com/cloudflare/cloudflared/h2mux" |
| 8 | |
| 9 | "github.com/stretchr/testify/assert" |
| 10 | ) |
| 11 | |
| 12 | func TestH2RequestHeadersToH1Request_RegularHeaders(t *testing.T) { |
| 13 | request, err := http.NewRequest(http.MethodGet, "http://example.com", nil) |
| 14 | assert.NoError(t, err) |
| 15 | |
| 16 | headersConversionErr := H2RequestHeadersToH1Request( |
| 17 | []h2mux.Header{ |
| 18 | h2mux.Header{ |
| 19 | Name: "Mock header 1", |
| 20 | Value: "Mock value 1", |
| 21 | }, |
| 22 | h2mux.Header{ |
| 23 | Name: "Mock header 2", |
| 24 | Value: "Mock value 2", |
| 25 | }, |
| 26 | }, |
| 27 | request, |
| 28 | ) |
| 29 | |
| 30 | assert.Equal(t, http.Header{ |
| 31 | "Mock header 1": []string{"Mock value 1"}, |
| 32 | "Mock header 2": []string{"Mock value 2"}, |
| 33 | }, request.Header) |
| 34 | |
| 35 | assert.NoError(t, headersConversionErr) |
| 36 | } |
| 37 | |
| 38 | func TestH2RequestHeadersToH1Request_NoHeaders(t *testing.T) { |
| 39 | request, err := http.NewRequest(http.MethodGet, "http://example.com", nil) |
| 40 | assert.NoError(t, err) |
| 41 | |
| 42 | headersConversionErr := H2RequestHeadersToH1Request( |
| 43 | []h2mux.Header{}, |
| 44 | request, |
| 45 | ) |
| 46 | |
| 47 | assert.Equal(t, http.Header{}, request.Header) |
| 48 | |
| 49 | assert.NoError(t, headersConversionErr) |
| 50 | } |
| 51 | |
| 52 | func TestH2RequestHeadersToH1Request_InvalidHostPath(t *testing.T) { |
| 53 | request, err := http.NewRequest(http.MethodGet, "http://example.com", nil) |
| 54 | assert.NoError(t, err) |
| 55 | |
| 56 | headersConversionErr := H2RequestHeadersToH1Request( |
| 57 | []h2mux.Header{ |
| 58 | h2mux.Header{ |
| 59 | Name: ":path", |
| 60 | Value: "//bad_path/", |
| 61 | }, |
| 62 | h2mux.Header{ |
| 63 | Name: "Mock header", |
| 64 | Value: "Mock value", |
| 65 | }, |
| 66 | }, |
| 67 | request, |
| 68 | ) |
| 69 | |
| 70 | assert.Equal(t, http.Header{ |
| 71 | "Mock header": []string{"Mock value"}, |
| 72 | }, request.Header) |
| 73 | |
| 74 | assert.Equal(t, request.URL.String(), "http://example.com//bad_path/") |
| 75 | |
| 76 | assert.NoError(t, headersConversionErr) |
| 77 | } |
| 78 | |