|
4 | 4 | using System.Globalization;
|
5 | 5 | using Microsoft.AspNetCore.Http.Features;
|
6 | 6 | using Microsoft.AspNetCore.Routing;
|
| 7 | +using Microsoft.AspNetCore.Shared; |
7 | 8 | using Microsoft.Extensions.Primitives;
|
8 | 9 |
|
9 | 10 | namespace Microsoft.AspNetCore.Http;
|
@@ -246,6 +247,97 @@ public void BodyReader_CanGet()
|
246 | 247 | Assert.NotNull(bodyPipe);
|
247 | 248 | }
|
248 | 249 |
|
| 250 | + [Fact] |
| 251 | + public void DebuggerToString_EmptyRequest() |
| 252 | + { |
| 253 | + var context = new DefaultHttpContext(); |
| 254 | + |
| 255 | + var debugText = HttpContextDebugFormatter.RequestToString(context.Request); |
| 256 | + Assert.Equal("(unspecified)", debugText); |
| 257 | + } |
| 258 | + |
| 259 | + [Fact] |
| 260 | + public void DebuggerToString_HasMethod() |
| 261 | + { |
| 262 | + var context = new DefaultHttpContext(); |
| 263 | + context.Request.Method = "GET"; |
| 264 | + |
| 265 | + var debugText = HttpContextDebugFormatter.RequestToString(context.Request); |
| 266 | + Assert.Equal("GET (unspecified)", debugText); |
| 267 | + } |
| 268 | + |
| 269 | + [Fact] |
| 270 | + public void DebuggerToString_HasProtocol() |
| 271 | + { |
| 272 | + var context = new DefaultHttpContext(); |
| 273 | + context.Request.Protocol = "HTTP/2"; |
| 274 | + |
| 275 | + var debugText = HttpContextDebugFormatter.RequestToString(context.Request); |
| 276 | + Assert.Equal("(unspecified) HTTP/2", debugText); |
| 277 | + } |
| 278 | + |
| 279 | + [Fact] |
| 280 | + public void DebuggerToString_HasContentType() |
| 281 | + { |
| 282 | + var context = new DefaultHttpContext(); |
| 283 | + context.Request.ContentType = "application/json"; |
| 284 | + |
| 285 | + var debugText = HttpContextDebugFormatter.RequestToString(context.Request); |
| 286 | + Assert.Equal("(unspecified) application/json", debugText); |
| 287 | + } |
| 288 | + |
| 289 | + [Fact] |
| 290 | + public void DebuggerToString_HasQueryString() |
| 291 | + { |
| 292 | + var context = new DefaultHttpContext(); |
| 293 | + context.Request.QueryString = new QueryString("?query=true"); |
| 294 | + |
| 295 | + var debugText = HttpContextDebugFormatter.RequestToString(context.Request); |
| 296 | + Assert.Equal("(unspecified)://(unspecified)?query=true", debugText); |
| 297 | + } |
| 298 | + |
| 299 | + [Fact] |
| 300 | + public void DebuggerToString_HasCompleteRequestUri() |
| 301 | + { |
| 302 | + var context = new DefaultHttpContext(); |
| 303 | + context.Request.Scheme = "http"; |
| 304 | + context.Request.Host = new HostString("localhost", 8080); |
| 305 | + context.Request.Path = "/Path"; |
| 306 | + context.Request.PathBase = "/PathBase"; |
| 307 | + context.Request.QueryString = new QueryString("?test=true"); |
| 308 | + |
| 309 | + var debugText = HttpContextDebugFormatter.RequestToString(context.Request); |
| 310 | + Assert.Equal("http://localhost:8080/PathBase/Path?test=true", debugText); |
| 311 | + } |
| 312 | + |
| 313 | + [Fact] |
| 314 | + public void DebuggerToString_HasPartialRequestUri() |
| 315 | + { |
| 316 | + var context = new DefaultHttpContext(); |
| 317 | + context.Request.Scheme = "http"; |
| 318 | + context.Request.Host = new HostString("localhost"); |
| 319 | + |
| 320 | + var debugText = HttpContextDebugFormatter.RequestToString(context.Request); |
| 321 | + Assert.Equal("http://localhost", debugText); |
| 322 | + } |
| 323 | + |
| 324 | + [Fact] |
| 325 | + public void DebuggerToString_HasEverything() |
| 326 | + { |
| 327 | + var context = new DefaultHttpContext(); |
| 328 | + context.Request.Method = "GET"; |
| 329 | + context.Request.Protocol = "HTTP/2"; |
| 330 | + context.Request.ContentType = "application/json"; |
| 331 | + context.Request.Scheme = "http"; |
| 332 | + context.Request.Host = new HostString("localhost", 8080); |
| 333 | + context.Request.Path = "/Path"; |
| 334 | + context.Request.PathBase = "/PathBase"; |
| 335 | + context.Request.QueryString = new QueryString("?test=true"); |
| 336 | + |
| 337 | + var debugText = HttpContextDebugFormatter.RequestToString(context.Request); |
| 338 | + Assert.Equal("GET http://localhost:8080/PathBase/Path?test=true HTTP/2 application/json", debugText); |
| 339 | + } |
| 340 | + |
249 | 341 | private class CustomRouteValuesFeature : IRouteValuesFeature
|
250 | 342 | {
|
251 | 343 | public RouteValueDictionary RouteValues { get; set; }
|
|
0 commit comments