@@ -597,7 +597,7 @@ public async Task Invoke_HasEndpointWithNoMetadata_RunsCors()
597597 }
598598
599599 [ Fact ]
600- public async Task Invoke_HasEndpointWithEnableMetadata_RunsCorsWithPolicyName ( )
600+ public async Task Invoke_HasEndpointWithEnableMetadata_MiddlewareHasPolicyName_RunsCorsWithPolicyName ( )
601601 {
602602 // Arrange
603603 var corsService = Mock . Of < ICorsService > ( ) ;
@@ -626,6 +626,74 @@ public async Task Invoke_HasEndpointWithEnableMetadata_RunsCorsWithPolicyName()
626626 Times . Once ) ;
627627 }
628628
629+ [ Fact ]
630+ public async Task Invoke_HasEndpointWithEnableMetadata_MiddlewareHasPolicy_RunsCorsWithPolicyName ( )
631+ {
632+ // Arrange
633+ var policy = new CorsPolicyBuilder ( ) . Build ( ) ;
634+ var corsService = Mock . Of < ICorsService > ( ) ;
635+ var mockProvider = new Mock < ICorsPolicyProvider > ( ) ;
636+ var loggerFactory = NullLoggerFactory . Instance ;
637+ mockProvider . Setup ( o => o . GetPolicyAsync ( It . IsAny < HttpContext > ( ) , It . IsAny < string > ( ) ) )
638+ . Returns ( Task . FromResult < CorsPolicy > ( null ) )
639+ . Verifiable ( ) ;
640+
641+ var middleware = new CorsMiddleware (
642+ Mock . Of < RequestDelegate > ( ) ,
643+ corsService ,
644+ policy ,
645+ loggerFactory ) ;
646+
647+ var httpContext = new DefaultHttpContext ( ) ;
648+ httpContext . SetEndpoint ( new Endpoint ( c => Task . CompletedTask , new EndpointMetadataCollection ( new EnableCorsAttribute ( "MetadataPolicyName" ) ) , "Test endpoint" ) ) ;
649+ httpContext . Request . Headers . Add ( CorsConstants . Origin , new [ ] { "http://example.com" } ) ;
650+
651+ // Act
652+ await middleware . Invoke ( httpContext , mockProvider . Object ) ;
653+
654+ // Assert
655+ mockProvider . Verify (
656+ o => o . GetPolicyAsync ( It . IsAny < HttpContext > ( ) , "MetadataPolicyName" ) ,
657+ Times . Once ) ;
658+ }
659+
660+ [ Fact ]
661+ public async Task Invoke_HasEndpointWithEnableMetadataWithNoName_RunsCorsWithStaticPolicy ( )
662+ {
663+ // Arrange
664+ var policy = new CorsPolicyBuilder ( ) . Build ( ) ;
665+ var mockCorsService = new Mock < ICorsService > ( ) ;
666+ var mockProvider = new Mock < ICorsPolicyProvider > ( ) ;
667+ var loggerFactory = NullLoggerFactory . Instance ;
668+ mockProvider . Setup ( o => o . GetPolicyAsync ( It . IsAny < HttpContext > ( ) , It . IsAny < string > ( ) ) )
669+ . Returns ( Task . FromResult < CorsPolicy > ( null ) )
670+ . Verifiable ( ) ;
671+ mockCorsService . Setup ( o => o . EvaluatePolicy ( It . IsAny < HttpContext > ( ) , It . IsAny < CorsPolicy > ( ) ) )
672+ . Returns ( new CorsResult ( ) )
673+ . Verifiable ( ) ;
674+
675+ var middleware = new CorsMiddleware (
676+ Mock . Of < RequestDelegate > ( ) ,
677+ mockCorsService . Object ,
678+ policy ,
679+ loggerFactory ) ;
680+
681+ var httpContext = new DefaultHttpContext ( ) ;
682+ httpContext . SetEndpoint ( new Endpoint ( c => Task . CompletedTask , new EndpointMetadataCollection ( new EnableCorsAttribute ( ) ) , "Test endpoint" ) ) ;
683+ httpContext . Request . Headers . Add ( CorsConstants . Origin , new [ ] { "http://example.com" } ) ;
684+
685+ // Act
686+ await middleware . Invoke ( httpContext , mockProvider . Object ) ;
687+
688+ // Assert
689+ mockProvider . Verify (
690+ o => o . GetPolicyAsync ( It . IsAny < HttpContext > ( ) , It . IsAny < string > ( ) ) ,
691+ Times . Never ) ;
692+ mockCorsService . Verify (
693+ o => o . EvaluatePolicy ( It . IsAny < HttpContext > ( ) , policy ) ,
694+ Times . Once ) ;
695+ }
696+
629697 [ Fact ]
630698 public async Task Invoke_HasEndpointWithDisableMetadata_SkipCors ( )
631699 {
0 commit comments