Ejemplo n.º 1
0
    public async Task PostSaveMember_SaveExisting_WhenAllIsSetupCorrectly_ExpectSuccessResponse(
        [Frozen] IMemberManager umbracoMembersUserManager,
        IMemberService memberService,
        IMemberTypeService memberTypeService,
        IMemberGroupService memberGroupService,
        IDataTypeService dataTypeService,
        IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
        IBackOfficeSecurity backOfficeSecurity,
        IPasswordChanger <MemberIdentityUser> passwordChanger,
        IOptions <GlobalSettings> globalSettings,
        IUser user)
    {
        // arrange
        var member = SetupMemberTestData(out var fakeMemberData, out var memberDisplay, ContentSaveAction.Save);
        var membersIdentityUser = new MemberIdentityUser(123);

        Mock.Get(umbracoMembersUserManager)
        .Setup(x => x.FindByIdAsync(It.IsAny <string>()))
        .ReturnsAsync(() => membersIdentityUser);
        Mock.Get(umbracoMembersUserManager)
        .Setup(x => x.ValidatePasswordAsync(It.IsAny <string>()))
        .ReturnsAsync(() => IdentityResult.Success);

        Mock.Get(umbracoMembersUserManager)
        .Setup(x => x.UpdateAsync(It.IsAny <MemberIdentityUser>()))
        .ReturnsAsync(() => IdentityResult.Success);
        Mock.Get(umbracoMembersUserManager)
        .Setup(x => x.GetRolesAsync(It.IsAny <MemberIdentityUser>()))
        .ReturnsAsync(() => Array.Empty <string>());
        Mock.Get(memberTypeService).Setup(x => x.GetDefault()).Returns("fakeAlias");
        Mock.Get(globalSettings);

        SetupUserAccess(backOfficeSecurityAccessor, backOfficeSecurity, user);
        SetupPasswordSuccess(umbracoMembersUserManager, passwordChanger);

        Mock.Get(memberService).Setup(x => x.GetByUsername(It.IsAny <string>())).Returns(() => member);
        Mock.Get(memberService).Setup(x => x.GetById(It.IsAny <int>())).Returns(() => member);
        Mock.Get(memberService).SetupSequence(
            x => x.GetByEmail(It.IsAny <string>()))
        .Returns(() => null)
        .Returns(() => member);

        var sut = CreateSut(
            memberService,
            memberTypeService,
            memberGroupService,
            umbracoMembersUserManager,
            dataTypeService,
            backOfficeSecurityAccessor,
            passwordChanger,
            globalSettings);

        // act
        var result = await sut.PostSave(fakeMemberData);

        // assert
        Assert.IsNull(result.Result);
        Assert.IsNotNull(result.Value);
        AssertMemberDisplayPropertiesAreEqual(memberDisplay, result.Value);
    }
Ejemplo n.º 2
0
 public MemberSaveModelValidator(
     ILogger <MemberSaveModelValidator> logger,
     IBackOfficeSecurity backofficeSecurity,
     IMemberTypeService memberTypeService,
     IMemberService memberService,
     IShortStringHelper shortStringHelper,
     IPropertyValidationService propertyValidationService)
     : base(logger, propertyValidationService)
 {
     _backofficeSecurity = backofficeSecurity;
     _memberTypeService  = memberTypeService ?? throw new ArgumentNullException(nameof(memberTypeService));
     _memberService      = memberService ?? throw new ArgumentNullException(nameof(memberService));
     _shortStringHelper  = shortStringHelper ?? throw new ArgumentNullException(nameof(shortStringHelper));
 }
