...

Source file src/github.com/onsi/gomega/matchers/have_http_header_with_value_matcher_test.go

Documentation: github.com/onsi/gomega/matchers

     1  package matchers_test
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httptest"
     6  
     7  	. "github.com/onsi/ginkgo/v2"
     8  	. "github.com/onsi/gomega"
     9  )
    10  
    11  var _ = Describe("HaveHTTPHeader", func() {
    12  	It("can match an HTTP header", func() {
    13  		resp := &http.Response{}
    14  		resp.Header = make(http.Header)
    15  		resp.Header.Add("fake-header", "fake value")
    16  		Expect(resp).To(HaveHTTPHeaderWithValue("fake-header", "fake value"))
    17  	})
    18  
    19  	It("can mismatch an HTTP header", func() {
    20  		resp := &http.Response{}
    21  		resp.Header = make(http.Header)
    22  		resp.Header.Add("fake-header", "fake value")
    23  		Expect(resp).NotTo(HaveHTTPHeaderWithValue("other-header", "fake value"))
    24  		Expect(resp).NotTo(HaveHTTPHeaderWithValue("fake-header", "other value"))
    25  	})
    26  
    27  	When("the header is set more than once", func() {
    28  		It("matches the first value and not the second", func() {
    29  			resp := &http.Response{}
    30  			resp.Header = make(http.Header)
    31  			resp.Header.Add("fake-header", "fake value1")
    32  			resp.Header.Add("fake-header", "fake value2")
    33  			Expect(resp).To(HaveHTTPHeaderWithValue("fake-header", "fake value1"))
    34  			Expect(resp).NotTo(HaveHTTPHeaderWithValue("fake-header", "fake value2"))
    35  		})
    36  	})
    37  
    38  	When("ACTUAL is *httptest.ResponseRecorder", func() {
    39  		It("can match an HTTP header", func() {
    40  			resp := &httptest.ResponseRecorder{}
    41  			resp.Header().Add("fake-header", "fake value")
    42  			Expect(resp).To(HaveHTTPHeaderWithValue("fake-header", "fake value"))
    43  		})
    44  
    45  		It("can mismatch an HTTP header", func() {
    46  			resp := &httptest.ResponseRecorder{}
    47  			resp.Header().Add("fake-header", "fake value")
    48  			Expect(resp).NotTo(HaveHTTPHeaderWithValue("other-header", "fake value"))
    49  			Expect(resp).NotTo(HaveHTTPHeaderWithValue("fake-header", "other value"))
    50  		})
    51  	})
    52  
    53  	When("ACTUAL is neither *http.Response nor *httptest.ResponseRecorder", func() {
    54  		It("errors", func() {
    55  			failures := InterceptGomegaFailures(func() {
    56  				Expect("foo").To(HaveHTTPHeaderWithValue("bar", "baz"))
    57  			})
    58  			Expect(failures).To(HaveLen(1))
    59  			Expect(failures[0]).To(Equal("HaveHTTPHeaderWithValue matcher expects *http.Response or *httptest.ResponseRecorder. Got:\n    <string>: foo"))
    60  		})
    61  	})
    62  
    63  	When("EXPECTED VALUE is a matcher", func() {
    64  		It("can match an HTTP header", func() {
    65  			resp := &http.Response{}
    66  			resp.Header = make(http.Header)
    67  			resp.Header.Add("fake-header", "fake value")
    68  			Expect(resp).To(HaveHTTPHeaderWithValue("fake-header", ContainSubstring("value")))
    69  		})
    70  
    71  		It("can mismatch an HTTP header", func() {
    72  			resp := &http.Response{}
    73  			resp.Header = make(http.Header)
    74  			resp.Header.Add("fake-header", "fake value")
    75  			Expect(resp).NotTo(HaveHTTPHeaderWithValue("fake-header", ContainSubstring("foo")))
    76  		})
    77  	})
    78  
    79  	When("EXPECTED VALUE is something else", func() {
    80  		It("errors", func() {
    81  			failures := InterceptGomegaFailures(func() {
    82  				resp := &http.Response{}
    83  				Expect(resp).To(HaveHTTPHeaderWithValue("bar", 42))
    84  			})
    85  			Expect(failures).To(HaveLen(1))
    86  			Expect(failures[0]).To(Equal("HaveHTTPHeaderWithValue matcher must be passed a string or a GomegaMatcher. Got:\n    <int>: 42"))
    87  		})
    88  	})
    89  
    90  	Describe("FailureMessage", func() {
    91  		When("matching a string", func() {
    92  			It("returns message", func() {
    93  				failures := InterceptGomegaFailures(func() {
    94  					resp := &http.Response{}
    95  					resp.Header = make(http.Header)
    96  					resp.Header.Add("fake-header", "fake value")
    97  					Expect(resp).To(HaveHTTPHeaderWithValue("fake-header", "other value"))
    98  				})
    99  				Expect(failures).To(HaveLen(1))
   100  				Expect(failures[0]).To(Equal(`HTTP header "fake-header":
   101      Expected
   102          <string>: fake value
   103      to equal
   104          <string>: other value`), failures[0])
   105  			})
   106  		})
   107  
   108  		When("matching a matcher", func() {
   109  			It("returns message", func() {
   110  				failures := InterceptGomegaFailures(func() {
   111  					resp := &http.Response{}
   112  					resp.Header = make(http.Header)
   113  					resp.Header.Add("fake-header", "fake value")
   114  					Expect(resp).To(HaveHTTPHeaderWithValue("fake-header", ContainSubstring("other")))
   115  				})
   116  				Expect(failures).To(HaveLen(1))
   117  				Expect(failures[0]).To(Equal(`HTTP header "fake-header":
   118      Expected
   119          <string>: fake value
   120      to contain substring
   121          <string>: other`), failures[0])
   122  			})
   123  		})
   124  	})
   125  
   126  	Describe("NegatedFailureMessage", func() {
   127  		When("matching a string", func() {
   128  			It("returns message", func() {
   129  				failures := InterceptGomegaFailures(func() {
   130  					resp := &http.Response{}
   131  					resp.Header = make(http.Header)
   132  					resp.Header.Add("fake-header", "fake value")
   133  					Expect(resp).NotTo(HaveHTTPHeaderWithValue("fake-header", "fake value"))
   134  				})
   135  				Expect(failures).To(HaveLen(1))
   136  				Expect(failures[0]).To(Equal(`HTTP header "fake-header":
   137      Expected
   138          <string>: fake value
   139      not to equal
   140          <string>: fake value`), failures[0])
   141  			})
   142  		})
   143  
   144  		When("matching a matcher", func() {
   145  			It("returns message", func() {
   146  				failures := InterceptGomegaFailures(func() {
   147  					resp := &http.Response{}
   148  					resp.Header = make(http.Header)
   149  					resp.Header.Add("fake-header", "fake value")
   150  					Expect(resp).NotTo(HaveHTTPHeaderWithValue("fake-header", ContainSubstring("value")))
   151  				})
   152  				Expect(failures).To(HaveLen(1))
   153  				Expect(failures[0]).To(Equal(`HTTP header "fake-header":
   154      Expected
   155          <string>: fake value
   156      not to contain substring
   157          <string>: value`), failures[0])
   158  			})
   159  		})
   160  	})
   161  })
   162  

View as plain text