diff --git a/Volo.Abp.sln b/Volo.Abp.sln
index b8e408ed89..4969f315ae 100644
--- a/Volo.Abp.sln
+++ b/Volo.Abp.sln
@@ -268,6 +268,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Permissions.Domain
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Permissions.EntityFrameworkCore", "src\Volo.Abp.Permissions.EntityFrameworkCore\Volo.Abp.Permissions.EntityFrameworkCore.csproj", "{2300E155-2621-4FCF-BD44-B61BA5A92B82}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Permissions.Tests", "test\Volo.Abp.Permissions.Tests\Volo.Abp.Permissions.Tests.csproj", "{7B4D2BEB-DE3E-4533-8CD4-7BBB30414647}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -698,6 +700,10 @@ Global
{2300E155-2621-4FCF-BD44-B61BA5A92B82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2300E155-2621-4FCF-BD44-B61BA5A92B82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2300E155-2621-4FCF-BD44-B61BA5A92B82}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7B4D2BEB-DE3E-4533-8CD4-7BBB30414647}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7B4D2BEB-DE3E-4533-8CD4-7BBB30414647}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7B4D2BEB-DE3E-4533-8CD4-7BBB30414647}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7B4D2BEB-DE3E-4533-8CD4-7BBB30414647}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -828,6 +834,7 @@ Global
{D77E0662-8404-43C5-9C46-6289EA207A40} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
{E4D0326C-515D-46FA-AF7E-1AC32155BD03} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
{2300E155-2621-4FCF-BD44-B61BA5A92B82} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
+ {7B4D2BEB-DE3E-4533-8CD4-7BBB30414647} = {37087D1B-3693-4E96-983D-A69F210BDE53}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}
diff --git a/test/Volo.Abp.Permissions.Tests/Volo.Abp.Permissions.Tests.csproj b/test/Volo.Abp.Permissions.Tests/Volo.Abp.Permissions.Tests.csproj
new file mode 100644
index 0000000000..3de3b2ada0
--- /dev/null
+++ b/test/Volo.Abp.Permissions.Tests/Volo.Abp.Permissions.Tests.csproj
@@ -0,0 +1,25 @@
+
+
+
+ netcoreapp2.0
+ Volo.Abp.Permissions.Tests
+ Volo.Abp.Permissions.Tests
+ true
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestBase.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestBase.cs
new file mode 100644
index 0000000000..d6c5ea2d4f
--- /dev/null
+++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestBase.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Volo.Abp.Permissions.EntityFrameworkCore;
+using Volo.Abp.Session;
+using Volo.Abp.TestBase;
+
+namespace Volo.Abp.Permissions
+{
+ public class AbpPermissionTestBase : AbpIntegratedTest
+ {
+ protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
+ {
+ options.UseAutofac();
+ }
+
+ protected virtual void UsingDbContext(Action action)
+ {
+ using (var dbContext = GetRequiredService())
+ {
+ action.Invoke(dbContext);
+ }
+ }
+
+ protected virtual T UsingDbContext(Func action)
+ {
+ using (var dbContext = GetRequiredService())
+ {
+ return action.Invoke(dbContext);
+ }
+ }
+
+ protected List GetSettingsFromDbContext(string entityType, string entityId, string name)
+ {
+ return UsingDbContext(context =>
+ context.PermissionGrants.Where(
+ s =>
+ s.ProviderName == UserSettingValueProvider.ProviderName &&
+ s.ProviderKey == AbpPermissionTestDataBuilder.User1Id.ToString() &&
+ s.Name == "MySetting2"
+ ).ToList()
+ );
+ }
+ }
+}
diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestDataBuilder.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestDataBuilder.cs
new file mode 100644
index 0000000000..4556b19a12
--- /dev/null
+++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestDataBuilder.cs
@@ -0,0 +1,26 @@
+using System;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Guids;
+
+namespace Volo.Abp.Permissions
+{
+ public class AbpPermissionTestDataBuilder : ITransientDependency
+ {
+ public static Guid User1Id = Guid.NewGuid();
+ public static Guid User2Id = Guid.NewGuid();
+
+ private readonly IPermissionGrantRepository _permissionGrantRepository;
+ private readonly IGuidGenerator _guidGenerator;
+
+ public AbpPermissionTestDataBuilder(IGuidGenerator guidGenerator, IPermissionGrantRepository permissionGrantRepository)
+ {
+ _guidGenerator = guidGenerator;
+ _permissionGrantRepository = permissionGrantRepository;
+ }
+
+ public void Build()
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestModule.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestModule.cs
new file mode 100644
index 0000000000..99a336fc7e
--- /dev/null
+++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestModule.cs
@@ -0,0 +1,61 @@
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Autofac;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.Modularity;
+using Volo.Abp.Permissions.EntityFrameworkCore;
+using Volo.Abp.Session;
+using Volo.Abp.Uow;
+
+namespace Volo.Abp.Permissions
+{
+ [DependsOn(
+ typeof(AbpPermissionsEntityFrameworkCoreModule),
+ typeof(AbpSessionModule),
+ typeof(AbpAutofacModule))]
+ public class AbpPermissionTestModule : AbpModule
+ {
+ public override void ConfigureServices(IServiceCollection services)
+ {
+ services.AddAssemblyOf();
+
+ services.AddEntityFrameworkInMemoryDatabase();
+
+ var databaseName = Guid.NewGuid().ToString();
+
+ services.Configure(options =>
+ {
+ options.Configure(context =>
+ {
+ context.DbContextOptions.UseInMemoryDatabase(databaseName);
+ });
+ });
+
+ services.Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; //EF in-memory database does not support transactions
+ });
+
+ services.Configure(options =>
+ {
+ options.DefinitionProviders.Add();
+ });
+ }
+
+ public override void OnApplicationInitialization(ApplicationInitializationContext context)
+ {
+ SeedTestData(context);
+ }
+
+ private static void SeedTestData(ApplicationInitializationContext context)
+ {
+ using (var scope = context.ServiceProvider.CreateScope())
+ {
+ scope.ServiceProvider
+ .GetRequiredService()
+ .Build();
+ }
+ }
+ }
+}
diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_Basic_Tests.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_Basic_Tests.cs
new file mode 100644
index 0000000000..619d7dee2f
--- /dev/null
+++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_Basic_Tests.cs
@@ -0,0 +1,22 @@
+using System.Threading.Tasks;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.Permissions
+{
+ public class PermissionManager_Basic_Tests : AbpPermissionTestBase
+ {
+ private readonly IPermissionManager _permissionManager;
+
+ public PermissionManager_Basic_Tests()
+ {
+ _permissionManager = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task Test1()
+ {
+ _permissionManager.ShouldNotBeNull();
+ }
+ }
+}
diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/TestPermissionDefinitionProvider.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/TestPermissionDefinitionProvider.cs
new file mode 100644
index 0000000000..de773c8f90
--- /dev/null
+++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/TestPermissionDefinitionProvider.cs
@@ -0,0 +1,13 @@
+namespace Volo.Abp.Permissions
+{
+ public class TestPermissionDefinitionProvider : PermissionDefinitionProvider
+ {
+ public override void Define(IPermissionDefinitionContext context)
+ {
+ var myPermission1 = new PermissionDefinition("MyPermission1");
+ var myPermission2 = new PermissionDefinition("MyPermission2");
+
+ context.Add(myPermission1, myPermission2);
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpIdentityTestDataBuilder.cs b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingTestDataBuilder.cs
similarity index 89%
rename from test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpIdentityTestDataBuilder.cs
rename to test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingTestDataBuilder.cs
index 73488df1b4..b97b322bc8 100644
--- a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpIdentityTestDataBuilder.cs
+++ b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingTestDataBuilder.cs
@@ -5,7 +5,7 @@ using Volo.Abp.Session;
namespace Volo.Abp.Settings
{
- public class AbpIdentityTestDataBuilder : ITransientDependency
+ public class AbpSettingTestDataBuilder : ITransientDependency
{
public static Guid User1Id = Guid.NewGuid();
public static Guid User2Id = Guid.NewGuid();
@@ -13,7 +13,7 @@ namespace Volo.Abp.Settings
private readonly ISettingRepository _settingRepository;
private readonly IGuidGenerator _guidGenerator;
- public AbpIdentityTestDataBuilder(ISettingRepository settingRepository, IGuidGenerator guidGenerator)
+ public AbpSettingTestDataBuilder(ISettingRepository settingRepository, IGuidGenerator guidGenerator)
{
_settingRepository = settingRepository;
_guidGenerator = guidGenerator;
diff --git a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpIdentityApplicationTestBase.cs b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestBase.cs
similarity index 93%
rename from test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpIdentityApplicationTestBase.cs
rename to test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestBase.cs
index d30568aca4..40f89d2796 100644
--- a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpIdentityApplicationTestBase.cs
+++ b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestBase.cs
@@ -36,7 +36,7 @@ namespace Volo.Abp.Settings
context.Settings.Where(
s =>
s.ProviderName == UserSettingValueProvider.ProviderName &&
- s.ProviderKey == AbpIdentityTestDataBuilder.User1Id.ToString() &&
+ s.ProviderKey == AbpSettingTestDataBuilder.User1Id.ToString() &&
s.Name == "MySetting2"
).ToList()
);
diff --git a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpIdentityApplicationTestModule.cs b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestModule.cs
similarity index 96%
rename from test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpIdentityApplicationTestModule.cs
rename to test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestModule.cs
index a231bab412..89bfa03ee3 100644
--- a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpIdentityApplicationTestModule.cs
+++ b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestModule.cs
@@ -53,7 +53,7 @@ namespace Volo.Abp.Settings
using (var scope = context.ServiceProvider.CreateScope())
{
scope.ServiceProvider
- .GetRequiredService()
+ .GetRequiredService()
.Build();
}
}
diff --git a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Tests.cs b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Tests.cs
index 767a10bd94..47080a973a 100644
--- a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Tests.cs
+++ b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Tests.cs
@@ -30,8 +30,8 @@ namespace Volo.Abp.Settings
[Fact]
public async Task Should_Get_From_Store_For_Given_User()
{
- (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpIdentityTestDataBuilder.User1Id)).ShouldBe("user1-store-value");
- (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpIdentityTestDataBuilder.User2Id)).ShouldBe("user2-store-value");
+ (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User1Id)).ShouldBe("user1-store-value");
+ (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User2Id)).ShouldBe("user2-store-value");
}
[Fact]
@@ -49,10 +49,10 @@ namespace Volo.Abp.Settings
[Fact]
public async Task Should_Get_From_Store_For_Current_User()
{
- _currentUserId = AbpIdentityTestDataBuilder.User1Id;
+ _currentUserId = AbpSettingTestDataBuilder.User1Id;
(await _settingManager.GetOrNullAsync("MySetting2")).ShouldBe("user1-store-value");
- _currentUserId = AbpIdentityTestDataBuilder.User2Id;
+ _currentUserId = AbpSettingTestDataBuilder.User2Id;
(await _settingManager.GetOrNullAsync("MySetting2")).ShouldBe("user2-store-value");
}
@@ -66,10 +66,10 @@ namespace Volo.Abp.Settings
[Fact]
public async Task Should_Get_From_Store_For_Current_User_With_GetOrNullForCurrentUserAsync()
{
- _currentUserId = AbpIdentityTestDataBuilder.User1Id;
+ _currentUserId = AbpSettingTestDataBuilder.User1Id;
(await _settingManager.GetOrNullForCurrentUserAsync("MySetting2")).ShouldBe("user1-store-value");
- _currentUserId = AbpIdentityTestDataBuilder.User2Id;
+ _currentUserId = AbpSettingTestDataBuilder.User2Id;
(await _settingManager.GetOrNullForCurrentUserAsync("MySetting2")).ShouldBe("user2-store-value");
}
@@ -90,7 +90,7 @@ namespace Volo.Abp.Settings
[Fact]
public async Task Should_Get_All_From_Store_For_Given_User()
{
- var settingValues = await _settingManager.GetAllForUserAsync(AbpIdentityTestDataBuilder.User1Id);
+ var settingValues = await _settingManager.GetAllForUserAsync(AbpSettingTestDataBuilder.User1Id);
settingValues.ShouldContain(sv => sv.Name == "MySetting1" && sv.Value == "42");
settingValues.ShouldContain(sv => sv.Name == "MySetting2" && sv.Value == "user1-store-value");
settingValues.ShouldContain(sv => sv.Name == "SettingNotSetInStore" && sv.Value == "default-value");
@@ -99,7 +99,7 @@ namespace Volo.Abp.Settings
[Fact]
public async Task Should_Get_All_From_Store_For_Given_User_Without_Fallback()
{
- var settingValues = await _settingManager.GetAllForUserAsync(AbpIdentityTestDataBuilder.User1Id, fallback: false);
+ var settingValues = await _settingManager.GetAllForUserAsync(AbpSettingTestDataBuilder.User1Id, fallback: false);
settingValues.ShouldContain(sv => sv.Name == "MySetting2" && sv.Value == "user1-store-value");
settingValues.ShouldContain(sv => sv.Name == "MySettingWithoutInherit" && sv.Value == "user1-store-value");
settingValues.ShouldNotContain(sv => sv.Name == "MySetting1");
@@ -108,11 +108,11 @@ namespace Volo.Abp.Settings
[Fact]
public async Task Should_Delete_Setting_Record_When_Set_To_Null()
{
- await _settingManager.SetForUserAsync(AbpIdentityTestDataBuilder.User1Id, "MySetting2", null);
+ await _settingManager.SetForUserAsync(AbpSettingTestDataBuilder.User1Id, "MySetting2", null);
GetSettingsFromDbContext(
UserSettingValueProvider.ProviderName,
- AbpIdentityTestDataBuilder.User1Id.ToString(),
+ AbpSettingTestDataBuilder.User1Id.ToString(),
"MySetting2"
).Count.ShouldBe(0);
}
@@ -120,17 +120,17 @@ namespace Volo.Abp.Settings
[Fact]
public async Task Should_Change_User_Setting()
{
- (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpIdentityTestDataBuilder.User1Id))
+ (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User1Id))
.ShouldBe("user1-store-value");
- await _settingManager.SetForUserAsync(AbpIdentityTestDataBuilder.User1Id, "MySetting2", "user1-new-store-value");
+ await _settingManager.SetForUserAsync(AbpSettingTestDataBuilder.User1Id, "MySetting2", "user1-new-store-value");
- (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpIdentityTestDataBuilder.User1Id))
+ (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User1Id))
.ShouldBe("user1-new-store-value");
GetSettingsFromDbContext(
UserSettingValueProvider.ProviderName,
- AbpIdentityTestDataBuilder.User1Id.ToString(),
+ AbpSettingTestDataBuilder.User1Id.ToString(),
"MySetting2"
).Single().Value.ShouldBe("user1-new-store-value");
}
@@ -139,18 +139,18 @@ namespace Volo.Abp.Settings
public async Task Should_Delete_Setting_Record_When_Set_To_Fallback_Value()
{
await _settingManager.SetForUserAsync(
- AbpIdentityTestDataBuilder.User1Id,
+ AbpSettingTestDataBuilder.User1Id,
"MySetting2",
"default-store-value"
);
GetSettingsFromDbContext(
UserSettingValueProvider.ProviderName,
- AbpIdentityTestDataBuilder.User1Id.ToString(),
+ AbpSettingTestDataBuilder.User1Id.ToString(),
"MySetting2"
).Count.ShouldBe(0);
- (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpIdentityTestDataBuilder.User1Id))
+ (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User1Id))
.ShouldBe("default-store-value");
}
@@ -158,7 +158,7 @@ namespace Volo.Abp.Settings
public async Task Should_Not_Delete_Setting_Record_When_Set_To_Fallback_Value_If_Forced()
{
await _settingManager.SetForUserAsync(
- AbpIdentityTestDataBuilder.User1Id,
+ AbpSettingTestDataBuilder.User1Id,
"MySetting2",
"default-store-value",
forceToSet: true
@@ -166,19 +166,19 @@ namespace Volo.Abp.Settings
GetSettingsFromDbContext(
UserSettingValueProvider.ProviderName,
- AbpIdentityTestDataBuilder.User1Id.ToString(),
+ AbpSettingTestDataBuilder.User1Id.ToString(),
"MySetting2"
).Single().Value.ShouldBe("default-store-value");
- (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpIdentityTestDataBuilder.User1Id))
+ (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User1Id))
.ShouldBe("default-store-value");
}
[Fact]
public async Task Should_Get_For_Given_User_For_Non_Inherited_Setting()
{
- (await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", AbpIdentityTestDataBuilder.User1Id)).ShouldBe("user1-store-value");
- (await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", AbpIdentityTestDataBuilder.User2Id)).ShouldBeNull(); //Does not inherit!
+ (await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", AbpSettingTestDataBuilder.User1Id)).ShouldBe("user1-store-value");
+ (await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", AbpSettingTestDataBuilder.User2Id)).ShouldBeNull(); //Does not inherit!
(await _settingManager.GetOrNullGlobalAsync("MySettingWithoutInherit")).ShouldBe("default-store-value");
}
}