@@ -13,7 +13,7 @@ namespace LocalPortFiltering.AspNetCore.Tests;
1313public class LocalPortFilteringMiddlewareTests
1414{
1515 [ Fact ]
16- public async Task TestLocalPortFiltering_DefaultBehavior ( )
16+ public async Task LocalPortFiltering_DefaultBehavior ( )
1717 {
1818 // Arrange
1919 using var host = new HostBuilder ( )
@@ -48,7 +48,7 @@ public async Task TestLocalPortFiltering_DefaultBehavior()
4848 [ InlineData ( 403 , 4000 , new int [ ] { 3000 , 3001 } ) ]
4949 [ InlineData ( 200 , 1005 , new int [ ] { 1000 , 1001 , 1002 , 1003 , 1004 , 1005 , 1006 , 1007 , 1008 , 1009 , 1010 } ) ]
5050 [ InlineData ( 403 , 1500 , new int [ ] { 1000 , 1001 , 1002 , 1003 , 1004 , 1005 , 1006 , 1007 , 1008 , 1009 , 1010 } ) ]
51- public async Task TestLocalPortFiltering_RejectsBlockedPort ( int status , int localPort , int [ ] allowPort )
51+ public async Task LocalPortFiltering_RejectsBlockedPort ( int status , int localPort , int [ ] allowPort )
5252 {
5353 // Arrange
5454 var options = new LocalPortFilteringOptions ( ) ;
@@ -68,4 +68,46 @@ public async Task TestLocalPortFiltering_RejectsBlockedPort(int status, int loca
6868 // Assert
6969 Assert . Equal ( status , ( int ) httpContext . Response . StatusCode ) ;
7070 }
71+
72+ [ Theory ]
73+ [ InlineData ( true ) ]
74+ [ InlineData ( false ) ]
75+ public async Task LocalPortFiltering_Response ( bool includeFailureMessage )
76+ {
77+ // Arrange
78+ var options = new LocalPortFilteringOptions ( )
79+ {
80+ IncludeFailureMessage = includeFailureMessage
81+ } ;
82+ var optionsMonitor = new Mock < IOptionsMonitor < LocalPortFilteringOptions > > ( ) ;
83+ optionsMonitor . Setup ( o => o . CurrentValue )
84+ . Returns ( options )
85+ . Verifiable ( ) ;
86+ var middleware = new LocalPortFilteringMiddleware ( Mock . Of < RequestDelegate > ( ) , optionsMonitor . Object ) ;
87+
88+ var httpContext = new DefaultHttpContext ( ) ;
89+ httpContext . SetEndpoint ( new Endpoint ( c => Task . CompletedTask , new EndpointMetadataCollection ( new LocalPortFilteringAttribute ( 80 ) ) , "Test endpoint" ) ) ;
90+ httpContext . Connection . LocalPort = 443 ;
91+ using var responseBody = new MemoryStream ( ) ;
92+ httpContext . Response . Body = responseBody ;
93+
94+ // Act
95+ await middleware . Invoke ( httpContext ) ;
96+ responseBody . Seek ( 0 , SeekOrigin . Begin ) ;
97+ var responseContent = responseBody . ToArray ( ) ;
98+
99+ // Assert
100+ Assert . Equal ( 403 , httpContext . Response . StatusCode ) ;
101+ if ( includeFailureMessage )
102+ {
103+ Assert . Equal ( LocalPortFilteringMiddleware . DefaultResponse . Length , httpContext . Response . ContentLength ) ;
104+ Assert . Equal ( "application/json" , httpContext . Response . ContentType ) ;
105+ Assert . Equal ( LocalPortFilteringMiddleware . DefaultResponse , responseContent ) ;
106+ }
107+ else
108+ {
109+ Assert . Null ( httpContext . Response . ContentLength ) ;
110+ Assert . Empty ( responseContent ) ;
111+ }
112+ }
71113}
0 commit comments