Fixes tests, removes some magic strings

This commit is contained in:
Shannon
2019-11-26 12:49:57 +11:00
parent a6707cd367
commit 488f6925b8
9 changed files with 68 additions and 103 deletions

View File

@@ -102,16 +102,15 @@ namespace Umbraco.Core.Models.PublishedContent
// TODO: this list somehow also exists in constants, see memberTypeRepository => remove duplicate!
private static readonly Dictionary<string, int> BuiltinMemberProperties = new Dictionary<string, int>
{
{ "Email", Constants.DataTypes.Textbox },
{ "Username", Constants.DataTypes.Textbox },
{ "PasswordQuestion", Constants.DataTypes.Textbox },
{ "Comments", Constants.DataTypes.Textbox },
{ "IsApproved", Constants.DataTypes.Boolean },
{ "IsLockedOut", Constants.DataTypes.Boolean },
{ "LastLockoutDate", Constants.DataTypes.DateTime },
{ "CreateDate", Constants.DataTypes.DateTime },
{ "LastLoginDate", Constants.DataTypes.DateTime },
{ "LastPasswordChangeDate", Constants.DataTypes.DateTime },
{ nameof(IMember.Email), Constants.DataTypes.Textbox },
{ nameof(IMember.Username), Constants.DataTypes.Textbox },
{ nameof(IMember.Comments), Constants.DataTypes.Textbox },
{ nameof(IMember.IsApproved), Constants.DataTypes.Boolean },
{ nameof(IMember.IsLockedOut), Constants.DataTypes.Boolean },
{ nameof(IMember.LastLockoutDate), Constants.DataTypes.DateTime },
{ nameof(IMember.CreateDate), Constants.DataTypes.DateTime },
{ nameof(IMember.LastLoginDate), Constants.DataTypes.DateTime },
{ nameof(IMember.LastPasswordChangeDate), Constants.DataTypes.DateTime },
};
#region Content type

View File

