From 219befc5dc539f15abec1fa0a7f7caa173bdefe1 Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 4 Dec 2022 09:21:06 +0800 Subject: [PATCH] Fix unit tests. --- .../IOpenIddictAuthorizationRepository.cs | 2 - .../Tokens/IOpenIddictTokenRepository.cs | 2 - ...EfCoreOpenIddictAuthorizationRepository.cs | 28 +++++-------- .../Tokens/EfCoreOpenIddictTokenRepository.cs | 28 +++---------- .../MongoOpenIddictAuthorizationRepository.cs | 26 ++++--------- .../Tokens/MongoOpenIddictTokenRepository.cs | 39 +++++++------------ .../AbpOpenIddictAuthorizationStore_Tests.cs | 4 +- ...OpenIddictAuthorizationRepository_Tests.cs | 17 ++++---- .../OpenIddictDataSeedContributor.cs | 30 +++++++------- .../OpenIddictTokenRepository_Tests.cs | 21 +++++----- 10 files changed, 73 insertions(+), 124 deletions(-) diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/IOpenIddictAuthorizationRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/IOpenIddictAuthorizationRepository.cs index c41df91386..0cca87ebb9 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/IOpenIddictAuthorizationRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/IOpenIddictAuthorizationRepository.cs @@ -22,7 +22,5 @@ public interface IOpenIddictAuthorizationRepository : IBasicRepository> ListAsync(int? count, int? offset, CancellationToken cancellationToken = default); - Task> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default); - Task PruneAsync(DateTime date, CancellationToken cancellationToken = default); } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/IOpenIddictTokenRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/IOpenIddictTokenRepository.cs index 97e63ffb61..4ae9c41e27 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/IOpenIddictTokenRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/IOpenIddictTokenRepository.cs @@ -30,7 +30,5 @@ public interface IOpenIddictTokenRepository : IBasicRepository> ListAsync(int? count, int? offset, CancellationToken cancellationToken = default); - Task> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default); - Task PruneAsync(DateTime date, CancellationToken cancellationToken = default); } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Authorizations/EfCoreOpenIddictAuthorizationRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Authorizations/EfCoreOpenIddictAuthorizationRepository.cs index 54bc1a642b..ae5e4e18bd 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Authorizations/EfCoreOpenIddictAuthorizationRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Authorizations/EfCoreOpenIddictAuthorizationRepository.cs @@ -8,6 +8,7 @@ using OpenIddict.Abstractions; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.OpenIddict.EntityFrameworkCore; +using Volo.Abp.OpenIddict.Tokens; namespace Volo.Abp.OpenIddict.Authorizations; @@ -79,26 +80,15 @@ public class EfCoreOpenIddictAuthorizationRepository : EfCoreRepository> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default) - { - var tokenQueryable = (await GetDbContextAsync()).Tokens.AsQueryable(); - return await (await GetDbSetAsync()) - .Where(x => x.CreationDate < date) - .Where(x => x.Status != OpenIddictConstants.Statuses.Valid || - (x.Type == OpenIddictConstants.AuthorizationTypes.AdHoc && - !tokenQueryable.Any(t => t.AuthorizationId == x.Id))) - .OrderBy(x => x.Id) - .Take(count) - .ToListAsync(GetCancellationToken(cancellationToken)); - } - public virtual async Task PruneAsync(DateTime date, CancellationToken cancellationToken = default) { - var tokenQueryable = (await GetDbContextAsync()).Tokens.AsQueryable(); - await DeleteDirectAsync(x => x.CreationDate < date && - x.Status != OpenIddictConstants.Statuses.Valid || - (x.Type == OpenIddictConstants.AuthorizationTypes.AdHoc && - !tokenQueryable.Any(t => t.AuthorizationId == x.Id)), - cancellationToken: cancellationToken); + await (from authorization in (await GetQueryableAsync()) + join token in (await GetDbContextAsync()).Set() + on authorization.Id equals token.AuthorizationId into authorizationTokens + from authorizationToken in authorizationTokens.DefaultIfEmpty() + where authorization.CreationDate < date + where authorization.Status != OpenIddictConstants.Statuses.Valid || + (authorization.Type == OpenIddictConstants.AuthorizationTypes.AdHoc && authorizationToken == null) + select authorization).ExecuteDeleteAsync(cancellationToken); } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Tokens/EfCoreOpenIddictTokenRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Tokens/EfCoreOpenIddictTokenRepository.cs index ffdea1518a..87af3706b1 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Tokens/EfCoreOpenIddictTokenRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Tokens/EfCoreOpenIddictTokenRepository.cs @@ -87,34 +87,16 @@ public class EfCoreOpenIddictTokenRepository : EfCoreRepository> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default) - { - return await (from token in await GetQueryableAsync() - join authorization in (await GetDbContextAsync()).Set().AsQueryable() - on token.AuthorizationId equals authorization.Id into ta - from a in ta - where token.CreationDate < date - where (token.Status != OpenIddictConstants.Statuses.Inactive && - token.Status != OpenIddictConstants.Statuses.Valid) || - (a != null && a.Status != OpenIddictConstants.Statuses.Valid) || - token.ExpirationDate < DateTime.UtcNow - orderby token.Id - select token).Take(count) - .ToListAsync(GetCancellationToken(cancellationToken)); - } - public virtual async Task PruneAsync(DateTime date, CancellationToken cancellationToken = default) { await (from token in await GetQueryableAsync() - join authorization in (await GetDbContextAsync()).Set().AsQueryable() - on token.AuthorizationId equals authorization.Id into ta - from a in ta + join authorization in (await GetDbContextAsync()).Set() + on token.AuthorizationId equals authorization.Id into tokenAuthorizations + from tokenAuthorization in tokenAuthorizations.DefaultIfEmpty() where token.CreationDate < date - where (token.Status != OpenIddictConstants.Statuses.Inactive && - token.Status != OpenIddictConstants.Statuses.Valid) || - (a != null && a.Status != OpenIddictConstants.Statuses.Valid) || + where (token.Status != OpenIddictConstants.Statuses.Inactive && token.Status != OpenIddictConstants.Statuses.Valid) || + (tokenAuthorization != null && tokenAuthorization.Status != OpenIddictConstants.Statuses.Valid) || token.ExpirationDate < DateTime.UtcNow - orderby token.Id select token) .ExecuteDeleteAsync(GetCancellationToken(cancellationToken)); } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Authorizations/MongoOpenIddictAuthorizationRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Authorizations/MongoOpenIddictAuthorizationRepository.cs index a9de4e7949..0994501cd6 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Authorizations/MongoOpenIddictAuthorizationRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Authorizations/MongoOpenIddictAuthorizationRepository.cs @@ -65,26 +65,16 @@ public class MongoOpenIddictAuthorizationRepository : MongoDbRepository>().ToListAsync(GetCancellationToken(cancellationToken)); } - public virtual async Task> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default) + public virtual async Task PruneAsync(DateTime date, CancellationToken cancellationToken = default) { - var tokenQueryable = await GetMongoQueryableAsync(GetCancellationToken(cancellationToken)); - return await (await GetMongoQueryableAsync(GetCancellationToken(cancellationToken))) - .Where(x => x.CreationDate < date) - .Where(x => x.Status != OpenIddictConstants.Statuses.Valid || - (x.Type == OpenIddictConstants.AuthorizationTypes.AdHoc && - !tokenQueryable.Any(t => t.AuthorizationId == x.Id))) - .OrderBy(x => x.Id) - .Take(count) + var tokens = await (await GetMongoQueryableAsync(cancellationToken)) + .Where(x => x.AuthorizationId != null) + .Select(x => x.AuthorizationId.Value) .ToListAsync(GetCancellationToken(cancellationToken)); - } - public virtual async Task PruneAsync(DateTime date, CancellationToken cancellationToken = default) - { - var tokenQueryable = await GetMongoQueryableAsync(GetCancellationToken(cancellationToken)); - await DeleteDirectAsync(x => x.CreationDate < date && - x.Status != OpenIddictConstants.Statuses.Valid || - (x.Type == OpenIddictConstants.AuthorizationTypes.AdHoc && - !tokenQueryable.Any(t => t.AuthorizationId == x.Id)), - GetCancellationToken(cancellationToken)); + await DeleteManyAsync(await (await GetMongoQueryableAsync(cancellationToken)) + .Where(x => x.CreationDate < date) + .Where(x => x.Status == OpenIddictConstants.Statuses.Valid || (x.Type == OpenIddictConstants.AuthorizationTypes.AdHoc && !tokens.Contains(x.Id))) + .ToListAsync(cancellationToken: cancellationToken), cancellationToken: cancellationToken); } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Tokens/MongoOpenIddictTokenRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Tokens/MongoOpenIddictTokenRepository.cs index 26454e9204..d10787a9f9 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Tokens/MongoOpenIddictTokenRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Tokens/MongoOpenIddictTokenRepository.cs @@ -100,34 +100,21 @@ public class MongoOpenIddictTokenRepository : MongoDbRepository> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default) - { - return await (from token in await GetMongoQueryableAsync(cancellationToken) - join authorization in await GetMongoQueryableAsync(cancellationToken) - on token.AuthorizationId equals authorization.Id into ta - from a in ta - where token.CreationDate < date - where (token.Status != OpenIddictConstants.Statuses.Inactive && - token.Status != OpenIddictConstants.Statuses.Valid) || - (a != null && a.Status != OpenIddictConstants.Statuses.Valid) || - token.ExpirationDate < DateTime.UtcNow - orderby token.Id - select token).Take(count).ToListAsync(GetCancellationToken(cancellationToken)); - } - public virtual async Task PruneAsync(DateTime date, CancellationToken cancellationToken = default) { - var tokens = await (from token in await GetMongoQueryableAsync(cancellationToken) - join authorization in await GetMongoQueryableAsync(cancellationToken) - on token.AuthorizationId equals authorization.Id into ta - from a in ta - where token.CreationDate < date - where (token.Status != OpenIddictConstants.Statuses.Inactive && - token.Status != OpenIddictConstants.Statuses.Valid) || - (a != null && a.Status != OpenIddictConstants.Statuses.Valid) || - token.ExpirationDate < DateTime.UtcNow - orderby token.Id - select token).ToListAsync(cancellationToken: cancellationToken); + var authorizationIds = await (await GetMongoQueryableAsync(cancellationToken)) + .Where(x => x.Status != OpenIddictConstants.Statuses.Valid) + .Select(x => x.Id) + .ToListAsync(GetCancellationToken(cancellationToken)); + + var tokens = await (await GetMongoQueryableAsync(GetCancellationToken(cancellationToken))) + .Where(x => x.CreationDate < date) + .Where(x => (x.Status != OpenIddictConstants.Statuses.Inactive && + x.Status != OpenIddictConstants.Statuses.Valid) || + authorizationIds.Contains(x.Id) || + x.ExpirationDate < DateTime.UtcNow) + .OrderBy(x => x.Id) + .ToListAsync(GetCancellationToken(cancellationToken)); await DeleteManyAsync(tokens, cancellationToken: cancellationToken); } diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore_Tests.cs b/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore_Tests.cs index a392d1f89c..2fbd875713 100644 --- a/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore_Tests.cs +++ b/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore_Tests.cs @@ -69,7 +69,7 @@ public class AbpOpenIddictAuthorizationStore_Tests : OpenIddictDomainTestBase { var authorization = await _authorizationStore.FindByIdAsync(_testData.Authorization1Id.ToString(), CancellationToken.None); authorization.ShouldNotBeNull(); - authorization.Status.ShouldBe("TestStatus1"); + authorization.Status.ShouldBe(OpenIddictConstants.Statuses.Valid); authorization.Subject.ShouldBe("TestSubject1"); authorization.Type.ShouldBe(OpenIddictConstants.AuthorizationTypes.Permanent); } @@ -125,4 +125,4 @@ public class AbpOpenIddictAuthorizationStore_Tests : OpenIddictDomainTestBase authorization.Type.ShouldBe(OpenIddictConstants.AuthorizationTypes.AdHoc); authorization.ApplicationId.ShouldBe(_testData.App2Id); } -} \ No newline at end of file +} diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictAuthorizationRepository_Tests.cs b/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictAuthorizationRepository_Tests.cs index 72e82d6ebe..529849ed66 100644 --- a/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictAuthorizationRepository_Tests.cs +++ b/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictAuthorizationRepository_Tests.cs @@ -20,16 +20,16 @@ public abstract class OpenIddictAuthorizationRepository_Tests : _authorizationRepository = GetRequiredService(); _testData = GetRequiredService(); } - + [Fact] public async Task FindAsync() { (await _authorizationRepository.FindAsync(subject:"TestSubject1", client: new Guid())).Count.ShouldBe(0); (await _authorizationRepository.FindAsync(subject:"TestSubject1", client: _testData.App1Id)).Count.ShouldBe(1); (await _authorizationRepository.FindAsync(subject:"TestSubject1", client: _testData.App1Id, status: "NonExistsStatus")).Count.ShouldBe(0); - (await _authorizationRepository.FindAsync(subject:"TestSubject1", client: _testData.App1Id, status: "TestStatus1")).Count.ShouldBe(1); - (await _authorizationRepository.FindAsync(subject:"TestSubject1", client: _testData.App1Id, status: "TestStatus1" ,type: "NonExistsType")).Count.ShouldBe(0); - (await _authorizationRepository.FindAsync(subject:"TestSubject1", client: _testData.App1Id, status: "TestStatus1" ,type: OpenIddictConstants.AuthorizationTypes.Permanent)).Count.ShouldBe(1); + (await _authorizationRepository.FindAsync(subject:"TestSubject1", client: _testData.App1Id, status: OpenIddictConstants.Statuses.Valid)).Count.ShouldBe(1); + (await _authorizationRepository.FindAsync(subject:"TestSubject1", client: _testData.App1Id, status: OpenIddictConstants.Statuses.Valid ,type: "NonExistsType")).Count.ShouldBe(0); + (await _authorizationRepository.FindAsync(subject:"TestSubject1", client: _testData.App1Id, status: OpenIddictConstants.Statuses.Valid ,type: OpenIddictConstants.AuthorizationTypes.Permanent)).Count.ShouldBe(1); } [Fact] @@ -64,9 +64,10 @@ public abstract class OpenIddictAuthorizationRepository_Tests : } [Fact] - public async Task GetPruneListAsync() + public async Task PruneAsync() { - var threshold = DateTime.UtcNow - TimeSpan.FromDays(14); - (await _authorizationRepository.GetPruneListAsync(threshold, int.MaxValue)).Count.ShouldBe(1); + (await _authorizationRepository.ListAsync(int.MaxValue, 0)).Count.ShouldBe(2); + await _authorizationRepository.PruneAsync(DateTime.UtcNow - TimeSpan.FromDays(14)); + (await _authorizationRepository.ListAsync(int.MaxValue, 0)).Count.ShouldBe(1); } -} \ No newline at end of file +} diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictDataSeedContributor.cs b/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictDataSeedContributor.cs index 1b9dbed4ca..eccdf828c6 100644 --- a/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictDataSeedContributor.cs @@ -25,9 +25,9 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep private readonly IClock _clock; public OpenIddictDataSeedContributor( - IOpenIddictApplicationManager applicationManager, + IOpenIddictApplicationManager applicationManager, IOpenIddictScopeManager scopeManager, - IOpenIddictTokenManager tokenManager, + IOpenIddictTokenManager tokenManager, IOpenIddictAuthorizationManager authorizationManager, IClock clock, AbpOpenIddictTestData testData) @@ -65,7 +65,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep "TestScope1Resource" } })); - + await _scopeManager.CreateAsync(await GetOpenIddictScopeModelAsync(_testData.Scope2Id, new OpenIddictScopeDescriptor() { Name = _testData.Scope2Name, @@ -89,7 +89,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await _scopeManager.PopulateAsync(scope, scopeDescriptor); return scope; } - + private async Task CreateApplicationsAsync() { await _applicationManager.CreateAsync(await GetOpenIddictApplicationModelAsync(_testData.App1Id, new OpenIddictApplicationDescriptor @@ -138,8 +138,8 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep OpenIddictConstants.Permissions.Prefixes.Scope + _testData.Scope1Name } - })); - + })); + await _applicationManager.CreateAsync(await GetOpenIddictApplicationModelAsync(_testData.App2Id, new OpenIddictApplicationDescriptor { ClientId = _testData.App2ClientId, @@ -211,11 +211,11 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep ExpirationDate = _clock.Now.AddDays(-30), CreationDate = _clock.Now.AddDays(-30) })); - + await _tokenManager.CreateAsync(await GetOpenIddictTokenModelAsync(_testData.Token2Id, new OpenIddictTokenDescriptor { ApplicationId = _testData.App2Id.ToString(), - AuthorizationId = _testData.Authorization2Id.ToString(), + AuthorizationId = _testData.Authorization1Id.ToString(), Subject = "TestSubject2", Type = "TestType2", Status = OpenIddictConstants.Statuses.Valid, @@ -236,23 +236,23 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await _authorizationManager.CreateAsync(await GetOpenIddictAuthorizationModelAsync(_testData.Authorization1Id, new OpenIddictAuthorizationDescriptor { ApplicationId = _testData.App1Id.ToString(), - Status = "TestStatus1", + Status = OpenIddictConstants.Statuses.Valid, Subject = "TestSubject1", Type = OpenIddictConstants.AuthorizationTypes.Permanent, - CreationDate = _clock.Now.AddDays(-30) - + CreationDate = _clock.Now + })); - + await _authorizationManager.CreateAsync(await GetOpenIddictAuthorizationModelAsync(_testData.Authorization2Id, new OpenIddictAuthorizationDescriptor { ApplicationId = _testData.App2Id.ToString(), - Status = "TestStatus2", + Status = OpenIddictConstants.Statuses.Inactive, Subject = "TestSubject2", Type = OpenIddictConstants.AuthorizationTypes.AdHoc, - CreationDate = _clock.Now + CreationDate = _clock.Now.AddDays(-30) })); } - + private async Task GetOpenIddictAuthorizationModelAsync(Guid id, OpenIddictAuthorizationDescriptor authorizationDescriptor) { var authorization = new OpenIddictAuthorizationModel{Id = id}; diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictTokenRepository_Tests.cs b/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictTokenRepository_Tests.cs index 4ed651eee6..1a6c68eb2b 100644 --- a/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictTokenRepository_Tests.cs +++ b/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictTokenRepository_Tests.cs @@ -25,7 +25,7 @@ public abstract class OpenIddictTokenRepository_Tests : OpenIddi { await _tokenRepository.DeleteManyByApplicationIdAsync(new Guid()); (await _tokenRepository.GetCountAsync()).ShouldBe(2); - + await _tokenRepository.DeleteManyByApplicationIdAsync(_testData.App1Id); (await _tokenRepository.GetCountAsync()).ShouldBe(1); } @@ -35,9 +35,9 @@ public abstract class OpenIddictTokenRepository_Tests : OpenIddi { await _tokenRepository.DeleteManyByAuthorizationIdAsync(new Guid()); (await _tokenRepository.GetCountAsync()).ShouldBe(2); - + await _tokenRepository.DeleteManyByAuthorizationIdAsync(_testData.Authorization1Id); - (await _tokenRepository.GetCountAsync()).ShouldBe(1); + (await _tokenRepository.GetCountAsync()).ShouldBe(0); } [Fact] @@ -60,7 +60,7 @@ public abstract class OpenIddictTokenRepository_Tests : OpenIddi [Fact] public async Task FindByAuthorizationIdAsync() { - (await _tokenRepository.FindByAuthorizationIdAsync(_testData.Authorization1Id)).Count.ShouldBe(1); + (await _tokenRepository.FindByAuthorizationIdAsync(_testData.Authorization1Id)).Count.ShouldBe(2); } [Fact] @@ -87,7 +87,7 @@ public abstract class OpenIddictTokenRepository_Tests : OpenIddi { (await _tokenRepository.FindBySubjectAsync("TestSubject1")).Count.ShouldBe(1); } - + [Fact] public async Task ListAsync() { @@ -96,9 +96,12 @@ public abstract class OpenIddictTokenRepository_Tests : OpenIddi } [Fact] - public async Task GetPruneListAsync() + public async Task PruneAsync() { - var threshold = DateTime.UtcNow - TimeSpan.FromDays(14); - (await _tokenRepository.GetPruneListAsync(threshold, int.MaxValue)).Count.ShouldBe(1); + (await _tokenRepository.ListAsync(int.MaxValue, 0)).Count.ShouldBe(2); + + await _tokenRepository.PruneAsync(DateTime.UtcNow - TimeSpan.FromDays(14)); + + (await _tokenRepository.ListAsync(int.MaxValue, 0)).Count.ShouldBe(1); } -} \ No newline at end of file +}