Skip to content

Commit 916ddec

Browse files
authored
Add tests for properties marked with attribute (#681)
1 parent 7d780f7 commit 916ddec

File tree

1 file changed

+46
-5
lines changed

1 file changed

+46
-5
lines changed

tests/Authorization.AspNetCore.Tests/AuthorizationValidationRuleTests.cs

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,14 @@ public void class_policy_fail()
9292
}
9393

9494
[Fact]
95-
public void field_policy_success()
95+
public void method_policy_success()
9696
{
9797
ConfigureAuthorizationOptions(options => options.AddPolicy("FieldPolicy", x => x.RequireClaim("admin")));
9898

9999
ShouldPassRule(config =>
100100
{
101101
config.Query = @"query { post }";
102-
config.Schema = BasicSchema<BasicQueryWithAttributesAndFieldPolicy>();
102+
config.Schema = BasicSchema<BasicQueryWithAttributesAndMethodPolicy>();
103103
config.User = CreatePrincipal(claims: new Dictionary<string, string>
104104
{
105105
{ "Admin", "true" }
@@ -108,14 +108,48 @@ public void field_policy_success()
108108
}
109109

110110
[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()
112128
{
113129
ConfigureAuthorizationOptions(options => options.AddPolicy("FieldPolicy", x => x.RequireClaim("admin")));
114130

115131
ShouldFailRule(config =>
116132
{
117133
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>();
119153
config.ValidateResult = result =>
120154
{
121155
result.Errors.Count.ShouldBe(1);
@@ -284,13 +318,20 @@ public class BasicQueryWithAttributesAndClassPolicy
284318
}
285319

286320
[GraphQLMetadata("Query")]
287-
public class BasicQueryWithAttributesAndFieldPolicy
321+
public class BasicQueryWithAttributesAndMethodPolicy
288322
{
289323
[GraphQLAuthorize(Policy = "FieldPolicy")]
290324
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "for tests")]
291325
public string Post(string id) => "";
292326
}
293327

328+
[GraphQLMetadata("Query")]
329+
public class BasicQueryWithAttributesAndPropertyPolicy
330+
{
331+
[GraphQLAuthorize(Policy = "FieldPolicy")]
332+
public string Post { get; set; } = "";
333+
}
334+
294335
private ISchema NestedSchema()
295336
{
296337
string defs = @"

0 commit comments

Comments
 (0)