@@ -148,6 +148,137 @@ public void WithHttpVersion_RequestsWithCorrectVersion_ReturnsHttpRequestMessage
148148
149149 var result = sut . WithHttpVersion ( HttpVersion . Version11 ) ;
150150
151+ Assert . NotNull ( result ) ;
152+ Assert . IsType < HttpRequestMessageAsserter > ( result ) ;
153+ }
154+
155+ #nullable disable
156+ [ Theory ]
157+ [ InlineData ( null ) ]
158+ [ InlineData ( "" ) ]
159+ public void WithHeader_NullOrEmptyHeaderName_ThrowsArgumentNullException ( string headerName )
160+ {
161+ var sut = new HttpRequestMessageAsserter ( Enumerable . Empty < HttpRequestMessage > ( ) ) ;
162+
163+ var exception = Assert . Throws < ArgumentNullException > ( ( ) => sut . WithHeader ( headerName ) ) ;
164+
165+ Assert . Equal ( "headerName" , exception . ParamName ) ;
166+ }
167+ #nullable restore
168+
169+ [ Fact ]
170+ public void WithHeader_NoRequests_ThrowsHttpRequestMessageAssertionExceptionWithSpecificMessage ( )
171+ {
172+ var sut = new HttpRequestMessageAsserter ( Enumerable . Empty < HttpRequestMessage > ( ) ) ;
173+
174+ var exception = Assert . Throws < HttpRequestMessageAssertionException > ( ( ) => sut . WithHeader ( "api-version" ) ) ;
175+
176+ Assert . Equal ( "Expected at least one request to be made with header 'api-version', but no requests were made." , exception . Message ) ;
177+ }
178+
179+ [ Fact ]
180+ public void WithHeader_NoMatchingRequests_ThrowsHttpRequestMessageAssertionExceptionWithSpecificMessage ( )
181+ {
182+ var sut = new HttpRequestMessageAsserter ( new [ ] { new HttpRequestMessage ( ) } ) ;
183+
184+ var exception = Assert . Throws < HttpRequestMessageAssertionException > ( ( ) => sut . WithHeader ( "api-version" ) ) ;
185+
186+ Assert . Equal ( "Expected at least one request to be made with header 'api-version', but no requests were made." , exception . Message ) ;
187+ }
188+
189+ [ Fact ]
190+ public void WithHeader_MatchingRequest_ReturnsHttpRequestMessageAsserter ( )
191+ {
192+ var request = new HttpRequestMessage ( ) ;
193+ request . Headers . Add ( "api-version" , "1.0" ) ;
194+ var sut = new HttpRequestMessageAsserter ( new [ ] { request } ) ;
195+
196+ var result = sut . WithHeader ( "api-version" ) ;
197+
198+ Assert . NotNull ( result ) ;
199+ Assert . IsType < HttpRequestMessageAsserter > ( result ) ;
200+ }
201+
202+ #nullable disable
203+ [ Theory ]
204+ [ InlineData ( null ) ]
205+ [ InlineData ( "" ) ]
206+ public void WithHeaderNameAndValue_NullOrEmptyHeaderName_ThrowsArgumentNullException ( string headerName )
207+ {
208+ var sut = new HttpRequestMessageAsserter ( Enumerable . Empty < HttpRequestMessage > ( ) ) ;
209+
210+ var exception = Assert . Throws < ArgumentNullException > ( ( ) => sut . WithHeader ( headerName , "someValue" ) ) ;
211+
212+ Assert . Equal ( "headerName" , exception . ParamName ) ;
213+ }
214+
215+ [ Theory ]
216+ [ InlineData ( null ) ]
217+ [ InlineData ( "" ) ]
218+ public void WithHeaderNameAndValue_NullOrEmptyValue_ThrowsArgumentNullException ( string headerValue )
219+ {
220+ var sut = new HttpRequestMessageAsserter ( Enumerable . Empty < HttpRequestMessage > ( ) ) ;
221+
222+ var exception = Assert . Throws < ArgumentNullException > ( ( ) => sut . WithHeader ( "someHeader" , headerValue ) ) ;
223+
224+ Assert . Equal ( "headerValue" , exception . ParamName ) ;
225+ }
226+ #nullable restore
227+
228+ [ Fact ]
229+ public void WithHeaderNameAndValue_NoRequests_ThrowsHttpRequestMessageAssertionExceptionWithSpecificMessage ( )
230+ {
231+ var sut = new HttpRequestMessageAsserter ( Enumerable . Empty < HttpRequestMessage > ( ) ) ;
232+
233+ var exception = Assert . Throws < HttpRequestMessageAssertionException > ( ( ) => sut . WithHeader ( "someHeader" , "someValue" ) ) ;
234+
235+ Assert . Equal ( "Expected at least one request to be made with header 'someHeader' and value 'someValue', but no requests were made." , exception . Message ) ;
236+ }
237+
238+ [ Fact ]
239+ public void WithHeaderNameAndValue_RequestWithoutHeaders_ThrowsHttpRequestMessageAssertionExceptionWithSpecificMessage ( )
240+ {
241+ var request = new HttpRequestMessage ( ) ;
242+ var sut = new HttpRequestMessageAsserter ( new [ ] { request } ) ;
243+
244+ var exception = Assert . Throws < HttpRequestMessageAssertionException > ( ( ) => sut . WithHeader ( "api-version" , "1.0" ) ) ;
245+
246+ Assert . Equal ( "Expected at least one request to be made with header 'api-version' and value '1.0', but no requests were made." , exception . Message ) ;
247+ }
248+
249+ [ Fact ]
250+ public void WithHeaderNameAndValue_RequestWithNotMatchingHeaderName_ThrowsHttpRequestMessageAssertionExceptionWithSpecificMessage ( )
251+ {
252+ var request = new HttpRequestMessage ( ) ;
253+ request . Headers . Add ( "no-api-version" , "1.0" ) ;
254+ var sut = new HttpRequestMessageAsserter ( new [ ] { request } ) ;
255+
256+ var exception = Assert . Throws < HttpRequestMessageAssertionException > ( ( ) => sut . WithHeader ( "api-version" , "1.0" ) ) ;
257+
258+ Assert . Equal ( "Expected at least one request to be made with header 'api-version' and value '1.0', but no requests were made." , exception . Message ) ;
259+ }
260+
261+ [ Fact ]
262+ public void WithHeaderNameAndValue_RequestWithNotMatchingHeaderValue_ThrowsHttpRequestMessageAssertionExceptionWithSpecificMessage ( )
263+ {
264+ var request = new HttpRequestMessage ( ) ;
265+ request . Headers . Add ( "api-version" , "unknown" ) ;
266+ var sut = new HttpRequestMessageAsserter ( new [ ] { request } ) ;
267+
268+ var exception = Assert . Throws < HttpRequestMessageAssertionException > ( ( ) => sut . WithHeader ( "api-version" , "1.0" ) ) ;
269+
270+ Assert . Equal ( "Expected at least one request to be made with header 'api-version' and value '1.0', but no requests were made." , exception . Message ) ;
271+ }
272+
273+ [ Fact ]
274+ public void WithHeaderNameAndValue_RequestWithMatchinHeader_ReturnsHttpRequestMessageAssert ( )
275+ {
276+ var request = new HttpRequestMessage ( ) ;
277+ request . Headers . Add ( "api-version" , "1.0" ) ;
278+ var sut = new HttpRequestMessageAsserter ( new [ ] { request } ) ;
279+
280+ var result = sut . WithHeader ( "api-version" , "1.0" ) ;
281+
151282 Assert . NotNull ( result ) ;
152283 Assert . IsType < HttpRequestMessageAsserter > ( result ) ;
153284 }
0 commit comments