@@ -102,6 +102,26 @@ public async Task Invoke_OnCall_SetsEndpointFeatureAndResetsEndpoint()
102
102
Assert . Null ( endpointFeature . Endpoint ) ;
103
103
}
104
104
105
+ [ Fact ]
106
+ public async Task Invoke_OnCall_SetsEndpointFeatureAndResetsRouteValues ( )
107
+ {
108
+ // Arrange
109
+ var httpContext = CreateHttpContext ( ) ;
110
+ var initialRouteData = new RouteData ( ) ;
111
+ initialRouteData . Values [ "test" ] = true ;
112
+ httpContext . Features . Set < IRoutingFeature > ( new RoutingFeature ( )
113
+ {
114
+ RouteData = initialRouteData ,
115
+ } ) ;
116
+ var middleware = CreateMiddleware ( ) ;
117
+
118
+ // Act
119
+ await middleware . Invoke ( httpContext ) ;
120
+
121
+ // Assert
122
+ Assert . Null ( httpContext . GetRouteValue ( "test" ) ) ;
123
+ }
124
+
105
125
[ Fact ]
106
126
public async Task Invoke_SkipsRoutingAndMaintainsEndpoint_IfEndpointSet ( )
107
127
{
@@ -162,45 +182,59 @@ public async Task Invoke_BackCompatGetRouteValue_ValueUsedFromEndpointFeature()
162
182
{
163
183
// Arrange
164
184
var httpContext = CreateHttpContext ( ) ;
185
+ var nextCalled = false ;
165
186
166
- var middleware = CreateMiddleware ( ) ;
187
+ var middleware = CreateMiddleware ( next : context =>
188
+ {
189
+ var routeData = httpContext . GetRouteData ( ) ;
190
+ var routeValue = httpContext . GetRouteValue ( "controller" ) ;
191
+ var routeValuesFeature = httpContext . Features . Get < IRouteValuesFeature > ( ) ;
192
+ nextCalled = true ;
167
193
168
- // Act
169
- await middleware . Invoke ( httpContext ) ;
170
- var routeData = httpContext . GetRouteData ( ) ;
171
- var routeValue = httpContext . GetRouteValue ( "controller" ) ;
172
- var routeValuesFeature = httpContext . Features . Get < IRouteValuesFeature > ( ) ;
194
+ // Assert
195
+ Assert . NotNull ( routeData ) ;
196
+ Assert . Equal ( "Home" , ( string ) routeValue ) ;
173
197
174
- // Assert
175
- Assert . NotNull ( routeData ) ;
176
- Assert . Equal ( "Home " , ( string ) routeValue ) ;
198
+ // changing route data value is reflected in endpoint feature values
199
+ routeData . Values [ "testKey" ] = "testValue" ;
200
+ Assert . Equal ( "testValue " , routeValuesFeature . RouteValues [ "testKey" ] ) ;
177
201
178
- // changing route data value is reflected in endpoint feature values
179
- routeData . Values [ "testKey" ] = "testValue" ;
180
- Assert . Equal ( "testValue" , routeValuesFeature . RouteValues [ "testKey" ] ) ;
202
+ return Task . CompletedTask ;
203
+ } ) ;
204
+
205
+ // Act & Assert
206
+ await middleware . Invoke ( httpContext ) ;
207
+ Assert . True ( nextCalled ) ;
181
208
}
182
209
183
210
[ Fact ]
184
211
public async Task Invoke_BackCompatGetDataTokens_ValueUsedFromEndpointMetadata ( )
185
212
{
186
213
// Arrange
187
214
var httpContext = CreateHttpContext ( ) ;
215
+ var called = false ;
188
216
189
- var middleware = CreateMiddleware ( ) ;
217
+ var middleware = CreateMiddleware ( next : context =>
218
+ {
219
+ var routeData = httpContext . GetRouteData ( ) ;
220
+ var routeValue = httpContext . GetRouteValue ( "controller" ) ;
221
+ var routeValuesFeature = httpContext . Features . Get < IRouteValuesFeature > ( ) ;
222
+ called = true ;
190
223
191
- // Act
192
- await middleware . Invoke ( httpContext ) ;
193
- var routeData = httpContext . GetRouteData ( ) ;
194
- var routeValue = httpContext . GetRouteValue ( "controller" ) ;
195
- var routeValuesFeature = httpContext . Features . Get < IRouteValuesFeature > ( ) ;
224
+ // Assert
225
+ Assert . NotNull ( routeData ) ;
226
+ Assert . Equal ( "Home" , ( string ) routeValue ) ;
196
227
197
- // Assert
198
- Assert . NotNull ( routeData ) ;
199
- Assert . Equal ( "Home" , ( string ) routeValue ) ;
228
+ // changing route data value is reflected in endpoint feature values
229
+ routeData . Values [ "testKey" ] = "testValue" ;
230
+ Assert . Equal ( "testValue" , routeValuesFeature . RouteValues [ "testKey" ] ) ;
231
+
232
+ return Task . CompletedTask ;
233
+ } ) ;
200
234
201
- // changing route data value is reflected in endpoint feature values
202
- routeData . Values [ "testKey" ] = "testValue" ;
203
- Assert . Equal ( "testValue" , routeValuesFeature . RouteValues [ "testKey" ] ) ;
235
+ // Act & Assert
236
+ await middleware . Invoke ( httpContext ) ;
237
+ Assert . True ( called ) ;
204
238
}
205
239
206
240
[ Fact ]
0 commit comments