File tree Expand file tree Collapse file tree 4 files changed +65
-0
lines changed
GenericHostWebSite/Controllers Expand file tree Collapse file tree 4 files changed +65
-0
lines changed Original file line number Diff line number Diff line change @@ -173,6 +173,7 @@ private static bool ShouldKeepVerb(HttpResponseMessage response) =>
173173 private bool IsRedirect ( HttpResponseMessage response ) =>
174174 response . StatusCode == HttpStatusCode . MovedPermanently ||
175175 response . StatusCode == HttpStatusCode . Redirect ||
176+ response . StatusCode == HttpStatusCode . RedirectMethod ||
176177 response . StatusCode == HttpStatusCode . RedirectKeepVerb ||
177178 ( int ) response . StatusCode == 308 ;
178179 }
Original file line number Diff line number Diff line change @@ -114,6 +114,20 @@ public async Task TestingInfrastructure_RedirectHandlerUsesOriginalRequestHeader
114114 Assert . Equal ( "false" , modifiedHeaderWasSent ) ;
115115 }
116116
117+ [ Fact ]
118+ public async Task TestingInfrastructure_RedirectHandlerFollowsStatusCode303 ( )
119+ {
120+ // Act
121+ var request = new HttpRequestMessage ( HttpMethod . Get , "Testing/RedirectHandler/Redirect303" ) ;
122+ var client = Factory . CreateDefaultClient (
123+ new RedirectHandler ( ) ) ;
124+ var response = await client . SendAsync ( request ) ;
125+
126+ // Assert
127+ Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
128+ Assert . Equal ( "Test" , await response . Content . ReadAsStringAsync ( ) ) ;
129+ }
130+
117131 [ Fact ]
118132 public async Task TestingInfrastructure_PostRedirectGetWorksWithCookies ( )
119133 {
Original file line number Diff line number Diff line change 44using System . Linq ;
55using System . Threading . Tasks ;
66using Microsoft . AspNetCore . Mvc ;
7+ using System . Net ;
78
89namespace BasicWebSite . Controllers
910{
@@ -63,6 +64,30 @@ public IActionResult RedirectHandlerHeadersRedirect()
6364 }
6465 }
6566
67+ [ HttpGet ( "Testing/RedirectHandler/Redirect303" ) ]
68+ public IActionResult RedirectHandlerStatusCode303 ( )
69+ {
70+ return new RedirectUsingStatusCode ( "Testing/Builder" , HttpStatusCode . SeeOther ) ;
71+ }
72+
73+ public class RedirectUsingStatusCode : ActionResult
74+ {
75+ private string _url ;
76+ private HttpStatusCode _statusCode ;
77+
78+ public RedirectUsingStatusCode ( string url , HttpStatusCode statusCode )
79+ {
80+ _url = url ;
81+ _statusCode = statusCode ;
82+ }
83+
84+ public override void ExecuteResult ( ActionContext context )
85+ {
86+ context . HttpContext . Response . Redirect ( _url ) ;
87+ context . HttpContext . Response . StatusCode = ( int ) _statusCode ;
88+ }
89+ }
90+
6691 [ HttpGet ( "Testing/AntiforgerySimulator/{value}" ) ]
6792 public IActionResult AntiforgerySimulator ( [ FromRoute ] int value )
6893 {
Original file line number Diff line number Diff line change 44using System . Linq ;
55using System . Threading . Tasks ;
66using Microsoft . AspNetCore . Mvc ;
7+ using System . Net ;
78
89namespace GenericHostWebSite . Controllers
910{
@@ -63,6 +64,30 @@ public IActionResult RedirectHandlerHeadersRedirect()
6364 }
6465 }
6566
67+ [ HttpGet ( "Testing/RedirectHandler/Redirect303" ) ]
68+ public IActionResult RedirectHandlerStatusCode303 ( )
69+ {
70+ return new RedirectUsingStatusCode ( "Testing/Builder" , HttpStatusCode . SeeOther ) ;
71+ }
72+
73+ public class RedirectUsingStatusCode : ActionResult
74+ {
75+ private string _url ;
76+ private HttpStatusCode _statusCode ;
77+
78+ public RedirectUsingStatusCode ( string url , HttpStatusCode statusCode )
79+ {
80+ _url = url ;
81+ _statusCode = statusCode ;
82+ }
83+
84+ public override void ExecuteResult ( ActionContext context )
85+ {
86+ context . HttpContext . Response . Redirect ( _url ) ;
87+ context . HttpContext . Response . StatusCode = ( int ) _statusCode ;
88+ }
89+ }
90+
6691 [ HttpGet ( "Testing/AntiforgerySimulator/{value}" ) ]
6792 public IActionResult AntiforgerySimulator ( [ FromRoute ] int value )
6893 {
You can’t perform that action at this time.
0 commit comments