6
6
using System . Net ;
7
7
using System . Net . Http ;
8
8
using System . Net . Http . Headers ;
9
+ using System . Text ;
9
10
using System . Threading . Tasks ;
10
11
using Microsoft . Azure . WebJobs . Script . WebHost ;
11
12
using Microsoft . Azure . WebJobs . Script . WebHost . Management ;
@@ -30,10 +31,18 @@ public JwtTokenAuthTests(TestFixture fixture)
30
31
31
32
[ Theory ]
32
33
[ InlineData ( nameof ( HttpRequestHeader . Authorization ) ) ]
33
- [ InlineData ( nameof ( HttpRequestHeader . Authorization ) , ScriptConstants . AdminJwtAppServiceIssuer , ScriptConstants . AdminJwtAppServiceIssuer ) ]
34
+ [ InlineData ( nameof ( HttpRequestHeader . Authorization ) , "https://appservice.core.azurewebsites.net" , "https://testsite.azurewebsites.net" ) ]
35
+ [ InlineData ( nameof ( HttpRequestHeader . Authorization ) , "https://appservice.core.azurewebsites.net" , "https://testsite.azurewebsites.net/azurefunctions" ) ]
36
+ [ InlineData ( nameof ( HttpRequestHeader . Authorization ) , "https://testsite.scm.azurewebsites.net" , "https://testsite.azurewebsites.net" ) ]
37
+ [ InlineData ( nameof ( HttpRequestHeader . Authorization ) , "https://testsite.scm.azurewebsites.net" , "https://testsite.azurewebsites.net/azurefunctions" ) ]
38
+ [ InlineData ( nameof ( HttpRequestHeader . Authorization ) , "https://testsite.azurewebsites.net" , "https://testsite.azurewebsites.net" ) ]
34
39
[ InlineData ( ScriptConstants . SiteTokenHeaderName ) ]
35
- [ InlineData ( ScriptConstants . SiteTokenHeaderName , ScriptConstants . AdminJwtAppServiceIssuer , ScriptConstants . AdminJwtAppServiceIssuer ) ]
36
- public async Task InvokeAdminApi_ValidToken_Succeeds ( string headerName , string audience = null , string issuer = null )
40
+ [ InlineData ( ScriptConstants . SiteTokenHeaderName , "https://appservice.core.azurewebsites.net" , "https://testsite.azurewebsites.net" ) ]
41
+ [ InlineData ( ScriptConstants . SiteTokenHeaderName , "https://appservice.core.azurewebsites.net" , "https://testsite.azurewebsites.net/azurefunctions" ) ]
42
+ [ InlineData ( ScriptConstants . SiteTokenHeaderName , "https://testsite.scm.azurewebsites.net" , "https://testsite.azurewebsites.net" ) ]
43
+ [ InlineData ( ScriptConstants . SiteTokenHeaderName , "https://testsite.scm.azurewebsites.net" , "https://testsite.azurewebsites.net/azurefunctions" ) ]
44
+ [ InlineData ( ScriptConstants . SiteTokenHeaderName , "https://testsite.azurewebsites.net" , "https://testsite.azurewebsites.net" ) ]
45
+ public async Task InvokeAdminApi_ValidToken_Succeeds ( string headerName , string issuer = null , string audience = null )
37
46
{
38
47
HttpRequestMessage request = new HttpRequestMessage ( HttpMethod . Get , "admin/host/status" ) ;
39
48
string token = _fixture . Host . GenerateAdminJwtToken ( audience , issuer ) ;
@@ -72,6 +81,18 @@ public async Task InvokeAdminApi_InvalidToken_Fails(string headerName)
72
81
Assert . Equal ( HttpStatusCode . Unauthorized , response . StatusCode ) ;
73
82
}
74
83
84
+ [ Fact ]
85
+ public async Task InvokeAdminApi_ValidToken_UTF8Encoding_Succeeds ( )
86
+ {
87
+ HttpRequestMessage request = new HttpRequestMessage ( HttpMethod . Get , "admin/host/status" ) ;
88
+ string key = SecretsUtility . GetEncryptionKeyValue ( ) ;
89
+ string token = _fixture . Host . GenerateAdminJwtToken ( key : Encoding . UTF8 . GetBytes ( key ) ) ;
90
+ request . Headers . Add ( ScriptConstants . SiteTokenHeaderName , token ) ;
91
+
92
+ var response = await _fixture . Host . HttpClient . SendAsync ( request ) ;
93
+ response . EnsureSuccessStatusCode ( ) ;
94
+ }
95
+
75
96
public class TestFixture : EndToEndTestFixture
76
97
{
77
98
private TestScopedEnvironmentVariable _scopedEnvironment ;
0 commit comments