1414using Microsoft . Extensions . DependencyInjection ;
1515using Microsoft . Extensions . DependencyInjection . Extensions ;
1616using Microsoft . Extensions . Logging ;
17+ using Newtonsoft . Json ;
1718using Xunit ;
1819
1920namespace Microsoft . Azure . WebJobs . Script . Tests . Integration . WebHostEndToEnd
@@ -84,7 +85,7 @@ public async Task InvokeAdminApi_InvalidAudience_Fails(string headerName)
8485 var response = await _fixture . Host . HttpClient . SendAsync ( request ) ;
8586 Assert . Equal ( HttpStatusCode . Unauthorized , response . StatusCode ) ;
8687
87- var validationError = _fixture . Host . GetScriptHostLogMessages ( ) . Single ( p => p . Level == LogLevel . Error ) ;
88+ var validationError = _fixture . Host . GetScriptHostLogMessages ( ) . Single ( p => p . Level == LogLevel . Debug ) ;
8889 Assert . Equal ( ScriptConstants . LogCategoryHostAuthentication , validationError . Category ) ;
8990 Assert . Equal ( "Token audience validation failed for audience 'invalid'." , validationError . FormattedMessage ) ;
9091 Assert . True ( validationError . Exception . Message . StartsWith ( "IDX10231: Audience validation failed." ) ) ;
@@ -112,7 +113,7 @@ public async Task InvokeAdminApi_InvalidIssuer_Fails(string headerName)
112113 var response = await _fixture . Host . HttpClient . SendAsync ( request ) ;
113114 Assert . Equal ( HttpStatusCode . Unauthorized , response . StatusCode ) ;
114115
115- var validationError = _fixture . Host . GetScriptHostLogMessages ( ) . Single ( p => p . Level == LogLevel . Error ) ;
116+ var validationError = _fixture . Host . GetScriptHostLogMessages ( ) . Single ( p => p . Level == LogLevel . Debug ) ;
116117 Assert . Equal ( ScriptConstants . LogCategoryHostAuthentication , validationError . Category ) ;
117118 Assert . Equal ( "Token issuer validation failed for issuer 'invalid'." , validationError . FormattedMessage ) ;
118119 Assert . Equal ( "IDX10205: Issuer validation failed." , validationError . Exception . Message ) ;
@@ -142,7 +143,7 @@ public async Task InvokeAdminApi_InvalidSignature_Fails(string headerName)
142143 var response = await _fixture . Host . HttpClient . SendAsync ( request ) ;
143144 Assert . Equal ( HttpStatusCode . Unauthorized , response . StatusCode ) ;
144145
145- var validationError = _fixture . Host . GetScriptHostLogMessages ( ) . Single ( p => p . Level == LogLevel . Error ) ;
146+ var validationError = _fixture . Host . GetScriptHostLogMessages ( ) . Single ( p => p . Level == LogLevel . Debug ) ;
146147 Assert . Equal ( ScriptConstants . LogCategoryHostAuthentication , validationError . Category ) ;
147148 Assert . Equal ( "Token validation failed." , validationError . FormattedMessage ) ;
148149 Assert . True ( validationError . Exception . Message . StartsWith ( "IDX10503: Signature validation failed." ) ) ;
@@ -160,6 +161,22 @@ public async Task InvokeAdminApi_ValidToken_UTF8Encoding_Succeeds()
160161 response . EnsureSuccessStatusCode ( ) ;
161162 }
162163
164+ [ Fact ]
165+ public async Task InvokeNonAdminApi_InvalidToken_DoesNotLogTokenAuthFailure ( )
166+ {
167+ HttpRequestMessage request = new HttpRequestMessage ( HttpMethod . Post , $ "api/HttpTrigger-Scenarios?code=test") ;
168+ request . Content = new StringContent ( JsonConvert . SerializeObject ( new { scenario = "staticWebApp" } ) ) ;
169+ string key = SecretsUtility . GetEncryptionKeyValue ( ) ;
170+ string token = _fixture . Host . GenerateAdminJwtToken ( issuer : "invalid" ) ;
171+ request . Headers . Add ( ScriptConstants . SiteTokenHeaderName , token ) ;
172+
173+ var response = await _fixture . Host . HttpClient . SendAsync ( request ) ;
174+ response . EnsureSuccessStatusCode ( ) ;
175+
176+ var validationErrors = _fixture . Host . GetScriptHostLogMessages ( ) . Where ( p => p . Category == ScriptConstants . LogCategoryHostAuthentication ) . ToArray ( ) ;
177+ Assert . Empty ( validationErrors ) ;
178+ }
179+
163180 public class TestFixture : EndToEndTestFixture
164181 {
165182 private TestScopedEnvironmentVariable _scopedEnvironment ;
0 commit comments