@@ -177,7 +177,7 @@ namespace Umbraco.Core.Models
{
get
{
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.Comments, "Comments", default(string));
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.Comments, nameof(Comments), default(string));
if (a.Success == false) return a.Result;
return Properties[Constants.Conventions.Member.Comments].GetValue() == null
@@ -188,7 +188,7 @@ namespace Umbraco.Core.Models
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.Comments,
"Comments") == false) return;
nameof(Comments)) == false) return;
Properties[Constants.Conventions.Member.Comments].SetValue(value);
}
@@ -206,7 +206,7 @@ namespace Umbraco.Core.Models
{
get
{
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.IsApproved, "IsApproved",
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.IsApproved, nameof(IsApproved),
//This is the default value if the prop is not found
true);
if (a.Success == false) return a.Result;
@@ -223,7 +223,7 @@ namespace Umbraco.Core.Models
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.IsApproved,
"IsApproved") == false) return;
nameof(IsApproved)) == false) return;
Properties[Constants.Conventions.Member.IsApproved].SetValue(value);
}
@@ -241,7 +241,7 @@ namespace Umbraco.Core.Models
{
get
{
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.IsLockedOut, "IsLockedOut", false);
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.IsLockedOut, nameof(IsLockedOut), false);
if (a.Success == false) return a.Result;
if (Properties[Constants.Conventions.Member.IsLockedOut].GetValue() == null) return false;
var tryConvert = Properties[Constants.Conventions.Member.IsLockedOut].GetValue().TryConvertTo<bool>();
@@ -256,7 +256,7 @@ namespace Umbraco.Core.Models
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.IsLockedOut,
"IsLockedOut") == false) return;
nameof(IsLockedOut)) == false) return;
Properties[Constants.Conventions.Member.IsLockedOut].SetValue(value);
}
@@ -274,7 +274,7 @@ namespace Umbraco.Core.Models
{
get
{
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.LastLoginDate, "LastLoginDate", default(DateTime));
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.LastLoginDate, nameof(LastLoginDate), default(DateTime));
if (a.Success == false) return a.Result;
if (Properties[Constants.Conventions.Member.LastLoginDate].GetValue() == null) return default(DateTime);
var tryConvert = Properties[Constants.Conventions.Member.LastLoginDate].GetValue().TryConvertTo<DateTime>();
@@ -289,7 +289,7 @@ namespace Umbraco.Core.Models
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.LastLoginDate,
"LastLoginDate") == false) return;
nameof(LastLoginDate)) == false) return;
Properties[Constants.Conventions.Member.LastLoginDate].SetValue(value);
}
@@ -307,7 +307,7 @@ namespace Umbraco.Core.Models
{
get
{
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.LastPasswordChangeDate, "LastPasswordChangeDate", default(DateTime));
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.LastPasswordChangeDate, nameof(LastPasswordChangeDate), default(DateTime));
if (a.Success == false) return a.Result;
if (Properties[Constants.Conventions.Member.LastPasswordChangeDate].GetValue() == null) return default(DateTime);
var tryConvert = Properties[Constants.Conventions.Member.LastPasswordChangeDate].GetValue().TryConvertTo<DateTime>();
@@ -322,7 +322,7 @@ namespace Umbraco.Core.Models
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.LastPasswordChangeDate,
"LastPasswordChangeDate") == false) return;
nameof(LastPasswordChangeDate)) == false) return;
Properties[Constants.Conventions.Member.LastPasswordChangeDate].SetValue(value);
}
@@ -340,7 +340,7 @@ namespace Umbraco.Core.Models
{
get
{
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.LastLockoutDate, "LastLockoutDate", default(DateTime));
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.LastLockoutDate, nameof(LastLockoutDate), default(DateTime));
if (a.Success == false) return a.Result;
if (Properties[Constants.Conventions.Member.LastLockoutDate].GetValue() == null) return default(DateTime);
var tryConvert = Properties[Constants.Conventions.Member.LastLockoutDate].GetValue().TryConvertTo<DateTime>();
@@ -355,7 +355,7 @@ namespace Umbraco.Core.Models
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.LastLockoutDate,
"LastLockoutDate") == false) return;
nameof(LastLockoutDate)) == false) return;
Properties[Constants.Conventions.Member.LastLockoutDate].SetValue(value);
}
@@ -374,7 +374,7 @@ namespace Umbraco.Core.Models
{
get
{
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.FailedPasswordAttempts, "FailedPasswordAttempts", 0);
var a = WarnIfPropertyTypeNotFoundOnGet(Constants.Conventions.Member.FailedPasswordAttempts, nameof(FailedPasswordAttempts), 0);
if (a.Success == false) return a.Result;
if (Properties[Constants.Conventions.Member.FailedPasswordAttempts].GetValue() == null) return default(int);
var tryConvert = Properties[Constants.Conventions.Member.FailedPasswordAttempts].GetValue().TryConvertTo<int>();
@@ -389,7 +389,7 @@ namespace Umbraco.Core.Models
{
if (WarnIfPropertyTypeNotFoundOnSet(
Constants.Conventions.Member.FailedPasswordAttempts,
"FailedPasswordAttempts") == false) return;
nameof(FailedPasswordAttempts)) == false) return;
Properties[Constants.Conventions.Member.FailedPasswordAttempts].SetValue(value);
}

View File

