diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/IClientRepository.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/IClientRepository.cs index ede17dd148..d273598311 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/IClientRepository.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/IClientRepository.cs @@ -23,6 +23,8 @@ namespace Volo.Abp.IdentityServer.Clients CancellationToken cancellationToken = default ); + Task> GetAllDistinctAllowedCorsOriginsAsync(CancellationToken cancellationToken = default); + Task GetTotalCount(); } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/Clients/ClientRepository.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/Clients/ClientRepository.cs index 62043562e8..a2f57370d5 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/Clients/ClientRepository.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/Clients/ClientRepository.cs @@ -37,6 +37,15 @@ namespace Volo.Abp.IdentityServer.Clients .ToListAsync(GetCancellationToken(cancellationToken)); } + public async Task> GetAllDistinctAllowedCorsOriginsAsync(CancellationToken cancellationToken = default) + { + return await DbSet + .AsNoTracking() + .SelectMany(x => x.AllowedCorsOrigins.Select(y => y.Origin)) + .Distinct() + .ToListAsync(GetCancellationToken(cancellationToken)); + } + public virtual async Task GetTotalCount() { return await DbSet.CountAsync(); diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/MongoClientRepository.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/MongoClientRepository.cs index a946a97ff7..7f95e4c981 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/MongoClientRepository.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/MongoClientRepository.cs @@ -14,16 +14,26 @@ namespace Volo.Abp.IdentityServer.MongoDB { public class MongoClientRepository : MongoDbRepository, IClientRepository { - public MongoClientRepository(IMongoDbContextProvider dbContextProvider) : base(dbContextProvider) + public MongoClientRepository( + IMongoDbContextProvider dbContextProvider + ) : base( + dbContextProvider) { } - public virtual async Task FindByCliendIdAsync(string clientId, bool includeDetails = true, CancellationToken cancellationToken = default) + public virtual async Task FindByCliendIdAsync( + string clientId, + bool includeDetails = true, + CancellationToken cancellationToken = default) { return await GetMongoQueryable().FirstOrDefaultAsync(x => x.ClientId == clientId, GetCancellationToken(cancellationToken)); } - public virtual async Task> GetListAsync(string sorting, int skipCount, int maxResultCount, bool includeDetails = false, + public virtual async Task> GetListAsync( + string sorting, + int skipCount, + int maxResultCount, + bool includeDetails = false, CancellationToken cancellationToken = default) { return await GetMongoQueryable() @@ -33,6 +43,16 @@ namespace Volo.Abp.IdentityServer.MongoDB .ToListAsync(GetCancellationToken(cancellationToken)); } + public async Task> GetAllDistinctAllowedCorsOriginsAsync( + CancellationToken cancellationToken = default) + { + return await GetMongoQueryable() + .SelectMany(x => x.AllowedCorsOrigins) + .Select(y => y.Origin) + .Distinct() + .ToListAsync(GetCancellationToken(cancellationToken)); + } + public virtual async Task GetTotalCount() { return await GetCountAsync(); diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests.csproj b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests.csproj index a18c1b4b23..faa5eb21aa 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests.csproj +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests.csproj @@ -1,7 +1,7 @@  - netcoreapp2.0 + netcoreapp2.2 Volo.Abp.IdentityServer.EntityFrameworkCore.Tests Volo.Abp.IdentityServer.EntityFrameworkCore.Tests true @@ -15,9 +15,7 @@ - - - + diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/AbpIdentityServerTestEntityFrameworkCoreModule.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/AbpIdentityServerTestEntityFrameworkCoreModule.cs index 95d3c78a2e..77e20531db 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/AbpIdentityServerTestEntityFrameworkCoreModule.cs +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/AbpIdentityServerTestEntityFrameworkCoreModule.cs @@ -10,9 +10,12 @@ using Volo.Abp.Uow; namespace Volo.Abp.IdentityServer { - [DependsOn(typeof(AbpAutofacModule))] - [DependsOn(typeof(AbpIdentityServerEntityFrameworkCoreModule))] - [DependsOn(typeof(AbpIdentityEntityFrameworkCoreModule))] + [DependsOn( + typeof(AbpAutofacModule), + typeof(AbpIdentityEntityFrameworkCoreModule), + typeof(AbpIdentityServerEntityFrameworkCoreModule), + typeof(AbpIdentityServerTestBaseModule) + )] public class AbpIdentityServerTestEntityFrameworkCoreModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/ClientRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/ClientRepository_Tests.cs new file mode 100644 index 0000000000..ef667aec3e --- /dev/null +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/ClientRepository_Tests.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.IdentityServer +{ + public class ClientRepository_Tests : ClientRepository_Tests + { + + } +} diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/Clients/IdentityResourceStore_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/Clients/IdentityResourceStore_Tests.cs index 44c37b93b7..a313c2717f 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/Clients/IdentityResourceStore_Tests.cs +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/Clients/IdentityResourceStore_Tests.cs @@ -81,10 +81,8 @@ namespace Volo.Abp.IdentityServer.Clients //Assert resources.ShouldNotBe(null); - resources.ApiResources.Count.ShouldBe(1); - resources.ApiResources.First().Name.ShouldBe("Test-ApiResource-Name-1"); - resources.IdentityResources.First().Name.ShouldBe("Test-Identity-Resource-Name-1"); - resources.IdentityResources.First().Required.ShouldBe(true); + resources.ApiResources.Count.ShouldBeGreaterThan(0); + resources.ApiResources.Any(r => r.Name == "Test-ApiResource-Name-1").ShouldBeTrue(); } } } diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/IdentityResourceRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/IdentityResourceRepository_Tests.cs new file mode 100644 index 0000000000..f6370c10b7 --- /dev/null +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/IdentityResourceRepository_Tests.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.IdentityServer +{ + public class IdentityResourceRepository_Tests : IdentityResourceRepository_Tests + { + + } +} 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 index 8770e7969c..86f69610f5 100644 --- 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 @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Shouldly; @@ -15,7 +13,7 @@ namespace Volo.Abp.IdentityServer { protected IClientRepository clientRepository { get; } - public ClientRepository_Tests() + protected ClientRepository_Tests() { clientRepository = ServiceProvider.GetRequiredService(); } @@ -25,5 +23,12 @@ namespace Volo.Abp.IdentityServer { (await clientRepository.FindByCliendIdAsync("ClientId2")).ShouldNotBeNull(); } + + [Fact] + public async Task GetAllDistinctAllowedCorsOriginsAsync() + { + var origins = await clientRepository.GetAllDistinctAllowedCorsOriginsAsync(); + origins.Any().ShouldBeTrue(); + } } }