@@ -92,14 +92,14 @@ public void class_policy_fail()
92
92
}
93
93
94
94
[ Fact ]
95
- public void field_policy_success ( )
95
+ public void method_policy_success ( )
96
96
{
97
97
ConfigureAuthorizationOptions ( options => options . AddPolicy ( "FieldPolicy" , x => x . RequireClaim ( "admin" ) ) ) ;
98
98
99
99
ShouldPassRule ( config =>
100
100
{
101
101
config . Query = @"query { post }" ;
102
- config . Schema = BasicSchema < BasicQueryWithAttributesAndFieldPolicy > ( ) ;
102
+ config . Schema = BasicSchema < BasicQueryWithAttributesAndMethodPolicy > ( ) ;
103
103
config . User = CreatePrincipal ( claims : new Dictionary < string , string >
104
104
{
105
105
{ "Admin" , "true" }
@@ -108,14 +108,48 @@ public void field_policy_success()
108
108
}
109
109
110
110
[ Fact ]
111
- public void field_policy_fail ( )
111
+ public void property_policy_success ( )
112
+ {
113
+ ConfigureAuthorizationOptions ( options => options . AddPolicy ( "FieldPolicy" , x => x . RequireClaim ( "admin" ) ) ) ;
114
+
115
+ ShouldPassRule ( config =>
116
+ {
117
+ config . Query = @"query { post }" ;
118
+ config . Schema = BasicSchema < BasicQueryWithAttributesAndPropertyPolicy > ( ) ;
119
+ config . User = CreatePrincipal ( claims : new Dictionary < string , string >
120
+ {
121
+ { "Admin" , "true" }
122
+ } ) ;
123
+ } ) ;
124
+ }
125
+
126
+ [ Fact ]
127
+ public void method_policy_fail ( )
112
128
{
113
129
ConfigureAuthorizationOptions ( options => options . AddPolicy ( "FieldPolicy" , x => x . RequireClaim ( "admin" ) ) ) ;
114
130
115
131
ShouldFailRule ( config =>
116
132
{
117
133
config . Query = @"query { post }" ;
118
- config . Schema = BasicSchema < BasicQueryWithAttributesAndFieldPolicy > ( ) ;
134
+ config . Schema = BasicSchema < BasicQueryWithAttributesAndMethodPolicy > ( ) ;
135
+ config . ValidateResult = result =>
136
+ {
137
+ result . Errors . Count . ShouldBe ( 1 ) ;
138
+ result . Errors [ 0 ] . Message . ShouldBe ( @"You are not authorized to run this query.
139
+ Required claim 'admin' is not present." ) ;
140
+ } ;
141
+ } ) ;
142
+ }
143
+
144
+ [ Fact ]
145
+ public void property_policy_fail ( )
146
+ {
147
+ ConfigureAuthorizationOptions ( options => options . AddPolicy ( "FieldPolicy" , x => x . RequireClaim ( "admin" ) ) ) ;
148
+
149
+ ShouldFailRule ( config =>
150
+ {
151
+ config . Query = @"query { post }" ;
152
+ config . Schema = BasicSchema < BasicQueryWithAttributesAndPropertyPolicy > ( ) ;
119
153
config . ValidateResult = result =>
120
154
{
121
155
result . Errors . Count . ShouldBe ( 1 ) ;
@@ -284,13 +318,20 @@ public class BasicQueryWithAttributesAndClassPolicy
284
318
}
285
319
286
320
[ GraphQLMetadata ( "Query" ) ]
287
- public class BasicQueryWithAttributesAndFieldPolicy
321
+ public class BasicQueryWithAttributesAndMethodPolicy
288
322
{
289
323
[ GraphQLAuthorize ( Policy = "FieldPolicy" ) ]
290
324
[ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Style" , "IDE0060:Remove unused parameter" , Justification = "for tests" ) ]
291
325
public string Post ( string id ) => "" ;
292
326
}
293
327
328
+ [ GraphQLMetadata ( "Query" ) ]
329
+ public class BasicQueryWithAttributesAndPropertyPolicy
330
+ {
331
+ [ GraphQLAuthorize ( Policy = "FieldPolicy" ) ]
332
+ public string Post { get ; set ; } = "" ;
333
+ }
334
+
294
335
private ISchema NestedSchema ( )
295
336
{
296
337
string defs = @"
0 commit comments