Browse Source

Fix unit tests.

pull/14897/head
maliming 4 years ago
parent
commit
219befc5dc
No known key found for this signature in database GPG Key ID: 96224957E51C89E
  1. 2
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/IOpenIddictAuthorizationRepository.cs
  2. 2
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/IOpenIddictTokenRepository.cs
  3. 28
      modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Authorizations/EfCoreOpenIddictAuthorizationRepository.cs
  4. 28
      modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Tokens/EfCoreOpenIddictTokenRepository.cs
  5. 26
      modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Authorizations/MongoOpenIddictAuthorizationRepository.cs
  6. 39
      modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Tokens/MongoOpenIddictTokenRepository.cs
  7. 4
      modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore_Tests.cs
  8. 17
      modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictAuthorizationRepository_Tests.cs
  9. 30
      modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictDataSeedContributor.cs
  10. 21
      modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictTokenRepository_Tests.cs

2
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/IOpenIddictAuthorizationRepository.cs

@ -22,7 +22,5 @@ public interface IOpenIddictAuthorizationRepository : IBasicRepository<OpenIddic
Task<List<OpenIddictAuthorization>> ListAsync(int? count, int? offset, CancellationToken cancellationToken = default);
Task<List<OpenIddictAuthorization>> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default);
Task PruneAsync(DateTime date, CancellationToken cancellationToken = default);
}

2
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/IOpenIddictTokenRepository.cs

@ -30,7 +30,5 @@ public interface IOpenIddictTokenRepository : IBasicRepository<OpenIddictToken,
Task<List<OpenIddictToken>> ListAsync(int? count, int? offset, CancellationToken cancellationToken = default);
Task<List<OpenIddictToken>> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default);
Task PruneAsync(DateTime date, CancellationToken cancellationToken = default);
}

28
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<IOpenIdd
return await query.ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<List<OpenIddictAuthorization>> 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<OpenIddictToken>()
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);
}
}

28
modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Tokens/EfCoreOpenIddictTokenRepository.cs

@ -87,34 +87,16 @@ public class EfCoreOpenIddictTokenRepository : EfCoreRepository<IOpenIddictDbCon
.ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<List<OpenIddictToken>> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default)
{
return await (from token in await GetQueryableAsync()
join authorization in (await GetDbContextAsync()).Set<OpenIddictAuthorization>().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<OpenIddictAuthorization>().AsQueryable()
on token.AuthorizationId equals authorization.Id into ta
from a in ta
join authorization in (await GetDbContextAsync()).Set<OpenIddictAuthorization>()
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));
}

26
modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Authorizations/MongoOpenIddictAuthorizationRepository.cs

@ -65,26 +65,16 @@ public class MongoOpenIddictAuthorizationRepository : MongoDbRepository<OpenIddi
.As<IMongoQueryable<OpenIddictAuthorization>>().ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<List<OpenIddictAuthorization>> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default)
public virtual async Task PruneAsync(DateTime date, CancellationToken cancellationToken = default)
{
var tokenQueryable = await GetMongoQueryableAsync<OpenIddictToken>(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<OpenIddictToken>(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<OpenIddictToken>(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);
}
}

39
modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Tokens/MongoOpenIddictTokenRepository.cs

@ -100,34 +100,21 @@ public class MongoOpenIddictTokenRepository : MongoDbRepository<OpenIddictMongoD
.ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<List<OpenIddictToken>> GetPruneListAsync(DateTime date, int count, CancellationToken cancellationToken = default)
{
return await (from token in await GetMongoQueryableAsync(cancellationToken)
join authorization in await GetMongoQueryableAsync<OpenIddictAuthorization>(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<OpenIddictAuthorization>(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<OpenIddictAuthorization>(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);
}

4
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);
}
}
}

17
modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictAuthorizationRepository_Tests.cs

@ -20,16 +20,16 @@ public abstract class OpenIddictAuthorizationRepository_Tests<TStartupModule> :
_authorizationRepository = GetRequiredService<IOpenIddictAuthorizationRepository>();
_testData = GetRequiredService<AbpOpenIddictTestData>();
}
[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<TStartupModule> :
}
[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);
}
}
}

30
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<OpenIddictAuthorizationModel> GetOpenIddictAuthorizationModelAsync(Guid id, OpenIddictAuthorizationDescriptor authorizationDescriptor)
{
var authorization = new OpenIddictAuthorizationModel{Id = id};

21
modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo/Abp/OpenIddict/OpenIddictTokenRepository_Tests.cs

@ -25,7 +25,7 @@ public abstract class OpenIddictTokenRepository_Tests<TStartupModule> : 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<TStartupModule> : 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<TStartupModule> : 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<TStartupModule> : OpenIddi
{
(await _tokenRepository.FindBySubjectAsync("TestSubject1")).Count.ShouldBe(1);
}
[Fact]
public async Task ListAsync()
{
@ -96,9 +96,12 @@ public abstract class OpenIddictTokenRepository_Tests<TStartupModule> : 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);
}
}
}

Loading…
Cancel
Save