1- using Microsoft . Azure . WebJobs . Script . WebHost ;
2- using Microsoft . Azure . WebJobs . Script . WebHost . Management ;
3- using Microsoft . Azure . WebJobs . Script . Workers . Rpc ;
4- using Microsoft . Extensions . DependencyInjection ;
5- using Microsoft . Extensions . DependencyInjection . Extensions ;
6- using Newtonsoft . Json ;
1+ // Copyright (c) .NET Foundation. All rights reserved.
2+ // Licensed under the MIT License. See License.txt in the project root for license information.
3+
74using System ;
85using System . Collections . Generic ;
96using System . Linq ;
107using System . Net ;
118using System . Net . Http ;
129using System . Net . Http . Headers ;
1310using System . Threading . Tasks ;
11+ using Microsoft . Azure . WebJobs . Script . WebHost ;
12+ using Microsoft . Azure . WebJobs . Script . WebHost . Management ;
13+ using Microsoft . Azure . WebJobs . Script . Workers . Rpc ;
14+ using Microsoft . Extensions . DependencyInjection ;
15+ using Microsoft . Extensions . DependencyInjection . Extensions ;
16+ using Newtonsoft . Json ;
1417using Xunit ;
1518
1619namespace Microsoft . Azure . WebJobs . Script . Tests . Integration . WebHostEndToEnd
@@ -67,7 +70,7 @@ public async Task InvokeFunction_FunctionLevel_ValidToken_Succeeds(string header
6770 {
6871 // if an admin token is passed, the function invocation succeeds
6972 HttpRequestMessage request = new HttpRequestMessage ( HttpMethod . Get , "api/HttpTrigger-FunctionAuth?code=test" ) ;
70- string token = _fixture . Host . GenerateAdminJwtToken ( ) ;
73+ string token = GetSWAAdminJwtToken ( ) ;
7174
7275 if ( string . Compare ( nameof ( HttpRequestHeader . Authorization ) , headerName ) == 0 )
7376 {
@@ -82,6 +85,16 @@ public async Task InvokeFunction_FunctionLevel_ValidToken_Succeeds(string header
8285 response . EnsureSuccessStatusCode ( ) ;
8386 }
8487
88+ private string GetSWAAdminJwtToken ( )
89+ {
90+ // Ensure we use AzureWebEncryptionKey to generate tokens, as that's what SWA does
91+ string keyValue = _fixture . SWAEncryptionKey ;
92+ byte [ ] keyBytes = keyValue . ToKeyBytes ( ) ;
93+ string token = _fixture . Host . GenerateAdminJwtToken ( key : keyBytes ) ;
94+
95+ return token ;
96+ }
97+
8598 [ Fact ]
8699 public async Task SyncTriggers_Succeeds ( )
87100 {
@@ -108,19 +121,28 @@ public class TestFixture : EndToEndTestFixture
108121
109122 public TestFixture ( ) : base ( @"TestScripts\CSharp" , "csharp" , RpcWorkerConstants . DotNetLanguageWorkerName , addTestSettings : false )
110123 {
124+ // SWA generates their own key and sets via AzureWebEncryptionKey
125+ // This should take precedence over the default key
111126 var testKeyBytes = TestHelpers . GenerateKeyBytes ( ) ;
112127 var testKey = TestHelpers . GenerateKeyHexString ( testKeyBytes ) ;
128+ SWAEncryptionKey = testKey ;
129+
130+ // Default key provisioned by Antares and available via WEBSITE_AUTH_ENCRYPTION_KEY
131+ var defaultTestKeyBytes = TestHelpers . GenerateKeyBytes ( ) ;
132+ var defaultTestKey = TestHelpers . GenerateKeyHexString ( defaultTestKeyBytes ) ;
113133
114134 var settings = new Dictionary < string , string > ( )
115135 {
116136 { "AzureWebEncryptionKey" , testKey } ,
117- { EnvironmentSettingNames . WebSiteAuthEncryptionKey , testKey } ,
137+ { EnvironmentSettingNames . WebSiteAuthEncryptionKey , defaultTestKey } ,
118138 { "AzureWebJobsStorage" , null } ,
119139 { EnvironmentSettingNames . AzureWebsiteName , "testsite" }
120140 } ;
121141 _scopedEnvironment = new TestScopedEnvironmentVariable ( settings ) ;
122142 }
123143
144+ public string SWAEncryptionKey { get ; }
145+
124146 public override void ConfigureScriptHost ( IWebJobsBuilder webJobsBuilder )
125147 {
126148 base . ConfigureScriptHost ( webJobsBuilder ) ;
0 commit comments