diff --git a/modules/identityserver/Volo.Abp.IdentityServer.sln b/modules/identityserver/Volo.Abp.IdentityServer.sln
index 97d6b0b97a..03e2b5a9af 100644
--- a/modules/identityserver/Volo.Abp.IdentityServer.sln
+++ b/modules/identityserver/Volo.Abp.IdentityServer.sln
@@ -17,6 +17,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.IdentityServer.Ent
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.IdentityServer.MongoDB", "src\Volo.Abp.IdentityServer.MongoDB\Volo.Abp.IdentityServer.MongoDB.csproj", "{FC6CC65A-27B9-43D4-8F20-D941B4987B2C}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.IdentityServer.TestBase", "test\Volo.Abp.IdentityServer.TestBase\Volo.Abp.IdentityServer.TestBase.csproj", "{9CD1BFDB-DD76-4194-ACAD-A64541AC2069}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.IdentityServer.MongoDB.Tests", "test\Volo.Abp.IdentityServer.MongoDB.Tests\Volo.Abp.IdentityServer.MongoDB.Tests.csproj", "{2E18B471-7FCA-497B-90FF-6AA9172CC62F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -43,6 +47,14 @@ Global
{FC6CC65A-27B9-43D4-8F20-D941B4987B2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FC6CC65A-27B9-43D4-8F20-D941B4987B2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FC6CC65A-27B9-43D4-8F20-D941B4987B2C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9CD1BFDB-DD76-4194-ACAD-A64541AC2069}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9CD1BFDB-DD76-4194-ACAD-A64541AC2069}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9CD1BFDB-DD76-4194-ACAD-A64541AC2069}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9CD1BFDB-DD76-4194-ACAD-A64541AC2069}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2E18B471-7FCA-497B-90FF-6AA9172CC62F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2E18B471-7FCA-497B-90FF-6AA9172CC62F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2E18B471-7FCA-497B-90FF-6AA9172CC62F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2E18B471-7FCA-497B-90FF-6AA9172CC62F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -53,6 +65,8 @@ Global
{F352D620-1CBF-4658-953F-70BA73B458F1} = {59A0FC0F-EA6D-477B-84A7-3B1E41B4C858}
{8B8FBA95-4FA2-4438-A387-7C5EC7A89E82} = {2C792EC1-BA27-44ED-B7CC-D0939553F1B2}
{FC6CC65A-27B9-43D4-8F20-D941B4987B2C} = {59A0FC0F-EA6D-477B-84A7-3B1E41B4C858}
+ {9CD1BFDB-DD76-4194-ACAD-A64541AC2069} = {2C792EC1-BA27-44ED-B7CC-D0939553F1B2}
+ {2E18B471-7FCA-497B-90FF-6AA9172CC62F} = {2C792EC1-BA27-44ED-B7CC-D0939553F1B2}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {45562023-C330-4060-A583-2BA10F472D3D}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB.Tests/Volo.Abp.IdentityServer.MongoDB.Tests.csproj b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB.Tests/Volo.Abp.IdentityServer.MongoDB.Tests.csproj
new file mode 100644
index 0000000000..5a7d60a821
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB.Tests/Volo.Abp.IdentityServer.MongoDB.Tests.csproj
@@ -0,0 +1,24 @@
+
+
+
+ netcoreapp2.1
+ Volo.Abp.IdentityServer.MongoDB.Tests
+ Volo.Abp.IdentityServer.MongoDB.Tests
+ true
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerBsonClassMap.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerBsonClassMap.cs
index 28cde387cf..f55ad596c8 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerBsonClassMap.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerBsonClassMap.cs
@@ -1,8 +1,8 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using IdentityServer4.Models;
-using MongoDB.Bson.Serialization;
+using MongoDB.Bson.Serialization;
+using Volo.Abp.IdentityServer.ApiResources;
+using Volo.Abp.IdentityServer.Clients;
+using Volo.Abp.IdentityServer.Grants;
+using Volo.Abp.IdentityServer.IdentityResources;
using Volo.Abp.Threading;
namespace Volo.Abp.IdentityServer.MongoDB
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContextExtensions.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContextExtensions.cs
index ed9bfc7422..6f81a67493 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContextExtensions.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContextExtensions.cs
@@ -1,7 +1,8 @@
using System;
-using System.Collections.Generic;
-using System.Text;
-using IdentityServer4.Models;
+using Volo.Abp.IdentityServer.ApiResources;
+using Volo.Abp.IdentityServer.Clients;
+using Volo.Abp.IdentityServer.Grants;
+using Volo.Abp.IdentityServer.IdentityResources;
using Volo.Abp.MongoDB;
namespace Volo.Abp.IdentityServer.MongoDB
@@ -27,7 +28,6 @@ namespace Volo.Abp.IdentityServer.MongoDB
{
b.CollectionName = options.CollectionPrefix + "Clients";
});
-
builder.Entity(b =>
{
b.CollectionName = options.CollectionPrefix + "IdentityResources";
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbModule.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbModule.cs
index 6e42bc347d..599f60f579 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbModule.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbModule.cs
@@ -1,5 +1,5 @@
-using IdentityServer4.Models;
-using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.IdentityServer.Grants;
using Volo.Abp.Modularity;
using Volo.Abp.MongoDB;
using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource;
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/IdentityServerMongoModelBuilderConfigurationOptions.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/IdentityServerMongoModelBuilderConfigurationOptions.cs
index 49b9f80f47..bb88711e9e 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/IdentityServerMongoModelBuilderConfigurationOptions.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/IdentityServerMongoModelBuilderConfigurationOptions.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using Volo.Abp.MongoDB;
+using Volo.Abp.MongoDB;
namespace Volo.Abp.IdentityServer.MongoDB
{
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/MongoIdentityResourceRepository.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/MongoIdentityResourceRepository.cs
index ac2a1b4978..ed84284369 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/MongoIdentityResourceRepository.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/MongoIdentityResourceRepository.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
using System.Threading;
using System.Threading.Tasks;
using MongoDB.Driver;
@@ -22,7 +21,7 @@ namespace Volo.Abp.IdentityServer.MongoDB
CancellationToken cancellationToken = default)
{
return await GetMongoQueryable()
- .Where(ar => scopeNames.Any(s=>s == ar.Name))
+ .Where(ar => scopeNames.Contains(ar.Name))
.ToListAsync(GetCancellationToken(cancellationToken));
}
}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/ApiResourceRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/ApiResourceRepository_Tests.cs
new file mode 100644
index 0000000000..965d2c8893
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/ApiResourceRepository_Tests.cs
@@ -0,0 +1,7 @@
+
+namespace Volo.Abp.IdentityServer
+{
+ public class ApiResourceRepository_Tests //: ApiResourceRepository_Tests
+ {
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo.Abp.IdentityServer.MongoDB.Tests.csproj b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo.Abp.IdentityServer.MongoDB.Tests.csproj
new file mode 100644
index 0000000000..5a7d60a821
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo.Abp.IdentityServer.MongoDB.Tests.csproj
@@ -0,0 +1,24 @@
+
+
+
+ netcoreapp2.1
+ Volo.Abp.IdentityServer.MongoDB.Tests
+ Volo.Abp.IdentityServer.MongoDB.Tests
+ true
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs
new file mode 100644
index 0000000000..f1e81bf21f
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/AbpIdentityServerMongoDbTestModule.cs
@@ -0,0 +1,33 @@
+using Microsoft.Extensions.DependencyInjection;
+using Mongo2Go;
+using Volo.Abp.Data;
+using Volo.Abp.IdentityServer.MongoDB;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.IdentityServer
+{
+
+ [DependsOn(
+ typeof(AbpIdentityServerTestBaseModule),
+ typeof(AbpIdentityServerMongoDbModule)
+ )]
+ public class AbpIdentityServerMongoDbTestModule : AbpModule
+ {
+ private MongoDbRunner _mongoDbRunner;
+
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ _mongoDbRunner = MongoDbRunner.Start();
+
+ context.Services.Configure(options =>
+ {
+ options.ConnectionStrings.Default = _mongoDbRunner.ConnectionString;
+ });
+ }
+
+ public override void OnApplicationShutdown(ApplicationShutdownContext context)
+ {
+ _mongoDbRunner.Dispose();
+ }
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/ApiResourceRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/ApiResourceRepository_Tests.cs
new file mode 100644
index 0000000000..032505266d
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/ApiResourceRepository_Tests.cs
@@ -0,0 +1,7 @@
+
+namespace Volo.Abp.IdentityServer
+{
+ public class ApiResourceRepository_Tests : ApiResourceRepository_Tests
+ {
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/ClientRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/ClientRepository_Tests.cs
new file mode 100644
index 0000000000..29b006cd99
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/ClientRepository_Tests.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Volo.Abp.IdentityServer
+{
+ public class ClientRepository_Tests : ClientRepository_Tests
+ {
+
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/IdentityResourceRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/IdentityResourceRepository_Tests.cs
new file mode 100644
index 0000000000..2b44b2c6a0
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/IdentityResourceRepository_Tests.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Volo.Abp.IdentityServer
+{
+ public class IdentityResourceRepository_Tests : IdentityResourceRepository_Tests
+ {
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo.Abp.IdentityServer.TestBase.csproj b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo.Abp.IdentityServer.TestBase.csproj
new file mode 100644
index 0000000000..3cf0bab9d4
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo.Abp.IdentityServer.TestBase.csproj
@@ -0,0 +1,29 @@
+
+
+
+ netcoreapp2.1
+ Volo.Abp.IdentityServer.TestBase
+ Volo.Abp.IdentityServer.TestBase
+ true
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestBase.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestBase.cs
new file mode 100644
index 0000000000..a78caec8d0
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestBase.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.IdentityServer
+{
+ public class AbpIdentityServerTestBase : AbpIntegratedTest
+ where TStartupModule : IAbpModule
+ {
+ protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
+ {
+ options.UseAutofac();
+ }
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestBaseModule.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestBaseModule.cs
new file mode 100644
index 0000000000..b5617e489f
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestBaseModule.cs
@@ -0,0 +1,38 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Autofac;
+using Volo.Abp.Modularity;
+using Volo.Abp.Threading;
+
+namespace Volo.Abp.IdentityServer
+{
+ [DependsOn(
+ typeof(AbpAutofacModule),
+ typeof(AbpTestBaseModule),
+ typeof(AbpIdentityServerDomainModule)
+ )]
+ public class AbpIdentityServerTestBaseModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAlwaysAllowPermissionChecker();
+ }
+
+ public override void OnApplicationInitialization(ApplicationInitializationContext context)
+ {
+ SeedTestData(context);
+ }
+
+ private static void SeedTestData(ApplicationInitializationContext context)
+ {
+ using (var scope = context.ServiceProvider.CreateScope())
+ {
+ //var dataSeeder = scope.ServiceProvider.GetRequiredService();
+ //AsyncHelper.RunSync(() => dataSeeder.SeedAsync("1q2w3E*"));
+
+ scope.ServiceProvider
+ .GetRequiredService()
+ .Build();
+ }
+ }
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs
new file mode 100644
index 0000000000..472c23b7e2
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs
@@ -0,0 +1,68 @@
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Guids;
+using Volo.Abp.IdentityServer.ApiResources;
+using Volo.Abp.IdentityServer.Clients;
+using Volo.Abp.IdentityServer.Grants;
+using Volo.Abp.IdentityServer.IdentityResources;
+
+namespace Volo.Abp.IdentityServer
+{
+ public class AbpIdentityServerTestDataBuilder : ITransientDependency
+ {
+ private readonly IGuidGenerator _guidGenerator;
+ private readonly IApiResourceRepository _apiResourceRepository;
+ private readonly IClientRepository _clientRepository;
+ private readonly IIdentityResourceRepository _identityResourceRepository;
+ //private readonly IPersistentGrantRepository _persistentGrantRepository;
+
+ public AbpIdentityServerTestDataBuilder(
+ IGuidGenerator guidGenerator,
+ IApiResourceRepository apiResourceRepository,
+ IClientRepository clientRepository,
+ IIdentityResourceRepository identityResourceRepository
+ /*IPersistentGrantRepository persistentGrantRepository*/)
+ {
+ _guidGenerator = guidGenerator;
+ _apiResourceRepository = apiResourceRepository;
+ _clientRepository = clientRepository;
+ _identityResourceRepository = identityResourceRepository;
+ //_persistentGrantRepository = persistentGrantRepository;
+ }
+
+ public void Build()
+ {
+ AddPersistedGrants();
+ AddIdentityResources();
+ AddApiResources();
+ AddClients();
+ }
+
+ private void AddPersistedGrants()
+ {
+ //_persistentGrantRepository.Insert(new PersistedGrant(_guidGenerator.Create()));
+ //_persistentGrantRepository.Insert(new PersistedGrant(_guidGenerator.Create()));
+ //_persistentGrantRepository.Insert(new PersistedGrant(_guidGenerator.Create()));
+ }
+
+ private void AddIdentityResources()
+ {
+ _identityResourceRepository.Insert(new IdentityResource(_guidGenerator.Create(), "NewIdentityResource1"));
+ _identityResourceRepository.Insert(new IdentityResource(_guidGenerator.Create(), "NewIdentityResource2"));
+ _identityResourceRepository.Insert(new IdentityResource(_guidGenerator.Create(), "NewIdentityResource3"));
+ }
+
+ private void AddApiResources()
+ {
+ _apiResourceRepository.Insert(new ApiResource(_guidGenerator.Create(), "NewApiResource1"));
+ _apiResourceRepository.Insert(new ApiResource(_guidGenerator.Create(), "NewApiResource2"));
+ _apiResourceRepository.Insert(new ApiResource(_guidGenerator.Create(), "NewApiResource3"));
+ }
+
+ private void AddClients()
+ {
+ _clientRepository.Insert(new Client(_guidGenerator.Create(), "ClientId1"));
+ _clientRepository.Insert(new Client(_guidGenerator.Create(), "ClientId2"));
+ _clientRepository.Insert(new Client(_guidGenerator.Create(), "ClientId3"));
+ }
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/ApiResourceRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/ApiResourceRepository_Tests.cs
new file mode 100644
index 0000000000..db8eacae5c
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/ApiResourceRepository_Tests.cs
@@ -0,0 +1,32 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Shouldly;
+using Volo.Abp.IdentityServer.ApiResources;
+using Volo.Abp.Modularity;
+using Xunit;
+
+namespace Volo.Abp.IdentityServer
+{
+ public abstract class ApiResourceRepository_Tests : AbpIdentityServerTestBase
+ where TStartupModule : IAbpModule
+ {
+ protected IApiResourceRepository apiResourceRepository { get; }
+
+ public ApiResourceRepository_Tests()
+ {
+ apiResourceRepository = ServiceProvider.GetRequiredService();
+ }
+
+ [Fact]
+ public async Task FindByNormalizedNameAsync()
+ {
+ (await apiResourceRepository.FindByNameAsync("NewApiResource2")).ShouldNotBeNull();
+ }
+
+ [Fact]
+ public async Task GetListByScopesAsync()
+ {
+ (await apiResourceRepository.GetListByScopesAsync(new []{ "NewApiResource2", "NewApiResource3"})).Count.ShouldBe(2);
+ }
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/ClientRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/ClientRepository_Tests.cs
new file mode 100644
index 0000000000..8770e7969c
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/ClientRepository_Tests.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Shouldly;
+using Volo.Abp.IdentityServer.Clients;
+using Volo.Abp.Modularity;
+using Xunit;
+
+namespace Volo.Abp.IdentityServer
+{
+ public abstract class ClientRepository_Tests : AbpIdentityServerTestBase
+ where TStartupModule : IAbpModule
+ {
+ protected IClientRepository clientRepository { get; }
+
+ public ClientRepository_Tests()
+ {
+ clientRepository = ServiceProvider.GetRequiredService();
+ }
+
+ [Fact]
+ public async Task FindByCliendIdAsync()
+ {
+ (await clientRepository.FindByCliendIdAsync("ClientId2")).ShouldNotBeNull();
+ }
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/IdentityResourceRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/IdentityResourceRepository_Tests.cs
new file mode 100644
index 0000000000..a9487657b3
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/IdentityResourceRepository_Tests.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Shouldly;
+using Volo.Abp.IdentityServer.IdentityResources;
+using Volo.Abp.Modularity;
+using Xunit;
+
+namespace Volo.Abp.IdentityServer
+{
+ public class IdentityResourceRepository_Tests : AbpIdentityServerTestBase
+ where TStartupModule : IAbpModule
+ {
+ private IIdentityResourceRepository identityResourceRepository;
+ public IdentityResourceRepository_Tests()
+ {
+ identityResourceRepository = ServiceProvider.GetRequiredService();
+ }
+
+ [Fact]
+ public async Task GetListByScopesAsync()
+ {
+ (await identityResourceRepository.GetListByScopesAsync(new []{"", "NewIdentityResource2" })).Count.ShouldBe(1);
+ }
+ }
+}