@@ -492,6 +492,7 @@ ORDER BY colName";
// list the columns to save, NOTE: would be nice to not have hard coded strings here but no real good way around that
var colsToSave = new Dictionary<string, string>
{
//TODO: Change these to constants + nameof
{"userDisabled", "IsApproved"},
{"userNoConsole", "IsLockedOut"},
{"startStructureID", "StartContentId"},

View File

@@ -43,7 +43,6 @@
<providers>
<clear/>
<add name="UmbracoMembershipProvider" type="Umbraco.Web.Security.Providers.MembersMembershipProvider, Umbraco.Web" minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="4" useLegacyEncoding="false" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Member" passwordFormat="Hashed"/>
<add name="UsersMembershipProvider" type="Umbraco.Web.Security.Providers.UsersMembershipProvider, Umbraco.Web" minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="4" useLegacyEncoding="false" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" passwordFormat="Hashed" allowManuallyChangingPassword="false"/>
</providers>
</membership>
</system.web>

View File

@@ -73,41 +73,7 @@ namespace Umbraco.Tests.Membership
Assert.IsNull(user);
}
[Test]
public void Password_Encrypted()
{
IMember createdMember = null;
var memberType = MockedContentTypes.CreateSimpleMemberType();
foreach (var p in ConventionsHelper.GetStandardPropertyTypeStubs())
{
memberType.AddPropertyType(p.Value);
}
var memberTypeServiceMock = new Mock<IMemberTypeService>();
memberTypeServiceMock.Setup(x => x.GetDefault()).Returns("Member");
var membershipServiceMock = new Mock<IMembershipMemberService>();
membershipServiceMock.Setup(service => service.Exists("test")).Returns(false);
membershipServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
membershipServiceMock.Setup(
service => service.CreateWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>()))
.Callback((string u, string e, string p, string m, bool isApproved) =>
{
createdMember = new Member("test", e, u, p, memberType, isApproved);
})
.Returns(() => createdMember);
var provider = new MembersMembershipProvider(membershipServiceMock.Object, memberTypeServiceMock.Object, TestHelper.GetUmbracoVersion());
provider.Initialize("test", new NameValueCollection { { "passwordFormat", "Encrypted" } });
MembershipCreateStatus status;
provider.CreateUser("test", "test", "testtest$1", "test@test.com", "test", "test", true, "test", out status);
Assert.AreNotEqual("test", createdMember.RawPasswordValue);
var decrypted = provider.DecryptPassword(createdMember.RawPasswordValue);
Assert.AreEqual("testtest$1", decrypted);
}
[Test]
public void Password_Hashed_With_Salt()
{

View File

@@ -65,33 +65,30 @@ namespace Umbraco.Tests.Services
// TODO: see TODO in PublishedContentType, this list contains duplicates
var aliases = new[]
{
"umbracoMemberPasswordRetrievalQuestion",
"umbracoMemberPasswordRetrievalAnswer",
"umbracoMemberComments",
"umbracoMemberFailedPasswordAttempts",
"umbracoMemberApproved",
"umbracoMemberLockedOut",
"umbracoMemberLastLockoutDate",
"umbracoMemberLastLogin",
"umbracoMemberLastPasswordChangeDate",
"Email",
"Username",
"PasswordQuestion",
"Comments",
"IsApproved",
"IsLockedOut",
"LastLockoutDate",
"CreateDate",
"LastLoginDate",
"LastPasswordChangeDate"
{
Constants.Conventions.Member.Comments,
Constants.Conventions.Member.FailedPasswordAttempts,
Constants.Conventions.Member.IsApproved,
Constants.Conventions.Member.IsLockedOut,
Constants.Conventions.Member.LastLockoutDate,
Constants.Conventions.Member.LastLoginDate,
Constants.Conventions.Member.LastPasswordChangeDate,
nameof(IMember.Email),
nameof(IMember.Username),
nameof(IMember.Comments),
nameof(IMember.IsApproved),
nameof(IMember.IsLockedOut),
nameof(IMember.LastLockoutDate),
nameof(IMember.CreateDate),
nameof(IMember.LastLoginDate),
nameof(IMember.LastPasswordChangeDate)
};
var properties = pmember.Properties.ToList();
Assert.IsTrue(properties.Select(x => x.Alias).ContainsAll(aliases));
var email = properties[aliases.IndexOf("Email")];
var email = properties[aliases.IndexOf(nameof(IMember.Email))];
Assert.AreEqual("xemail", email.GetSourceValue());
}

View File

@@ -99,12 +99,15 @@ namespace Umbraco.Tests.Testing.TestingTests
{
var umbracoContext = TestObjects.GetUmbracoContextMock();
var membershipHelper = new MembershipHelper(umbracoContext.HttpContext, Mock.Of<IPublishedMemberCache>(), Mock.Of<MembersMembershipProvider>(), Mock.Of<RoleProvider>(), Mock.Of<IMemberService>(), Mock.Of<IMemberTypeService>(), Mock.Of<IUserService>(), Mock.Of<IPublicAccessService>(), AppCaches.Disabled, Mock.Of<ILogger>());
var logger = Mock.Of<IProfilingLogger>();
var memberService = Mock.Of<IMemberService>();
var memberTypeService = Mock.Of<IMemberTypeService>();
var membershipProvider = new MembersMembershipProvider(memberService, memberTypeService, Mock.Of<IUmbracoVersion>());
var membershipHelper = new MembershipHelper(umbracoContext.HttpContext, Mock.Of<IPublishedMemberCache>(), membershipProvider, Mock.Of<RoleProvider>(), memberService, memberTypeService, Mock.Of<IUserService>(), Mock.Of<IPublicAccessService>(), AppCaches.Disabled, logger);
var umbracoHelper = new UmbracoHelper(Mock.Of<IPublishedContent>(), Mock.Of<ITagQuery>(), Mock.Of<ICultureDictionaryFactory>(), Mock.Of<IUmbracoComponentRenderer>(), Mock.Of<IPublishedContentQuery>(), membershipHelper);
var umbracoMapper = new UmbracoMapper(new MapDefinitionCollection(new[] { Mock.Of<IMapDefinition>() }));
// ReSharper disable once UnusedVariable
var umbracoApiController = new FakeUmbracoApiController(Mock.Of<IGlobalSettings>(), Mock.Of<IUmbracoContextAccessor>(), Mock.Of<ISqlContext>(), ServiceContext.CreatePartial(), AppCaches.NoCache, Mock.Of<IProfilingLogger>(), Mock.Of<IRuntimeState>(), umbracoHelper, umbracoMapper);
var umbracoApiController = new FakeUmbracoApiController(Mock.Of<IGlobalSettings>(), Mock.Of<IUmbracoContextAccessor>(), Mock.Of<ISqlContext>(), ServiceContext.CreatePartial(), AppCaches.NoCache, logger, Mock.Of<IRuntimeState>(), umbracoHelper, umbracoMapper);
Assert.Pass();
}

View File

@@ -74,15 +74,15 @@ namespace Umbraco.Web.PublishedCache.NuCache
.ToDictionary(x => x.Alias, x => new[] { new PropertyData { Value = x.GetValue(), Culture = string.Empty, Segment = string.Empty } }, StringComparer.OrdinalIgnoreCase);
// see also PublishedContentType
AddIf(contentType, properties, "Email", member.Email);
AddIf(contentType, properties, "Username", member.Username);
AddIf(contentType, properties, "Comments", member.Comments);
AddIf(contentType, properties, "IsApproved", member.IsApproved);
AddIf(contentType, properties, "IsLockedOut", member.IsLockedOut);
AddIf(contentType, properties, "LastLockoutDate", member.LastLockoutDate);
AddIf(contentType, properties, "CreateDate", member.CreateDate);
AddIf(contentType, properties, "LastLoginDate", member.LastLoginDate);
AddIf(contentType, properties, "LastPasswordChangeDate", member.LastPasswordChangeDate);
AddIf(contentType, properties, nameof(IMember.Email), member.Email);
AddIf(contentType, properties, nameof(IMember.Username), member.Username);
AddIf(contentType, properties, nameof(IMember.Comments), member.Comments);
AddIf(contentType, properties, nameof(IMember.IsApproved), member.IsApproved);
AddIf(contentType, properties, nameof(IMember.IsLockedOut), member.IsLockedOut);
AddIf(contentType, properties, nameof(IMember.LastLockoutDate), member.LastLockoutDate);
AddIf(contentType, properties, nameof(IMember.CreateDate), member.CreateDate);
AddIf(contentType, properties, nameof(IMember.LastLoginDate), member.LastLoginDate);
AddIf(contentType, properties, nameof(IMember.LastPasswordChangeDate), member.LastPasswordChangeDate);
return properties;
}

