Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="6.0.10" />
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="6.0.10" />
<PackageVersion Include="Microsoft.Azure.Cosmos" Version="3.20.0" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="3.0.0" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="5.0.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
Expand Down
2 changes: 1 addition & 1 deletion src/Service.Tests/Authorization/AuthorizationHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public static RuntimeConfig InitRuntimeConfig(
string entityName = TEST_ENTITY,
object? entitySource = null,
string roleName = "Reader",
Operation operation = Operation.Create,
Config.Operation operation = Config.Operation.Create,
HashSet<string>? includedCols = null,
HashSet<string>? excludedCols = null,
string? databasePolicy = null,
Expand Down
188 changes: 94 additions & 94 deletions src/Service.Tests/Authorization/AuthorizationResolverUnitTests.cs

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using System;
using System.Collections.Generic;
using Azure.DataApiBuilder.Auth;
using Azure.DataApiBuilder.Config;
using Azure.DataApiBuilder.Service.Authorization;
using Azure.DataApiBuilder.Service.Exceptions;
using Azure.DataApiBuilder.Service.GraphQLBuilder.Mutations;
Expand Down Expand Up @@ -116,7 +115,7 @@ private static SqlMutationEngine SetupTestFixture(bool isAuthorized)
_authorizationResolver.Setup(x => x.AreColumnsAllowedForOperation(
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<Operation>(),
It.IsAny<Config.Operation>(),
It.IsAny<IEnumerable<string>>()
)).Returns(isAuthorized);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ public class GraphQLMutationAuthorizationUnitTests
/// <param name="operationType"></param>
/// <param name="rolesDefinedInPermissions"></param>
/// <param name="expectedAuthorizeDirective"></param>
[DataRow(Operation.Create, new string[] { }, "",
[DataRow(Config.Operation.Create, new string[] { }, "",
DisplayName = "No Roles -> Expects no objectTypeDefinition created")]
[DataRow(Operation.Create, new string[] { "role1" }, @"@authorize(roles: [""role1""])",
[DataRow(Config.Operation.Create, new string[] { "role1" }, @"@authorize(roles: [""role1""])",
DisplayName = "One Role added to Authorize Directive")]
[DataRow(Operation.Create, new string[] { "role1", "role2" }, @"@authorize(roles: [""role1"",""role2""])",
[DataRow(Config.Operation.Create, new string[] { "role1", "role2" }, @"@authorize(roles: [""role1"",""role2""])",
DisplayName = "Two Roles added to Authorize Directive")]
[DataTestMethod]
public void AuthorizeDirectiveAddedForMutation(Operation operationType, string[] rolesDefinedInPermissions, string expectedAuthorizeDirective)
public void AuthorizeDirectiveAddedForMutation(Config.Operation operationType, string[] rolesDefinedInPermissions, string expectedAuthorizeDirective)
{
string gql =
@"
Expand All @@ -43,7 +43,7 @@ type Foo @model(name: ""Foo""){
entities: new Dictionary<string, Entity> { { "Foo", GraphQLTestHelpers.GenerateEmptyEntity() } },
entityPermissionsMap: GraphQLTestHelpers.CreateStubEntityPermissionsMap(
entityNames: new string[] { "Foo" },
operations: new Operation[] { operationType },
operations: new Config.Operation[] { operationType },
roles: rolesDefinedInPermissions)
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ type Foo @model(name: ""Foo""){
inputTypes: new(),
GraphQLTestHelpers.CreateStubEntityPermissionsMap(
entityNames: new string[] { "Foo" },
operations: new Operation[] { Operation.Read },
operations: new Config.Operation[] { Config.Operation.Read },
roles: rolesDefinedInPermissions)
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,22 +147,22 @@ public async Task EntityRoleOperationPermissionsRequirementTest(
authorizationResolver.Setup(x => x.AreRoleAndOperationDefinedForEntity(
AuthorizationHelpers.TEST_ENTITY,
AuthorizationHelpers.TEST_ROLE,
Operation.Create
Config.Operation.Create
)).Returns(isValidCreateRoleOperation);
authorizationResolver.Setup(x => x.AreRoleAndOperationDefinedForEntity(
AuthorizationHelpers.TEST_ENTITY,
AuthorizationHelpers.TEST_ROLE,
Operation.Read
Config.Operation.Read
)).Returns(isValidReadRoleOperation);
authorizationResolver.Setup(x => x.AreRoleAndOperationDefinedForEntity(
AuthorizationHelpers.TEST_ENTITY,
AuthorizationHelpers.TEST_ROLE,
Operation.Update
Config.Operation.Update
)).Returns(isValidUpdateRoleOperation);
authorizationResolver.Setup(x => x.AreRoleAndOperationDefinedForEntity(
AuthorizationHelpers.TEST_ENTITY,
AuthorizationHelpers.TEST_ROLE,
Operation.Delete
Config.Operation.Delete
)).Returns(isValidDeleteRoleOperation);

HttpContext httpContext = CreateHttpContext(httpMethod);
Expand Down Expand Up @@ -257,13 +257,13 @@ public async Task FindColumnPermissionsTests(string[] columnsRequestedInput,
authorizationResolver.Setup(x => x.AreColumnsAllowedForOperation(
AuthorizationHelpers.TEST_ENTITY,
AuthorizationHelpers.TEST_ROLE,
Operation.Read,
Config.Operation.Read,
It.IsAny<IEnumerable<string>>() // Can be any IEnumerable<string>, as find request result field list is depedent on AllowedColumns.
)).Returns(areColumnsAllowed);
authorizationResolver.Setup(x => x.GetAllowedExposedColumns(
AuthorizationHelpers.TEST_ENTITY,
AuthorizationHelpers.TEST_ROLE,
Operation.Read
Config.Operation.Read
)).Returns(allowedColumns);

string httpMethod = HttpConstants.GET;
Expand Down Expand Up @@ -365,7 +365,7 @@ private static AuthorizationResolver SetupAuthResolverWithWildcardOperation()
RuntimeConfig runtimeConfig = AuthorizationHelpers.InitRuntimeConfig(
entityName: AuthorizationHelpers.TEST_ENTITY,
roleName: "admin",
operation: Operation.All);
operation: Config.Operation.All);

// Override the operation to be a list of string for wildcard instead of a list of object created by InitRuntimeConfig()
//
Expand Down
14 changes: 7 additions & 7 deletions src/Service.Tests/Configuration/ConfigurationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ public void TestCorrectSerializationOfSourceObject(
entityName: "MyEntity",
entitySource: entitySource,
roleName: "Anonymous",
operation: Operation.All,
operation: Config.Operation.All,
includedCols: null,
excludedCols: null,
databasePolicy: null
Expand Down Expand Up @@ -272,7 +272,7 @@ public async Task TestSqlSettingPostStartupConfigurations()
entityName: POST_STARTUP_CONFIG_ENTITY,
entitySource: POST_STARTUP_CONFIG_ENTITY_SOURCE,
roleName: POST_STARTUP_CONFIG_ROLE,
operation: Operation.Read,
operation: Config.Operation.Read,
includedCols: new HashSet<string>() { "*" });

ConfigurationPostParameters config = GetPostStartupConfigParams(MSSQL_ENVIRONMENT, configuration);
Expand Down Expand Up @@ -534,9 +534,9 @@ private static void ConfigFileDeserializationValidationHelper(string jsonString)
{
foreach (object operation in permission.Operations)
{
HashSet<Operation> allowedActions =
new() { Operation.All, Operation.Create, Operation.Read,
Operation.Update, Operation.Delete };
HashSet<Config.Operation> allowedActions =
new() { Config.Operation.All, Config.Operation.Create, Config.Operation.Read,
Config.Operation.Update, Config.Operation.Delete };
Assert.IsTrue(((JsonElement)operation).ValueKind == JsonValueKind.String ||
((JsonElement)operation).ValueKind == JsonValueKind.Object);
if (((JsonElement)operation).ValueKind == JsonValueKind.Object)
Expand All @@ -551,7 +551,7 @@ private static void ConfigFileDeserializationValidationHelper(string jsonString)
}
else
{
Operation name = AuthorizationResolver.WILDCARD.Equals(operation.ToString()) ? Operation.All : ((JsonElement)operation).Deserialize<Operation>(RuntimeConfig.SerializerOptions);
Config.Operation name = AuthorizationResolver.WILDCARD.Equals(operation.ToString()) ? Config.Operation.All : ((JsonElement)operation).Deserialize<Config.Operation>(RuntimeConfig.SerializerOptions);
Assert.IsTrue(allowedActions.Contains(name));
}
}
Expand Down Expand Up @@ -1098,7 +1098,7 @@ public static RuntimeConfig InitMinimalRuntimeConfig(Dictionary<GlobalSettingsTy
public static PermissionSetting GetMinimalPermissionConfig(string roleName)
{
PermissionOperation actionForRole = new(
Name: Operation.All,
Name: Config.Operation.All,
Fields: null,
Policy: new(request: null, database: null)
);
Expand Down
2 changes: 1 addition & 1 deletion src/Service.Tests/CosmosTests/TestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ private static Dictionary<string, EntityMetadata> GetEntityPermissionsMap(string
{
return GraphQLTestHelpers.CreateStubEntityPermissionsMap(
entityNames: entities,
operations: new Operation[] { Operation.Create, Operation.Read, Operation.Update, Operation.Delete },
operations: new Config.Operation[] { Config.Operation.Create, Config.Operation.Read, Config.Operation.Update, Config.Operation.Delete },
roles: new string[] { "anonymous", "authenticated" }
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,14 @@ type People @model(name:""People"") {
/// <param name="operations">Actions performed on entity to resolve authorization permissions.</param>
/// <param name="roles">Collection of role names allowed to perform action on entity.</param>
/// <returns>EntityPermissionsMap Key/Value collection.</returns>
public static Dictionary<string, EntityMetadata> CreateStubEntityPermissionsMap(string[] entityNames, IEnumerable<Operation> operations, IEnumerable<string> roles)
public static Dictionary<string, EntityMetadata> CreateStubEntityPermissionsMap(string[] entityNames, IEnumerable<Config.Operation> operations, IEnumerable<string> roles)
{
EntityMetadata entityMetadata = new()
{
OperationToRolesMap = new Dictionary<Operation, List<string>>()
OperationToRolesMap = new Dictionary<Config.Operation, List<string>>()
};

foreach (Operation operation in operations)
foreach (Config.Operation operation in operations)
{
entityMetadata.OperationToRolesMap.Add(operation, roles.ToList());
}
Expand Down
10 changes: 5 additions & 5 deletions src/Service.Tests/GraphQLBuilder/MutationBuilderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public void SetupEntityPermissionsMap()
{
_entityPermissions = GraphQLTestHelpers.CreateStubEntityPermissionsMap(
new string[] { "Foo", "Baz", "Bar" },
new Operation[] { Operation.Create, Operation.Update, Operation.Delete },
new Config.Operation[] { Config.Operation.Create, Config.Operation.Update, Config.Operation.Delete },
new string[] { "anonymous", "authenticated" }
);
}
Expand Down Expand Up @@ -64,7 +64,7 @@ type Foo @model(name:""Foo"") {
Dictionary<string, EntityMetadata> entityPermissionsMap
= GraphQLTestHelpers.CreateStubEntityPermissionsMap(
new string[] { "Foo" },
new Operation[] { Operation.Create },
new Config.Operation[] { Config.Operation.Create },
roles);
DocumentNode mutationRoot = MutationBuilder.Build(root,
DatabaseType.cosmos,
Expand Down Expand Up @@ -605,7 +605,7 @@ type Foo @model(name:""Foo"") {
Dictionary<string, EntityMetadata> entityPermissionsMap
= GraphQLTestHelpers.CreateStubEntityPermissionsMap(
new string[] { "Foo" },
new Operation[] { Operation.Delete },
new Config.Operation[] { Config.Operation.Delete },
roles);
DocumentNode mutationRoot = MutationBuilder.Build(root,
DatabaseType.cosmos,
Expand Down Expand Up @@ -711,7 +711,7 @@ type Foo @model(name:""Foo"") {
Dictionary<string, EntityMetadata> entityPermissionsMap
= GraphQLTestHelpers.CreateStubEntityPermissionsMap(
new string[] { "Foo" },
new Operation[] { Operation.Update },
new Config.Operation[] { Config.Operation.Update },
roles);
DocumentNode mutationRoot = MutationBuilder.Build(
root,
Expand Down Expand Up @@ -959,7 +959,7 @@ string expectedName
DocumentNode root = Utf8GraphQLParser.Parse(gql);
Dictionary<string, EntityMetadata> entityPermissionsMap = GraphQLTestHelpers.CreateStubEntityPermissionsMap(
new string[] { entityName },
new Operation[] { Operation.Create, Operation.Update, Operation.Delete },
new Config.Operation[] { Config.Operation.Create, Config.Operation.Update, Config.Operation.Delete },
new string[] { "anonymous", "authenticated" });

Entity entity = (singularName is not null)
Expand Down
8 changes: 4 additions & 4 deletions src/Service.Tests/GraphQLBuilder/QueryBuilderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public void SetupEntityPermissionsMap()
{
_entityPermissions = GraphQLTestHelpers.CreateStubEntityPermissionsMap(
new string[] { "Foo" },
new Operation[] { Operation.Read },
new Config.Operation[] { Config.Operation.Read },
new string[] { "anonymous", "authenticated" }
);
}
Expand Down Expand Up @@ -57,7 +57,7 @@ type Foo @model(name:""Foo"") {
Dictionary<string, EntityMetadata> entityPermissionsMap
= GraphQLTestHelpers.CreateStubEntityPermissionsMap(
new string[] { "Foo" },
new Operation[] { Operation.Read },
new Config.Operation[] { Config.Operation.Read },
roles);
DocumentNode queryRoot = QueryBuilder.Build(
root,
Expand Down Expand Up @@ -132,7 +132,7 @@ type foo @model(name:""foo"") {
Dictionary<string, EntityMetadata> entityPermissionsMap
= GraphQLTestHelpers.CreateStubEntityPermissionsMap(
new string[] { "foo" },
new Operation[] { Operation.Read },
new Config.Operation[] { Config.Operation.Read },
roles);
DocumentNode queryRoot = QueryBuilder.Build(
root,
Expand Down Expand Up @@ -334,7 +334,7 @@ string expectedNameInDescription
Dictionary<string, EntityMetadata> entityPermissionsMap
= GraphQLTestHelpers.CreateStubEntityPermissionsMap(
new string[] { entityName },
new Operation[] { Operation.Read },
new Config.Operation[] { Config.Operation.Read },
new string[] { "anonymous", "authenticated" });

Entity entity = (singularName is not null)
Expand Down
Loading