Fixed further failing tests.
This commit is contained in:
@@ -28,15 +28,15 @@ namespace Umbraco.Infrastructure.Configuration
|
||||
ReservedUrls = globalSettings.ReservedUrls,
|
||||
Smtp = globalSettings.SmtpSettings != null
|
||||
? new SmtpSettings
|
||||
{
|
||||
DeliveryMethod = globalSettings.SmtpSettings.DeliveryMethod,
|
||||
From = globalSettings.SmtpSettings.From,
|
||||
Host = globalSettings.SmtpSettings.Host,
|
||||
Password = globalSettings.SmtpSettings.Password,
|
||||
PickupDirectoryLocation = globalSettings.SmtpSettings.PickupDirectoryLocation,
|
||||
Port = globalSettings.SmtpSettings.Port,
|
||||
Username = globalSettings.SmtpSettings.Username,
|
||||
}
|
||||
{
|
||||
DeliveryMethod = globalSettings.SmtpSettings.DeliveryMethod,
|
||||
From = globalSettings.SmtpSettings.From,
|
||||
Host = globalSettings.SmtpSettings.Host,
|
||||
Password = globalSettings.SmtpSettings.Password,
|
||||
PickupDirectoryLocation = globalSettings.SmtpSettings.PickupDirectoryLocation,
|
||||
Port = globalSettings.SmtpSettings.Port,
|
||||
Username = globalSettings.SmtpSettings.Username,
|
||||
}
|
||||
: new SmtpSettings(),
|
||||
TimeOutInMinutes = globalSettings.TimeOutInMinutes,
|
||||
UmbracoCssPath = globalSettings.UmbracoCssPath,
|
||||
@@ -55,5 +55,18 @@ namespace Umbraco.Infrastructure.Configuration
|
||||
UmbracoConnectionString = connectionStrings[Constants.System.UmbracoConnectionName].ConnectionString
|
||||
};
|
||||
}
|
||||
|
||||
public static UserPasswordConfigurationSettings ConvertUserPasswordConfiguration(IUserPasswordConfiguration passwordConfiguration)
|
||||
{
|
||||
return new UserPasswordConfigurationSettings
|
||||
{
|
||||
HashAlgorithmType = passwordConfiguration.HashAlgorithmType,
|
||||
RequireDigit = passwordConfiguration.RequireDigit,
|
||||
RequiredLength = passwordConfiguration.RequiredLength,
|
||||
RequireLowercase = passwordConfiguration.RequireLowercase,
|
||||
RequireNonLetterOrDigit = passwordConfiguration.RequireNonLetterOrDigit,
|
||||
RequireUppercase = passwordConfiguration.RequireUppercase,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,19 @@ namespace Umbraco.Infrastructure.Configuration
|
||||
return result;
|
||||
}
|
||||
|
||||
public static IUserPasswordConfiguration ConvertUserPasswordConfiguration(UserPasswordConfigurationSettings passwordConfiguration)
|
||||
{
|
||||
return new TestUserPasswordConfiguration
|
||||
{
|
||||
HashAlgorithmType = passwordConfiguration.HashAlgorithmType,
|
||||
RequireDigit = passwordConfiguration.RequireDigit,
|
||||
RequiredLength = passwordConfiguration.RequiredLength,
|
||||
RequireLowercase = passwordConfiguration.RequireLowercase,
|
||||
RequireNonLetterOrDigit = passwordConfiguration.RequireNonLetterOrDigit,
|
||||
RequireUppercase = passwordConfiguration.RequireUppercase,
|
||||
};
|
||||
}
|
||||
|
||||
private class TestGlobalSettings : IGlobalSettings
|
||||
{
|
||||
public string ReservedUrls { get; set; }
|
||||
@@ -126,5 +139,22 @@ namespace Umbraco.Infrastructure.Configuration
|
||||
_dictionary.Add(key, new ConfigConnectionString(connectionString, string.Empty, key));
|
||||
}
|
||||
}
|
||||
|
||||
private class TestUserPasswordConfiguration : IUserPasswordConfiguration
|
||||
{
|
||||
public int RequiredLength { get; set; }
|
||||
|
||||
public bool RequireNonLetterOrDigit { get; set; }
|
||||
|
||||
public bool RequireDigit { get; set; }
|
||||
|
||||
public bool RequireLowercase { get; set; }
|
||||
|
||||
public bool RequireUppercase { get; set; }
|
||||
|
||||
public string HashAlgorithmType { get; set; }
|
||||
|
||||
public int MaxFailedAccessAttemptsBeforeLockout { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,8 +162,8 @@ namespace Umbraco.Tests.Common.Builders
|
||||
var installEmptyDatabase = _installEmptyDatabase ?? false;
|
||||
var installMissingDatabase = _installMissingDatabase ?? false;
|
||||
var registerType = _registerType ?? null;
|
||||
var reservedPaths = _reservedPaths ?? "~/app_plugins/,~/install/,~/mini-profiler-resources/,";
|
||||
var reservedUrls = _reservedUrls ?? "~/config/splashes/noNodes.aspx,~/.well-known,";
|
||||
var reservedPaths = _reservedPaths ?? GlobalSettings.StaticReservedPaths;
|
||||
var reservedUrls = _reservedUrls ?? GlobalSettings.StaticReservedUrls;
|
||||
var path = _path ?? "~/umbraco";
|
||||
var useHttps = _useHttps ?? false;
|
||||
var umbracoCssPath = _umbracoCssPath ?? "~/css";
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Tests.Common.Builders;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Web.Configuration;
|
||||
using Umbraco.Web.Hosting;
|
||||
|
||||
namespace Umbraco.Tests.Configurations
|
||||
|
||||
@@ -12,7 +12,6 @@ using Umbraco.Core.Services;
|
||||
using Umbraco.Tests.Common.Builders;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.Testing;
|
||||
using Umbraco.Web.Configuration;
|
||||
|
||||
namespace Umbraco.Tests.Migrations
|
||||
{
|
||||
|
||||
@@ -9,14 +9,12 @@ using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Migrations;
|
||||
using Umbraco.Core.Migrations.Upgrade;
|
||||
using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
using Umbraco.Core.Scoping;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Persistance.SqlCe;
|
||||
using Umbraco.Tests.Common.Builders;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.Testing;
|
||||
using Umbraco.Web.Configuration;
|
||||
|
||||
namespace Umbraco.Tests.Migrations
|
||||
{
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Threading;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Configuration.Models;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Infrastructure.Configuration;
|
||||
using Umbraco.Tests.Common.Builders;
|
||||
@@ -24,7 +25,9 @@ namespace Umbraco.Tests.Routing
|
||||
// FIXME: be able to get the UmbracoModule from the container. any reason settings were from testobjects?
|
||||
//create the module
|
||||
var logger = Mock.Of<ILogger>();
|
||||
var globalSettings = new GlobalSettingsBuilder().Build();
|
||||
var globalSettings = new GlobalSettingsBuilder()
|
||||
.WithReservedPaths((GlobalSettings.StaticReservedPaths + "~/umbraco"))
|
||||
.Build();
|
||||
var runtime = new RuntimeState(globalSettings, UmbracoVersion);
|
||||
|
||||
_module = new UmbracoInjectedModule
|
||||
|
||||
@@ -10,8 +10,8 @@ using Umbraco.Core;
|
||||
using Umbraco.Core.BackOffice;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Infrastructure.Configuration;
|
||||
using Umbraco.Net;
|
||||
using Umbraco.Tests.Common.Builders;
|
||||
using Umbraco.Web.Security;
|
||||
|
||||
namespace Umbraco.Tests.Security
|
||||
@@ -45,8 +45,7 @@ namespace Umbraco.Tests.Security
|
||||
var mockGlobalSettings = new Mock<IGlobalSettings>();
|
||||
mockGlobalSettings.Setup(x => x.DefaultUILanguage).Returns("test");
|
||||
|
||||
var globalSettings = new GlobalSettingsBuilder().Build();
|
||||
var user = new BackOfficeIdentityUser(globalSettings, 2, new List<IReadOnlyUserGroup>())
|
||||
var user = new BackOfficeIdentityUser(ConfigModelConversionsFromLegacy.ConvertGlobalSettings(mockGlobalSettings.Object), 2, new List<IReadOnlyUserGroup>())
|
||||
{
|
||||
UserName = "alice",
|
||||
Name = "Alice",
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.BackOffice;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.Configuration.Models;
|
||||
|
||||
namespace Umbraco.Web.Configuration
|
||||
{
|
||||
/// <summary>
|
||||
/// TEMPORARY: this class has been added just to ensure Umbraco.Web functionality continues to compile, by
|
||||
/// converting between e.g. <see cref="BackOfficeIdentityOptions"></see> (used by
|
||||
/// legacy configuration and <see cref="UserPasswordConfigurationSettings"></see> (used by Netcore/IOptions configuration).
|
||||
/// </summary>
|
||||
public static class ConfigModelConversions
|
||||
{
|
||||
public static IOptions<UserPasswordConfigurationSettings> ConvertToOptionsOfUserPasswordConfigurationSettings(IOptions<BackOfficeIdentityOptions> identityOptions)
|
||||
{
|
||||
var passwordOptions = identityOptions.Value.Password;
|
||||
var lockOutOptions = identityOptions.Value.Lockout;
|
||||
var passwordConfiguration = new UserPasswordConfigurationSettings
|
||||
{
|
||||
MaxFailedAccessAttemptsBeforeLockout = lockOutOptions.MaxFailedAccessAttempts,
|
||||
HashAlgorithmType = Constants.Security.AspNetCoreV3PasswordHashAlgorithmName, // TODO: not sure where to map this from.
|
||||
RequireDigit = passwordOptions.RequireDigit,
|
||||
RequiredLength = passwordOptions.RequiredLength,
|
||||
RequireLowercase = passwordOptions.RequireLowercase,
|
||||
RequireNonLetterOrDigit = passwordOptions.RequireNonAlphanumeric,
|
||||
RequireUppercase = passwordOptions.RequireUppercase,
|
||||
};
|
||||
|
||||
return Options.Create(passwordConfiguration);
|
||||
}
|
||||
|
||||
public static IOptions<BackOfficeIdentityOptions> ConvertToOptionsOfBackOfficeIdentityOptions(IUserPasswordConfiguration passwordConfiguration)
|
||||
{
|
||||
var identityOptions = new BackOfficeIdentityOptions
|
||||
{
|
||||
Lockout = new LockoutOptions
|
||||
{
|
||||
MaxFailedAccessAttempts = passwordConfiguration.MaxFailedAccessAttemptsBeforeLockout,
|
||||
},
|
||||
Password = new PasswordOptions
|
||||
{
|
||||
RequireDigit = passwordConfiguration.RequireDigit,
|
||||
RequiredLength = passwordConfiguration.RequiredLength,
|
||||
RequireLowercase = passwordConfiguration.RequireLowercase,
|
||||
RequireNonAlphanumeric = passwordConfiguration.RequireNonLetterOrDigit,
|
||||
RequireUppercase = passwordConfiguration.RequireUppercase,
|
||||
}
|
||||
};
|
||||
|
||||
return Options.Create(identityOptions);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,6 @@ using Umbraco.Core.Security;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Infrastructure.Configuration;
|
||||
using Umbraco.Net;
|
||||
using Umbraco.Web.Configuration;
|
||||
|
||||
namespace Umbraco.Web.Security
|
||||
{
|
||||
@@ -22,7 +21,7 @@ namespace Umbraco.Web.Security
|
||||
public const string OwinMarkerKey = "Umbraco.Web.Security.Identity.BackOfficeUserManagerMarker";
|
||||
|
||||
public BackOfficeOwinUserManager(
|
||||
IOptions<BackOfficeIdentityOptions> passwordConfiguration,
|
||||
IUserPasswordConfiguration passwordConfiguration,
|
||||
IIpResolver ipResolver,
|
||||
IUserStore<BackOfficeIdentityUser> store,
|
||||
IOptions<BackOfficeIdentityOptions> optionsAccessor,
|
||||
@@ -32,9 +31,9 @@ namespace Umbraco.Web.Security
|
||||
BackOfficeIdentityErrorDescriber errors,
|
||||
IDataProtectionProvider dataProtectionProvider,
|
||||
ILogger<UserManager<BackOfficeIdentityUser>> logger)
|
||||
: base(ipResolver, store, optionsAccessor, null, userValidators, passwordValidators, keyNormalizer, errors, null, logger, ConfigModelConversions.ConvertToOptionsOfUserPasswordConfigurationSettings(passwordConfiguration))
|
||||
: base(ipResolver, store, optionsAccessor, null, userValidators, passwordValidators, keyNormalizer, errors, null, logger, Microsoft.Extensions.Options.Options.Create(ConfigModelConversionsFromLegacy.ConvertUserPasswordConfiguration(passwordConfiguration)))
|
||||
{
|
||||
PasswordConfiguration = ConfigModelConversions.ConvertToOptionsOfUserPasswordConfigurationSettings(passwordConfiguration).Value;
|
||||
PasswordConfiguration = passwordConfiguration;
|
||||
InitUserManager(this, dataProtectionProvider);
|
||||
}
|
||||
|
||||
@@ -105,7 +104,7 @@ namespace Umbraco.Web.Security
|
||||
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromDays(30);
|
||||
|
||||
return new BackOfficeOwinUserManager(
|
||||
ConfigModelConversions.ConvertToOptionsOfBackOfficeIdentityOptions(passwordConfiguration),
|
||||
passwordConfiguration,
|
||||
ipResolver,
|
||||
customUserStore,
|
||||
new OptionsWrapper<BackOfficeIdentityOptions>(options),
|
||||
|
||||
@@ -148,7 +148,6 @@
|
||||
<Compile Include="Compose\BackOfficeUserAuditEventsComposer.cs" />
|
||||
<Compile Include="Compose\NestedContentPropertyComponent.cs" />
|
||||
<Compile Include="Composing\LightInject\LightInjectContainer.cs" />
|
||||
<Compile Include="Configuration\ConfigModelConversions.cs" />
|
||||
<Compile Include="Editors\PasswordChanger.cs" />
|
||||
<Compile Include="HttpContextExtensions.cs" />
|
||||
<Compile Include="Macros\MacroRenderer.cs" />
|
||||
|
||||
Reference in New Issue
Block a user