Browse Source

Add unit tests

pull/15956/head
liangshiwei 4 years ago
parent
commit
df00f0ef1f
  1. 9
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs
  2. 7
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/AbpIdentityDomainTestModule.cs
  3. 41
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs
  4. 31
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/TestSettingValueProvider.cs
  5. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230314024329_Initial.Designer.cs
  6. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs
  7. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230314024404_Initial.Designer.cs
  8. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs
  9. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230314024402_Initial.Designer.cs
  10. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs
  11. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230314024433_Initial.Designer.cs
  12. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs
  13. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230314023936_Initial.Designer.cs
  14. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs
  15. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230314024642_Initial.Designer.cs
  16. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs
  17. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230314024129_Initial.Designer.cs
  18. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs
  19. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230314024104_Initial.Designer.cs
  20. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs

9
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs

@ -261,7 +261,7 @@ public class IdentityUserStore :
/// <param name="passwordHash">The password hash to set.</param> /// <param name="passwordHash">The password hash to set.</param>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param> /// <param name="cancellationToken">The <see cref="CancellationToken"/> used to propagate notifications that the operation should be canceled.</param>
/// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns> /// <returns>The <see cref="Task"/> that represents the asynchronous operation.</returns>
public virtual async Task SetPasswordHashAsync([NotNull] IdentityUser user, string passwordHash, CancellationToken cancellationToken = default) public virtual Task SetPasswordHashAsync([NotNull] IdentityUser user, string passwordHash, CancellationToken cancellationToken = default)
{ {
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
@ -269,10 +269,9 @@ public class IdentityUserStore :
user.PasswordHash = passwordHash; user.PasswordHash = passwordHash;
if (await FindByIdAsync(user.Id.ToString(), cancellationToken) != null) user.SetLastPasswordChangeTime(DateTime.UtcNow);
{
user.SetLastPasswordChangeTime(DateTime.UtcNow); return Task.CompletedTask;
}
} }
/// <summary> /// <summary>

7
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/AbpIdentityDomainTestModule.cs

@ -3,10 +3,12 @@ using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore;
using Volo.Abp.Identity.Localization; using Volo.Abp.Identity.Localization;
using Volo.Abp.Identity.Settings;
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement;
using Volo.Abp.PermissionManagement.Identity; using Volo.Abp.PermissionManagement.Identity;
using Volo.Abp.Settings;
using Volo.Abp.Threading; using Volo.Abp.Threading;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
using Volo.Abp.Uow; using Volo.Abp.Uow;
@ -49,6 +51,11 @@ public class AbpIdentityDomainTestModule : AbpModule
{ {
options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
}); });
Configure<AbpSettingOptions>(options =>
{
options.ValueProviders.Add<TestSettingValueProvider>();
});
} }
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)

41
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs

@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Shouldly; using Shouldly;
using Volo.Abp.Identity.Settings;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Xunit; using Xunit;
@ -214,6 +215,40 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase
} }
} }
[Fact]
public async Task ShouldPeriodicallyChangePasswordAsync_Return_False()
{
var user = CreateRandomUser();
AddPeriodicallyChangePasswordSettings();
(await _identityUserManager.CreateAsync(user)).CheckErrors();
(await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user)).ShouldBeFalse();
await _identityUserManager.AddPasswordAsync(user, IdentityDataSeedContributor.AdminPasswordDefaultValue);
(await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user)).ShouldBeFalse();
user.CreationTime = DateTime.Now;
user.SetLastPasswordChangeTime(null);
(await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user)).ShouldBeFalse();
}
[Fact]
public async Task ShouldPeriodicallyChangePasswordAsync_Return_True()
{
var user = CreateRandomUser();
AddPeriodicallyChangePasswordSettings();
(await _identityUserManager.CreateAsync(user)).CheckErrors();
await _identityUserManager.AddPasswordAsync(user, IdentityDataSeedContributor.AdminPasswordDefaultValue);
user.SetLastPasswordChangeTime(DateTime.UtcNow.AddDays(-3));
(await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user)).ShouldBeTrue();
user.CreationTime = DateTime.Now.AddDays(-3);
user.SetLastPasswordChangeTime(null);
(await _identityUserManager.ShouldPeriodicallyChangePasswordAsync(user)).ShouldBeTrue();
}
private async Task CreateRandomDefaultRoleAsync() private async Task CreateRandomDefaultRoleAsync()
{ {
await _identityRoleRepository.InsertAsync( await _identityRoleRepository.InsertAsync(
@ -235,4 +270,10 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase
Guid.NewGuid().ToString() + "@abp.io" Guid.NewGuid().ToString() + "@abp.io"
); );
} }
private static void AddPeriodicallyChangePasswordSettings()
{
TestSettingValueProvider.AddSetting(IdentitySettingNames.Password.PasswordChangePeriodDays, 2.ToString());
TestSettingValueProvider.AddSetting(IdentitySettingNames.Password.ForceUsersToPeriodicallyChangePassword, true.ToString());
}
} }

31
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/TestSettingValueProvider.cs

@ -0,0 +1,31 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Settings;
namespace Volo.Abp.Identity;
public class TestSettingValueProvider : ISettingValueProvider, ITransientDependency
{
public const string ProviderName = "Test";
private readonly static Dictionary<string, string> Values = new ();
public string Name => ProviderName;
public static void AddSetting(string name, string value)
{
Values[name] = value;
}
public Task<string> GetOrNullAsync(SettingDefinition setting)
{
return Task.FromResult(Values.GetOrDefault(setting.Name));
}
public Task<List<SettingValue>> GetAllAsync(SettingDefinition[] settings)
{
return Task.FromResult(settings.Select(x => new SettingValue(x.Name, Values.GetOrDefault(x.Name))).ToList());
}
}

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230314024329_Initial.Designer.cs

@ -717,8 +717,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -714,8 +714,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230314024404_Initial.Designer.cs

@ -717,8 +717,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -714,8 +714,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230314024402_Initial.Designer.cs

@ -717,8 +717,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -714,8 +714,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230314024433_Initial.Designer.cs

@ -717,8 +717,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -714,8 +714,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230314023936_Initial.Designer.cs

@ -770,8 +770,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs

@ -767,8 +767,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230314024642_Initial.Designer.cs

@ -717,8 +717,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs

@ -714,8 +714,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230314024129_Initial.Designer.cs

@ -717,8 +717,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs

@ -714,8 +714,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230314024104_Initial.Designer.cs

@ -717,8 +717,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs

@ -714,8 +714,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<DateTime?>("LastPasswordChangeTime") b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("datetime2"); .HasColumnType("datetimeoffset");
b.Property<bool>("LockoutEnabled") b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()

Loading…
Cancel
Save