Ejemplo n.º 3
0
    public void PostSaveMember_SaveNew_WhenMemberEmailAlreadyExists_ExpectFailResponse(
        [Frozen] IMemberManager umbracoMembersUserManager,
        IMemberService memberService,
        IMemberTypeService memberTypeService,
        IMemberGroupService memberGroupService,
        IDataTypeService dataTypeService,
        IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
        IBackOfficeSecurity backOfficeSecurity,
        IPasswordChanger <MemberIdentityUser> passwordChanger,
        IOptions <GlobalSettings> globalSettings,
        IUser user)
    {
        // arrange
        var member = SetupMemberTestData(out var fakeMemberData, out _, ContentSaveAction.SaveNew);

        Mock.Get(umbracoMembersUserManager)
        .Setup(x => x.CreateAsync(It.IsAny <MemberIdentityUser>()))
        .ReturnsAsync(() => IdentityResult.Success);
        Mock.Get(memberTypeService).Setup(x => x.GetDefault()).Returns("fakeAlias");
        Mock.Get(backOfficeSecurityAccessor).Setup(x => x.BackOfficeSecurity).Returns(backOfficeSecurity);
        Mock.Get(umbracoMembersUserManager)
        .Setup(x => x.ValidatePasswordAsync(It.IsAny <string>()))
        .ReturnsAsync(() => IdentityResult.Success);
        Mock.Get(umbracoMembersUserManager)
        .Setup(x => x.AddToRolesAsync(It.IsAny <MemberIdentityUser>(), It.IsAny <IEnumerable <string> >()))
        .ReturnsAsync(() => IdentityResult.Success);

        Mock.Get(memberService).SetupSequence(
            x => x.GetByEmail(It.IsAny <string>()))
        .Returns(() => member);

        var sut = CreateSut(
            memberService,
            memberTypeService,
            memberGroupService,
            umbracoMembersUserManager,
            dataTypeService,
            backOfficeSecurityAccessor,
            passwordChanger,
            globalSettings);

        // act
        var result     = sut.PostSave(fakeMemberData).Result;
        var validation = result.Result as ValidationErrorResult;

        // assert
        Assert.IsNotNull(result.Result);
        Assert.IsNull(result.Value);
        Assert.AreEqual(StatusCodes.Status400BadRequest, validation?.StatusCode);
    }
Ejemplo n.º 4
0
        public async Task PostSaveMember_SaveNew_CustomField_WhenAllIsSetupCorrectly_ExpectSuccessResponse(
            [Frozen] IMemberManager umbracoMembersUserManager,
            IMemberService memberService,
            IMemberTypeService memberTypeService,
            IMemberGroupService memberGroupService,
            IDataTypeService dataTypeService,
            IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
            IBackOfficeSecurity backOfficeSecurity,
            IPasswordChanger <MemberIdentityUser> passwordChanger,
            IOptions <GlobalSettings> globalSettings,
            IUser user)
        {
            // arrange
            Member member = SetupMemberTestData(out MemberSave fakeMemberData, out MemberDisplay memberDisplay, ContentSaveAction.SaveNew);

            Mock.Get(umbracoMembersUserManager)
            .Setup(x => x.CreateAsync(It.IsAny <MemberIdentityUser>(), It.IsAny <string>()))
            .ReturnsAsync(() => IdentityResult.Success);
            Mock.Get(umbracoMembersUserManager)
            .Setup(x => x.ValidatePasswordAsync(It.IsAny <string>()))
            .ReturnsAsync(() => IdentityResult.Success);
            Mock.Get(memberTypeService).Setup(x => x.GetDefault()).Returns("fakeAlias");
            Mock.Get(backOfficeSecurityAccessor).Setup(x => x.BackOfficeSecurity).Returns(backOfficeSecurity);
            Mock.Get(memberService).SetupSequence(
                x => x.GetByEmail(It.IsAny <string>()))
            .Returns(() => null)
            .Returns(() => member);
            Mock.Get(memberService).Setup(x => x.GetByUsername(It.IsAny <string>())).Returns(() => member);

            MemberController sut = CreateSut(memberService, memberTypeService, memberGroupService, umbracoMembersUserManager, dataTypeService, backOfficeSecurityAccessor, passwordChanger, globalSettings, user);

            // act
            ActionResult <MemberDisplay> result = await sut.PostSave(fakeMemberData);

            // assert
            Assert.IsNull(result.Result);
            Assert.IsNotNull(result.Value);
            AssertMemberDisplayPropertiesAreEqual(memberDisplay, result.Value);
        }
