@@ -19,11 +19,13 @@ public class RpcMessageConversionExtensionsTests
19
19
[ InlineData ( "application/x-www-form-urlencoded’" , "say=Hi&to=Mom" ) ]
20
20
public void HttpObjects_StringBody ( string expectedContentType , object body )
21
21
{
22
+ var logger = MockNullLoggerFactory . CreateLogger ( ) ;
23
+
22
24
var headers = new HeaderDictionary ( ) ;
23
25
headers . Add ( "content-type" , expectedContentType ) ;
24
26
HttpRequest request = HttpTestHelpers . CreateHttpRequest ( "GET" , "http://localhost/api/httptrigger-scenarios" , headers , body ) ;
25
27
26
- var rpcRequestObject = request . ToRpc ( ) ;
28
+ var rpcRequestObject = request . ToRpc ( logger ) ;
27
29
Assert . Equal ( body . ToString ( ) , rpcRequestObject . Http . Body . String ) ;
28
30
29
31
string contentType ;
@@ -37,9 +39,11 @@ public void HttpObjects_StringBody(string expectedContentType, object body)
37
39
[ InlineData ( "say=Hi&to=" , new string [ ] { "say" } , new string [ ] { "Hi" } ) ] // Removes empty value query params
38
40
public void HttpObjects_Query ( string queryString , string [ ] expectedKeys , string [ ] expectedValues )
39
41
{
42
+ var logger = MockNullLoggerFactory . CreateLogger ( ) ;
43
+
40
44
HttpRequest request = HttpTestHelpers . CreateHttpRequest ( "GET" , $ "http://localhost/api/httptrigger-scenarios?{ queryString } ") ;
41
45
42
- var rpcRequestObject = request . ToRpc ( ) ;
46
+ var rpcRequestObject = request . ToRpc ( logger ) ;
43
47
// Same number of expected key value pairs
44
48
Assert . Equal ( rpcRequestObject . Http . Query . Count , expectedKeys . Length ) ;
45
49
Assert . Equal ( rpcRequestObject . Http . Query . Count , expectedValues . Length ) ;
@@ -91,30 +95,49 @@ public void ToBindingInfo_Defaults_EmptyDataType()
91
95
[ Fact ]
92
96
public void HttpObjects_ClaimsPrincipal ( )
93
97
{
98
+ var logger = MockNullLoggerFactory . CreateLogger ( ) ;
99
+
94
100
HttpRequest request = HttpTestHelpers . CreateHttpRequest ( "GET" , $ "http://localhost/apihttptrigger-scenarios") ;
95
101
96
- MockEasyAuth ( request , "facebook" , "Connor McMahon" , "10241897674253170" ) ;
102
+ var claimsIdentity1 = MockEasyAuth ( "facebook" , "Connor McMahon" , "10241897674253170" ) ;
103
+ var claimsIdentity2 = new ClaimsIdentity ( new List < Claim >
104
+ {
105
+ new Claim ( "http://schemas.microsoft.com/2017/07/functions/claims/authlevel" , "Function" )
106
+ } , "WebJobsAuthLevel" ) ;
107
+ var claimsIdentities = new List < ClaimsIdentity > { claimsIdentity1 , claimsIdentity2 } ;
108
+
109
+ request . HttpContext . User = new ClaimsPrincipal ( claimsIdentities ) ;
110
+
111
+ var rpcRequestObject = request . ToRpc ( logger ) ;
97
112
98
- var rpcRequestObject = request . ToRpc ( ) ;
99
- var identity = request . HttpContext . User . Identities . ToList ( ) . ElementAtOrDefault ( 0 ) ;
100
- var rpcIdentity = rpcRequestObject . Http . Identities . ElementAtOrDefault ( 0 ) ;
101
- Assert . NotNull ( identity ) ;
102
- Assert . NotNull ( rpcIdentity ) ;
113
+ var identities = request . HttpContext . User . Identities . ToList ( ) ;
114
+ var rpcIdentities = rpcRequestObject . Http . Identities . ToList ( ) ;
103
115
104
- Assert . Equal ( rpcIdentity . AuthenticationType , "facebook" ) ;
105
- Assert . Equal ( rpcIdentity . NameClaimType , "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" ) ;
106
- Assert . Equal ( rpcIdentity . RoleClaimType , "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" ) ;
116
+ Assert . Equal ( 2 , rpcIdentities . Count ) ;
107
117
108
- var claims = identity . Claims . ToList ( ) ;
109
- for ( int j = 0 ; j < claims . Count ; j ++ )
118
+ for ( int i = 0 ; i < identities . Count ; i ++ )
110
119
{
111
- Assert . True ( rpcIdentity . Claims . ElementAtOrDefault ( j ) != null ) ;
112
- Assert . Equal ( rpcIdentity . Claims [ j ] . Type , claims [ j ] . Type ) ;
113
- Assert . Equal ( rpcIdentity . Claims [ j ] . Value , claims [ j ] . Value ) ;
120
+ var identity = identities [ i ] ;
121
+ var rpcIdentity = rpcIdentities . ElementAtOrDefault ( i ) ;
122
+
123
+ Assert . NotNull ( identity ) ;
124
+ Assert . NotNull ( rpcIdentity ) ;
125
+
126
+ Assert . Equal ( rpcIdentity . AuthenticationType , identity . AuthenticationType ) ;
127
+ Assert . Equal ( rpcIdentity . NameClaimType , identity . NameClaimType ) ;
128
+ Assert . Equal ( rpcIdentity . RoleClaimType , identity . RoleClaimType ) ;
129
+
130
+ var claims = identity . Claims . ToList ( ) ;
131
+ for ( int j = 0 ; j < claims . Count ; j ++ )
132
+ {
133
+ Assert . True ( rpcIdentity . Claims . ElementAtOrDefault ( j ) != null ) ;
134
+ Assert . Equal ( rpcIdentity . Claims [ j ] . Type , claims [ j ] . Type ) ;
135
+ Assert . Equal ( rpcIdentity . Claims [ j ] . Value , claims [ j ] . Value ) ;
136
+ }
114
137
}
115
138
}
116
139
117
- internal static void MockEasyAuth ( HttpRequest request , string provider , string name , string id )
140
+ internal static ClaimsIdentity MockEasyAuth ( string provider , string name , string id )
118
141
{
119
142
var claims = new List < Claim >
120
143
{
@@ -129,7 +152,7 @@ internal static void MockEasyAuth(HttpRequest request, string provider, string n
129
152
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" ,
130
153
"http://schemas.microsoft.com/ws/2008/06/identity/claims/role" ) ;
131
154
132
- request . HttpContext . User = new ClaimsPrincipal ( new List < ClaimsIdentity > { identity } ) ;
155
+ return identity ;
133
156
}
134
157
}
135
158
}
0 commit comments