Skip to content

Commit 68afa77

Browse files
authored
Update test matrix + support for >= 4.2 (#148)
1 parent 1c817bf commit 68afa77

File tree

9 files changed

+28
-51
lines changed

9 files changed

+28
-51
lines changed

.editorconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ insert_final_newline = false
3232
[*.cs]
3333
indent_size = 4
3434

35+
[*.txt]
36+
insert_final_newline = false
37+
3538
# Code files
3639
[*.{cs,vb}]
3740

.github/workflows/test.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,22 @@ jobs:
3030
- ubuntu-latest
3131
- windows-latest
3232
graphqlversion:
33-
- 4.0.2
33+
- 4.2.0
34+
- 4.4.0
3435
steps:
3536
- name: Checkout source
3637
uses: actions/checkout@v2
3738
- name: Setup .NET Core 3.1 SDK
3839
uses: actions/setup-dotnet@v1
3940
with:
40-
dotnet-version: '3.1.x'
41+
dotnet-version: "3.1.x"
4142
source-url: https://nuget.pkg.github.com/graphql-dotnet/index.json
4243
env:
4344
NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
4445
- name: Setup .NET Core 5.0 SDK
4546
uses: actions/setup-dotnet@v1
4647
with:
47-
dotnet-version: '5.0.x'
48+
dotnet-version: "5.0.x"
4849
source-url: https://nuget.pkg.github.com/graphql-dotnet/index.json
4950
env:
5051
NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,23 @@ A toolset for authorizing access to graph types for [GraphQL.NET](https://github
2121

2222
Provides the following packages:
2323

24-
| Package | Downloads | NuGet Latest |
25-
|-----------------------|-------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|
26-
| GraphQL.Authorization | [![Nuget](https://img.shields.io/nuget/dt/GraphQL.Authorization)](https://www.nuget.org/packages/GraphQL.Authorization) | [![Nuget](https://img.shields.io/nuget/v/GraphQL.Authorization)](https://www.nuget.org/packages/GraphQL.Authorization) |
24+
| Package | Downloads | NuGet Latest |
25+
| --------------------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
26+
| GraphQL.Authorization | [![Nuget](https://img.shields.io/nuget/dt/GraphQL.Authorization)](https://www.nuget.org/packages/GraphQL.Authorization) | [![Nuget](https://img.shields.io/nuget/v/GraphQL.Authorization)](https://www.nuget.org/packages/GraphQL.Authorization) |
2727

2828
You can get all preview versions from [GitHub Packages](https://github.com/orgs/graphql-dotnet/packages?repo_name=authorization).
2929
Note that GitHub requires authentication to consume the feed. See [here](https://docs.github.com/en/free-pro-team@latest/packages/publishing-and-managing-packages/about-github-packages#authenticating-to-github-packages).
3030

3131
# Usage
3232

33-
* Register the authorization classes in your DI container - `IAuthorizationEvaluator`, `AuthorizationSettings`, and the `AuthorizationValidationRule`.
34-
* Provide a custom `UserContext` class that implements `IProvideClaimsPrincipal`.
35-
* Add policies to the `AuthorizationSettings`.
36-
* Apply a policy to a GraphType or Field (both implement `IProvideMetadata`):
33+
- Register the authorization classes in your DI container - `IAuthorizationEvaluator`, `AuthorizationSettings`, and the `AuthorizationValidationRule`.
34+
- Provide a custom `UserContext` class that implements `IProvideClaimsPrincipal`.
35+
- Add policies to the `AuthorizationSettings`.
36+
- Apply a policy to a GraphType or Field (both implement `IProvideMetadata`):
3737
- using `AuthorizeWith(string policy)` extension method
3838
- or with `GraphQLAuthorize` attribute if using Schema + Handler syntax.
39-
* The `AuthorizationValidationRule` will run and verify the policies based on the registered policies.
40-
* You can write your own `IAuthorizationRequirement`.
39+
- The `AuthorizationValidationRule` will run and verify the policies based on the registered policies.
40+
- You can write your own `IAuthorizationRequirement`.
4141

4242
# Examples
4343

@@ -61,20 +61,20 @@ public class MyType : ObjectGraphType
6161
4. Schema first syntax - use `GraphQLAuthorize` attribute on type, method or property.
6262

6363
```csharp
64-
[GraphQLAuthorize(Policy = "MyPolicy")]
64+
[GraphQLAuthorize("MyPolicy")]
6565
public class MutationType
6666
{
67-
[GraphQLAuthorize(Policy = "AnotherPolicy")]
67+
[GraphQLAuthorize("AnotherPolicy")]
6868
public async Task<string> CreateSomething(MyInput input)
6969
{
7070
return await SomeMethodAsync(input);
7171
}
7272

73-
[GraphQLAuthorize(Policy = "SuperPolicy")]
73+
[GraphQLAuthorize("SuperPolicy")]
7474
public string SomeProperty => Guid.NewGuid().ToString();
7575
}
7676
```
7777

7878
# Known Issues
7979

80-
* It is currently not possible to add a policy to Input objects using Schema first approach.
80+
- It is currently not possible to add a policy to Input objects using Schema first approach.

src/BasicSample/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public class Query
7575
/// <summary>
7676
/// Resolver for 'Query.viewer' field.
7777
/// </summary>
78-
[GraphQLAuthorize(Policy = "AdminPolicy")]
78+
[GraphQLAuthorize("AdminPolicy")]
7979
public User Viewer() => new User { Id = Guid.NewGuid().ToString(), Name = "Quinn" };
8080

8181
/// <summary>

src/GraphQL.Authorization.ApiTests/GraphQL.Authorization.approved.txt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,6 @@ namespace GraphQL.Authorization
6565
public ClaimAuthorizationRequirement(string claimType, System.Collections.Generic.IEnumerable<string> allowedValues, System.Collections.Generic.IEnumerable<string> displayValues) { }
6666
public System.Threading.Tasks.Task Authorize(GraphQL.Authorization.AuthorizationContext context) { }
6767
}
68-
public class GraphQLAuthorizeAttribute : GraphQL.GraphQLAttribute
69-
{
70-
public GraphQLAuthorizeAttribute() { }
71-
public string Policy { get; set; }
72-
public override void Modify(GraphQL.Utilities.FieldConfig field) { }
73-
public override void Modify(GraphQL.Utilities.TypeConfig type) { }
74-
}
7568
public interface IAuthorizationEvaluator
7669
{
7770
System.Threading.Tasks.Task<GraphQL.Authorization.AuthorizationResult> Evaluate(System.Security.Claims.ClaimsPrincipal principal, System.Collections.Generic.IDictionary<string, object> userContext, System.Collections.Generic.IReadOnlyDictionary<string, object> inputs, System.Collections.Generic.IEnumerable<string> requiredPolicies);

src/GraphQL.Authorization.Tests/AuthorizationSchemaBuilderTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ type Query {
3030
}
3131

3232
[GraphQLMetadata("Query")]
33-
[GraphQLAuthorize(Policy = "ClassPolicy")]
33+
[GraphQLAuthorize("ClassPolicy")]
3434
public class QueryWithAttributes
3535
{
36-
[GraphQLAuthorize(Policy = "FieldPolicy")]
36+
[GraphQLAuthorize("FieldPolicy")]
3737
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "test")]
3838
public string Post(string id) => "";
3939
}

src/GraphQL.Authorization.Tests/AuthorizationValidationRuleTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,10 +218,10 @@ type Query {
218218
}
219219

220220
[GraphQLMetadata("Query")]
221-
[GraphQLAuthorize(Policy = "ClassPolicy")]
221+
[GraphQLAuthorize("ClassPolicy")]
222222
public class BasicQueryWithAttributes
223223
{
224-
[GraphQLAuthorize(Policy = "FieldPolicy")]
224+
[GraphQLAuthorize("FieldPolicy")]
225225
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "test")]
226226
public string Post(string id) => "";
227227
}
@@ -258,7 +258,7 @@ public class NestedQueryWithAttributes
258258
public IEnumerable<Post> PostsNonNull() => null;
259259
}
260260

261-
[GraphQLAuthorize(Policy = "PostPolicy")]
261+
[GraphQLAuthorize("PostPolicy")]
262262
public class Post
263263
{
264264
public string Id { get; set; }

src/GraphQL.Authorization/GraphQLAuthorizeAttribute.cs

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/Harness/GraphQL.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Security.Claims;
4+
using GraphQL;
45
using GraphQL.Authorization;
56

67
namespace Harness
@@ -22,7 +23,7 @@ public class Query
2223
/// <summary>
2324
/// Resolver for 'Query.viewer' field.
2425
/// </summary>
25-
[GraphQLAuthorize(Policy = "AdminPolicy")]
26+
[GraphQLAuthorize("AdminPolicy")]
2627
public User Viewer() => new User { Id = Guid.NewGuid().ToString(), Name = "Quinn" };
2728

2829
/// <summary>

0 commit comments

Comments
 (0)