View File

@@ -94,15 +94,15 @@ namespace Umbraco.Web.PublishedCache
{
var aliases = properties.Select(x => x.Alias).ToList();
EnsureMemberProperty(properties, aliases, "Email", Email);
EnsureMemberProperty(properties, aliases, "UserName", UserName);
EnsureMemberProperty(properties, aliases, "Comments", Comments);
EnsureMemberProperty(properties, aliases, "IsApproved", IsApproved);
EnsureMemberProperty(properties, aliases, "IsLockedOut", IsLockedOut);
EnsureMemberProperty(properties, aliases, "LastLockoutDate", LastLockoutDate);
EnsureMemberProperty(properties, aliases, "CreateDate", CreateDate);
EnsureMemberProperty(properties, aliases, "LastLoginDate", LastLoginDate);
EnsureMemberProperty(properties, aliases, "LastPasswordChangeDate", LastPasswordChangeDate);
EnsureMemberProperty(properties, aliases, nameof(IMember.Email), Email);
EnsureMemberProperty(properties, aliases, nameof(IMember.Username), UserName);
EnsureMemberProperty(properties, aliases, nameof(IMember.Comments), Comments);
EnsureMemberProperty(properties, aliases, nameof(IMember.IsApproved), IsApproved);
EnsureMemberProperty(properties, aliases, nameof(IMember.IsLockedOut), IsLockedOut);
EnsureMemberProperty(properties, aliases, nameof(IMember.LastLockoutDate), LastLockoutDate);
EnsureMemberProperty(properties, aliases, nameof(IMember.CreateDate), CreateDate);
EnsureMemberProperty(properties, aliases, nameof(IMember.LastLoginDate), LastLoginDate);
EnsureMemberProperty(properties, aliases, nameof(IMember.LastPasswordChangeDate), LastPasswordChangeDate);
}
private void EnsureMemberProperty(List<IPublishedProperty> properties, List<string> aliases, string alias, object value)