@@ -2697,7 +2697,7 @@ public void DebugView_UseMiddleware_HasMiddleware()
2697
2697
// 3. Generated delegate name from app.Use(...)
2698
2698
Assert . Collection ( debugView . Middleware ,
2699
2699
m => Assert . Equal ( typeof ( MiddlewareWithInterface ) . FullName , m ) ,
2700
- m => Assert . Equal ( "Microsoft.AspNetCore.Authentication.AuthenticationMiddleware " , m ) ,
2700
+ m => Assert . StartsWith ( "Microsoft.AspNetCore.Builder.AuthAppBuilderExtensions " , m ) ,
2701
2701
m =>
2702
2702
{
2703
2703
Assert . Contains ( nameof ( DebugView_UseMiddleware_HasMiddleware ) , m ) ;
@@ -2747,8 +2747,8 @@ public async Task DebugView_UseMiddleware_HasEndpointsAndAuth_Run_HasAutomaticMi
2747
2747
Assert . Collection ( debugView . Middleware ,
2748
2748
m => Assert . Equal ( "Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware" , m ) ,
2749
2749
m => Assert . Equal ( "Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware" , m ) ,
2750
- m => Assert . Equal ( "Microsoft.AspNetCore.Authentication.AuthenticationMiddleware " , m ) ,
2751
- m => Assert . Equal ( "Microsoft.AspNetCore.Authorization.AuthorizationMiddlewareInternal " , m ) ,
2750
+ m => Assert . StartsWith ( "Microsoft.AspNetCore.Builder.AuthAppBuilderExtensions " , m ) ,
2751
+ m => Assert . StartsWith ( "Microsoft.AspNetCore.Builder.AuthorizationAppBuilderExtensions " , m ) ,
2752
2752
m => Assert . Equal ( typeof ( MiddlewareWithInterface ) . FullName , m ) ,
2753
2753
m => Assert . Equal ( "Microsoft.AspNetCore.Routing.EndpointMiddleware" , m ) ) ;
2754
2754
}
@@ -2838,6 +2838,176 @@ public async Task DebugView_Endpoints_UseEndpoints_AvailableBeforeAndAfterStart(
2838
2838
ep => Assert . Equal ( "/hello" , ep . Metadata . GetRequiredMetadata < IRouteDiagnosticsMetadata > ( ) . Route ) ) ;
2839
2839
}
2840
2840
2841
+ [ Fact ]
2842
+ public async Task ImplicitMiddlewares_RunAfterExplicitRouting_MapGet ( )
2843
+ {
2844
+ var builder = WebApplication . CreateBuilder ( ) ;
2845
+ builder . WebHost . UseTestServer ( ) ;
2846
+ builder . Services . AddAuthentication ( "testSchemeName" )
2847
+ . AddScheme < AuthenticationSchemeOptions , UberHandler > ( "testSchemeName" , "testDisplayName" , _ => { } ) ;
2848
+ builder . Services . AddAuthorization ( ) ;
2849
+ await using var app = builder . Build ( ) ;
2850
+ app . UseRouting ( ) ;
2851
+ app . MapGet ( "/" , ( HttpContext context , string username ) =>
2852
+ {
2853
+ Assert . NotNull ( context . Items [ "__AuthorizationMiddlewareWithEndpointInvoked" ] ) ;
2854
+ return $ "Hello { username } !";
2855
+ } ) . RequireAuthorization ( ) ;
2856
+
2857
+ await app . StartAsync ( ) ;
2858
+
2859
+ var client = app . GetTestClient ( ) ;
2860
+ var exception = await Record . ExceptionAsync ( async ( ) => await client . GetAsync ( "/?username=test" ) ) ;
2861
+ Assert . Null ( exception ) ;
2862
+ }
2863
+
2864
+ [ Fact ]
2865
+ public async Task ImplicitMiddlewares_RunBeforeImplicitRouting_TerminalMiddleware ( )
2866
+ {
2867
+ var builder = WebApplication . CreateBuilder ( ) ;
2868
+ builder . WebHost . UseTestServer ( ) ;
2869
+ builder . Services . AddAuthentication ( "testSchemeName" )
2870
+ . AddScheme < AuthenticationSchemeOptions , UberHandler > ( "testSchemeName" , "testDisplayName" , _ => { } ) ;
2871
+ builder . Services . AddAuthorization ( ) ;
2872
+ await using var app = builder . Build ( ) ;
2873
+ app . Run ( ( HttpContext context ) =>
2874
+ {
2875
+ Assert . NotNull ( context . Features . Get < IAuthenticationFeature > ( ) ) ;
2876
+ return context . Response . WriteAsync ( $ "Hello { context . Request . Query [ "username" ] } !") ;
2877
+ } ) ;
2878
+
2879
+ await app . StartAsync ( ) ;
2880
+
2881
+ var client = app . GetTestClient ( ) ;
2882
+ var response = await client . GetAsync ( "/?username=test" ) ;
2883
+ response . EnsureSuccessStatusCode ( ) ;
2884
+ Assert . Equal ( "Hello test!" , await response . Content . ReadAsStringAsync ( ) ) ;
2885
+ }
2886
+
2887
+ [ Fact ]
2888
+ public async Task ImplicitMiddlewares_RunBeforeExplicitRouting_TerminalMiddleware ( )
2889
+ {
2890
+ var builder = WebApplication . CreateBuilder ( ) ;
2891
+ builder . WebHost . UseTestServer ( ) ;
2892
+ builder . Services . AddAuthentication ( "testSchemeName" )
2893
+ . AddScheme < AuthenticationSchemeOptions , UberHandler > ( "testSchemeName" , "testDisplayName" , _ => { } ) ;
2894
+ builder . Services . AddAuthorization ( ) ;
2895
+ await using var app = builder . Build ( ) ;
2896
+
2897
+ app . Run ( ( HttpContext context ) =>
2898
+ {
2899
+ Assert . NotNull ( context . Features . Get < IAuthenticationFeature > ( ) ) ;
2900
+ return context . Response . WriteAsync ( $ "Hello { context . Request . Query [ "username" ] } !") ;
2901
+ } ) ;
2902
+
2903
+ app . UseRouting ( ) ;
2904
+
2905
+ await app . StartAsync ( ) ;
2906
+
2907
+ var client = app . GetTestClient ( ) ;
2908
+ var response = await client . GetAsync ( "/?username=test" ) ;
2909
+ response . EnsureSuccessStatusCode ( ) ;
2910
+ Assert . Equal ( "Hello test!" , await response . Content . ReadAsStringAsync ( ) ) ;
2911
+ }
2912
+
2913
+ [ Fact ]
2914
+ public async Task ImplicitMiddlewares_RunBeforeExplicitRouting_TerminalMiddleware_AfterUseRouting ( )
2915
+ {
2916
+ var builder = WebApplication . CreateBuilder ( ) ;
2917
+ builder . WebHost . UseTestServer ( ) ;
2918
+ builder . Services . AddAuthentication ( "testSchemeName" )
2919
+ . AddScheme < AuthenticationSchemeOptions , UberHandler > ( "testSchemeName" , "testDisplayName" , _ => { } ) ;
2920
+ builder . Services . AddAuthorization ( ) ;
2921
+ await using var app = builder . Build ( ) ;
2922
+
2923
+ app . UseRouting ( ) ;
2924
+
2925
+ app . Run ( ( HttpContext context ) =>
2926
+ {
2927
+ Assert . NotNull ( context . Features . Get < IAuthenticationFeature > ( ) ) ;
2928
+ return context . Response . WriteAsync ( $ "Hello { context . Request . Query [ "username" ] } !") ;
2929
+ } ) ;
2930
+
2931
+ await app . StartAsync ( ) ;
2932
+
2933
+ var client = app . GetTestClient ( ) ;
2934
+ var response = await client . GetAsync ( "/?username=test" ) ;
2935
+ response . EnsureSuccessStatusCode ( ) ;
2936
+ Assert . Equal ( "Hello test!" , await response . Content . ReadAsStringAsync ( ) ) ;
2937
+ }
2938
+
2939
+ [ Fact ]
2940
+ public async Task ImplicitMiddlewares_RunBetween_ExplicitRouting_TerminalMiddlewareMapGet ( )
2941
+ {
2942
+ var builder = WebApplication . CreateBuilder ( ) ;
2943
+ builder . WebHost . UseTestServer ( ) ;
2944
+ builder . Services . AddAuthentication ( "testSchemeName" )
2945
+ . AddScheme < AuthenticationSchemeOptions , UberHandler > ( "testSchemeName" , "testDisplayName" , _ => { } ) ;
2946
+ builder . Services . AddAuthorization ( ) ;
2947
+ await using var app = builder . Build ( ) ;
2948
+
2949
+ app . UseRouting ( ) ;
2950
+
2951
+ app . Run ( ( HttpContext context ) =>
2952
+ {
2953
+ Assert . NotNull ( context . Features . Get < IAuthenticationFeature > ( ) ) ;
2954
+ return context . Response . WriteAsync ( $ "Hello { context . Request . Query [ "username" ] } !") ;
2955
+ } ) ;
2956
+
2957
+ app . MapGet ( "/endpoint" , ( HttpContext context , string username ) =>
2958
+ {
2959
+ Assert . NotNull ( context . Items [ "__AuthorizationMiddlewareWithEndpointInvoked" ] ) ;
2960
+ Assert . NotNull ( context . Features . Get < IAuthenticationFeature > ( ) ) ;
2961
+ return $ "Hello { username } !";
2962
+ } ) . AllowAnonymous ( ) ;
2963
+
2964
+ await app . StartAsync ( ) ;
2965
+
2966
+ var client = app . GetTestClient ( ) ;
2967
+ var response = await client . GetAsync ( "/?username=test" ) ;
2968
+ response . EnsureSuccessStatusCode ( ) ;
2969
+ Assert . Equal ( "Hello test!" , await response . Content . ReadAsStringAsync ( ) ) ;
2970
+
2971
+ var endpointResponse = await client . GetAsync ( "/endpoint?username=test" ) ;
2972
+ endpointResponse . EnsureSuccessStatusCode ( ) ;
2973
+ Assert . Equal ( "Hello test!" , await endpointResponse . Content . ReadAsStringAsync ( ) ) ;
2974
+ }
2975
+
2976
+ [ Fact ]
2977
+ public async Task ImplicitMiddlewares_RunBetween_TerminalMiddlewareMapGet ( )
2978
+ {
2979
+ var builder = WebApplication . CreateBuilder ( ) ;
2980
+ builder . WebHost . UseTestServer ( ) ;
2981
+ builder . Services . AddAuthentication ( "testSchemeName" )
2982
+ . AddScheme < AuthenticationSchemeOptions , UberHandler > ( "testSchemeName" , "testDisplayName" , _ => { } ) ;
2983
+ builder . Services . AddAuthorization ( ) ;
2984
+ await using var app = builder . Build ( ) ;
2985
+
2986
+ app . Run ( ( HttpContext context ) =>
2987
+ {
2988
+ Assert . NotNull ( context . Features . Get < IAuthenticationFeature > ( ) ) ;
2989
+ return context . Response . WriteAsync ( $ "Hello { context . Request . Query [ "username" ] } !") ;
2990
+ } ) ;
2991
+
2992
+ app . MapGet ( "/endpoint" , ( HttpContext context , string username ) =>
2993
+ {
2994
+ Assert . NotNull ( context . Items [ "__AuthorizationMiddlewareWithEndpointInvoked" ] ) ;
2995
+ Assert . NotNull ( context . Features . Get < IAuthenticationFeature > ( ) ) ;
2996
+ return $ "Hello { username } !";
2997
+ } ) . AllowAnonymous ( ) ;
2998
+
2999
+ await app . StartAsync ( ) ;
3000
+
3001
+ var client = app . GetTestClient ( ) ;
3002
+ var response = await client . GetAsync ( "/?username=test" ) ;
3003
+ response . EnsureSuccessStatusCode ( ) ;
3004
+ Assert . Equal ( "Hello test!" , await response . Content . ReadAsStringAsync ( ) ) ;
3005
+
3006
+ var endpointResponse = await client . GetAsync ( "/endpoint?username=test" ) ;
3007
+ endpointResponse . EnsureSuccessStatusCode ( ) ;
3008
+ Assert . Equal ( "Hello test!" , await endpointResponse . Content . ReadAsStringAsync ( ) ) ;
3009
+ }
3010
+
2841
3011
private class MiddlewareWithInterface : IMiddleware
2842
3012
{
2843
3013
public Task InvokeAsync ( HttpContext context , RequestDelegate next )
0 commit comments