Ejemplo n.º 5
0
        public async Task PostSaveMember_SaveExistingMember_WithNoRoles_Add1Role_ExpectSuccessResponse(
            [Frozen] IMemberManager umbracoMembersUserManager,
            IMemberService memberService,
            IMemberTypeService memberTypeService,
            IMemberGroupService memberGroupService,
            IDataTypeService dataTypeService,
            IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
            IBackOfficeSecurity backOfficeSecurity,
            IPasswordChanger <MemberIdentityUser> passwordChanger,
            IOptions <GlobalSettings> globalSettings,
            IUser user)
        {
            // arrange
            var     roleName = "anyrole";
            IMember member   = SetupMemberTestData(out MemberSave fakeMemberData, out MemberDisplay memberDisplay, ContentSaveAction.Save);

            fakeMemberData.Groups = new List <string>()
            {
                roleName
            };
            var membersIdentityUser = new MemberIdentityUser(123);

            Mock.Get(umbracoMembersUserManager)
            .Setup(x => x.FindByIdAsync(It.IsAny <string>()))
            .ReturnsAsync(() => membersIdentityUser);
            Mock.Get(umbracoMembersUserManager)
            .Setup(x => x.ValidatePasswordAsync(It.IsAny <string>()))
            .ReturnsAsync(() => IdentityResult.Success);
            Mock.Get(umbracoMembersUserManager)
            .Setup(x => x.UpdateAsync(It.IsAny <MemberIdentityUser>()))
            .ReturnsAsync(() => IdentityResult.Success);
            Mock.Get(umbracoMembersUserManager)
            .Setup(x => x.AddToRolesAsync(It.IsAny <MemberIdentityUser>(), It.IsAny <IEnumerable <string> >()))
            .ReturnsAsync(() => IdentityResult.Success);
            Mock.Get(memberTypeService).Setup(x => x.GetDefault()).Returns("fakeAlias");
            Mock.Get(backOfficeSecurityAccessor).Setup(x => x.BackOfficeSecurity).Returns(backOfficeSecurity);
            Mock.Get(memberService).Setup(x => x.GetByUsername(It.IsAny <string>())).Returns(() => member);
            Mock.Get(memberService).Setup(x => x.GetById(It.IsAny <int>())).Returns(() => member);

            SetupUserAccess(backOfficeSecurityAccessor, backOfficeSecurity, user);
            SetupPasswordSuccess(umbracoMembersUserManager, passwordChanger);

            Mock.Get(memberService).SetupSequence(
                x => x.GetByEmail(It.IsAny <string>()))
            .Returns(() => null)
            .Returns(() => member);
            MemberController sut = CreateSut(memberService, memberTypeService, memberGroupService, umbracoMembersUserManager, dataTypeService, backOfficeSecurityAccessor, passwordChanger, globalSettings, user);

            // act
            ActionResult <MemberDisplay> result = await sut.PostSave(fakeMemberData);

            // assert
            Assert.IsNull(result.Result);
            Assert.IsNotNull(result.Value);
            Mock.Get(umbracoMembersUserManager)
            .Verify(u => u.GetRolesAsync(membersIdentityUser));
            Mock.Get(umbracoMembersUserManager)
            .Verify(u => u.AddToRolesAsync(membersIdentityUser, new[] { roleName }));
            Mock.Get(memberService)
            .Verify(m => m.Save(It.IsAny <Member>()));
            AssertMemberDisplayPropertiesAreEqual(memberDisplay, result.Value);
        }
Ejemplo n.º 6
0
 private static void SetupUserAccess(IBackOfficeSecurityAccessor backOfficeSecurityAccessor, IBackOfficeSecurity backOfficeSecurity, IUser user)
 {
     Mock.Get(backOfficeSecurityAccessor).Setup(x => x.BackOfficeSecurity).Returns(backOfficeSecurity);
     Mock.Get(user).Setup(x => x.AllowedSections).Returns(new[] { "member" });
     Mock.Get(backOfficeSecurity).Setup(x => x.CurrentUser).Returns(user);
 }