1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  package org.apache.hc.client5.http.impl.cache;
28  
29  import java.util.Iterator;
30  import java.util.Objects;
31  
32  import org.apache.hc.core5.http.Header;
33  import org.apache.hc.core5.http.MessageHeaders;
34  import org.hamcrest.BaseMatcher;
35  import org.hamcrest.Description;
36  import org.hamcrest.Matcher;
37  
38  public class ContainsHeaderMatcher extends BaseMatcher<MessageHeaders> {
39  
40      private final String headerName;
41      private final Object headerValue;
42  
43      public ContainsHeaderMatcher(final String headerName, final Object headerValue) {
44          this.headerName = headerName;
45          this.headerValue = headerValue;
46      }
47  
48      @Override
49      public boolean matches(final Object item) {
50          if (item instanceof MessageHeaders) {
51              final MessageHeaders messageHeaders = (MessageHeaders) item;
52              for (final Iterator<Header> it = messageHeaders.headerIterator(); it.hasNext(); ) {
53                  final Header header = it.next();
54                  if (headerName.equalsIgnoreCase(header.getName()) && Objects.equals(headerValue, header.getValue())) {
55                      return true;
56                  }
57              }
58          }
59          return false;
60      }
61  
62      @Override
63      public void describeTo(final Description description) {
64          description.appendText("contains header ").appendValue(headerName).appendText(": ").appendValue(headerValue);
65      }
66  
67      public static Matcher<MessageHeaders> contains(final String headerName, final Object headerValue) {
68          return new ContainsHeaderMatcher(headerName, headerValue);
69      }
70  
71  }