Пример #1
0
        public void ErrDuplicateEmail()
        {
            IsReadOnlyTest = true;
            vEmail         = "*****@*****.**";

            CreateUserAccountOperation.Result result = ExecuteOperation();

            Assert.AreEqual(CreateUserAccountOperation.ResultStatus.DuplicateEmail, result.Status,
                            "Incorrect Status.");
        }
Пример #2
0
        public void ErrDuplicateUsername()
        {
            IsReadOnlyTest = true;
            vUsername      = "******";

            CreateUserAccountOperation.Result result = ExecuteOperation();

            Assert.AreEqual(CreateUserAccountOperation.ResultStatus.DuplicateUsername, result.Status,
                            "Incorrect Status.");
        }
        public void ErrUnexpected()
        {
            MockData
            .Setup(x => x.Get <Email>(It.IsAny <IWeaverQuery>(), It.IsAny <string>()))
            .Throws(new Exception("x"));

            var op = new CreateUserAccountOperation();

            CreateUserAccountOperation.Result result = op.Execute(MockOpCtx.Object, MockBuild.Object,
                                                                  MockTasks.Object, "[email protected]", "user", "pass");

            Assert.NotNull(result, "Result should be filled.");
            Assert.AreEqual(CreateUserAccountOperation.ResultStatus.UnexpectedError, result.Status,
                            "Incorrect Status");
        }
        public void ErrDuplicateUser()
        {
            //Note: the fault would actually come from a "Create" task

            MockData
            .Setup(x => x.Get <Email>(It.IsAny <IWeaverQuery>(), It.IsAny <string>()))
            .Throws(new FabDuplicateFault("x"));

            var op = new CreateUserAccountOperation();

            CreateUserAccountOperation.Result result = op.Execute(MockOpCtx.Object, MockBuild.Object,
                                                                  MockTasks.Object, "[email protected]", "user", "pass");

            Assert.NotNull(result, "Result should be filled.");
            Assert.AreEqual(CreateUserAccountOperation.ResultStatus.DuplicateUsername, result.Status,
                            "Incorrect Status");
        }
        public void ErrDuplicateEmail()
        {
            const string email = "*****@*****.**";

            MockData
            .Setup(x => x.Get <Email>(It.IsAny <IWeaverQuery>(), It.IsAny <string>()))
            .Returns(new Email());

            var op = new CreateUserAccountOperation();

            CreateUserAccountOperation.Result result = op.Execute(MockOpCtx.Object, MockBuild.Object,
                                                                  MockTasks.Object, "[email protected]", "user", "pass");

            Assert.NotNull(result, "Result should be filled.");
            Assert.AreEqual(CreateUserAccountOperation.ResultStatus.DuplicateEmail, result.Status,
                            "Incorrect Status");
        }
        public void Execute()
        {
            const string email    = "*****@*****.**";
            const string username = "******";
            const string password = "******";
            const long   fabAppId = (long)SetupAppId.FabSys;

            ICreateOperationBuilder build = MockBuild.Object;
            CreateOperationTasks    tasks = MockTasks.Object;

            var expectUser  = new User();
            var expectMem   = new Member();
            var expectEmail = new Email();

            IWeaverVarAlias <User>   userAlias  = new WeaverVarAlias <User>("userAlias");
            IWeaverVarAlias <Member> memAlias   = new WeaverVarAlias <Member>("memAlias");
            IWeaverVarAlias <Email>  emailAlias = new WeaverVarAlias <Email>("emailAlias");

            MockData.Setup(x => x.Get <Email>(It.IsAny <IWeaverQuery>(),
                                              typeof(CreateUserAccountOperation).Name + "-FindDuplicateEmail"))
            .Returns((Email)null);

            MockBuild
            .Setup(x => x.StartSession())
            .Callback(CheckCallIndex("StartSession"));

            //// Add App

            MockTasks
            .Setup(x => x.FindDuplicateUserNameKey(build, ItIsVert <User>(vNewUserId)))
            .Callback(CheckCallIndex("FindDuplicateUserNameKey"));

            int addAppIndex = CallsAdded;

            MockTasks
            .Setup(x => x.AddUser(build, ItIsVert <User>(vNewUserId), out userAlias))
            .Callback(CheckCallIndex("AddUser"));

            //// Add Member

            MockTasks
            .Setup(x => x.FindDuplicateMember(build, vNewUserId, fabAppId))
            .Callback(CheckCallIndex("FindDuplicateMember"));

            int addMemIndex = CallsAdded;

            MockTasks
            .Setup(x => x.AddMember(build, ItIsVert <Member>(vNewMemId), out memAlias))
            .Callback(CheckCallIndex("AddMember"));

            //// Add Email

            int addEmailIndex = CallsAdded;

            MockTasks
            .Setup(x => x.AddEmail(build, ItIsVert <Email>(vNewEmailId), out emailAlias))
            .Callback(CheckCallIndex("AddEmail"));

            //// Add App edges

            MockTasks
            .Setup(x => x.AddArtifactCreatedByMember(
                       build,
                       ItIsVert <User>(vNewUserId),
                       It.Is <CreateFabUser>(c => c.CreatedByMemberId == vNewMemId),
                       It.Is <IWeaverVarAlias <Artifact> >(a => a.Name == userAlias.Name)
                       ))
            .Callback(CheckCallIndex("AddArtifactCreatedByMember"));

            //// Add Member edges

            MockTasks
            .Setup(x => x.AddMemberDefinedByApp(
                       build,
                       ItIsVert <Member>(vNewMemId),
                       It.Is <CreateFabMember>(c => c.DefinedByAppId == fabAppId),
                       It.Is <IWeaverVarAlias <Member> >(a => a.Name == memAlias.Name)
                       ))
            .Callback(CheckCallIndex("AddMemberDefinedByApp"));

            MockTasks
            .Setup(x => x.AddMemberDefinedByUser(
                       build,
                       ItIsVert <Member>(vNewMemId),
                       It.Is <CreateFabMember>(c => c.DefinedByUserId == vNewUserId),
                       It.Is <IWeaverVarAlias <Member> >(a => a.Name == memAlias.Name)
                       ))
            .Callback(CheckCallIndex("AddMemberDefinedByUser"));

            //// Add Email edges

            MockTasks
            .Setup(x => x.AddEmailUsedByArtifact(
                       build,
                       ItIsVert <Email>(vNewEmailId),
                       It.Is <CreateFabEmail>(c => c.UsedByArtifactId == vNewUserId),
                       It.Is <IWeaverVarAlias <Email> >(a => a.Name == emailAlias.Name)
                       ))
            .Callback(CheckCallIndex("AddEmailUsedByArtifact"));

            //// Finish setup

            MockBuild
            .Setup(x => x.CommitAndCloseSession())
            .Callback(CheckCallIndex("CommitAndCloseSession"));

            MockAcc.Setup(x => x.Execute(typeof(CreateUserAccountOperation).Name))
            .Returns(MockRes.Object);

            MockRes.Setup(x => x.GetCommandIndexByCmdId(vUserCmd)).Returns(addAppIndex);
            MockRes.Setup(x => x.GetCommandIndexByCmdId(vMemCmd)).Returns(addMemIndex);
            MockRes.Setup(x => x.GetCommandIndexByCmdId(vEmailCmd)).Returns(addEmailIndex);

            MockRes.Setup(x => x.ToElementAt <User>(addAppIndex, 0)).Returns(expectUser);
            MockRes.Setup(x => x.ToElementAt <Member>(addMemIndex, 0)).Returns(expectMem);
            MockRes.Setup(x => x.ToElementAt <Email>(addEmailIndex, 0)).Returns(expectEmail);

            //// Execute

            var op = new CreateUserAccountOperation();

            CreateUserAccountOperation.Result result = op.Execute(MockOpCtx.Object, build, tasks,
                                                                  email, username, password);

            Assert.NotNull(result, "Result should be filled.");
            Assert.AreEqual(CreateUserAccountOperation.ResultStatus.Success, result.Status,
                            "Incorrect Status");
            Assert.AreEqual(expectUser, result.NewUser, "Incorrect NewApp.");
            Assert.AreEqual(expectMem, result.NewMember, "Incorrect NewMember.");
            Assert.AreEqual(expectEmail, result.NewEmail, "Incorrect NewEmail.");
        }
Пример #7
0
        public void Success()
        {
            CreateUserAccountOperation.Result result = ExecuteOperation();

            Assert.AreEqual(CreateUserAccountOperation.ResultStatus.Success, result.Status,
                            "Incorrect Status.");

            XCreateOperation.CheckNewVertex(result.NewUser, VertexType.Id.User);
            XCreateOperation.CheckNewVertex(result.NewMember, VertexType.Id.Member);
            XCreateOperation.CheckNewVertex(result.NewEmail, VertexType.Id.Email);

            Assert.AreEqual(vUsername, result.NewUser.Name, "Incorrect NewUser.Name.");
            Assert.AreEqual((byte)MemberType.Id.Member, result.NewMember.MemberType,
                            "Incorrect NewMember.MemberType.");
            Assert.AreEqual(vEmail, result.NewEmail.Address, "Incorrect NewEmail.Address.");

            NewVertexCount = 3;
            NewEdgeCount   = 8;

            const WeaverStepHasOp  eq = WeaverStepHasOp.EqualTo;
            IWeaverStepAs <User>   userAlias;
            IWeaverStepAs <Member> memAlias;
            IWeaverStepAs <Member> creMemAlias;
            IWeaverStepAs <App>    appAlias;
            IWeaverStepAs <Email>  emailAlias;

            //Confirm new User and three edges
            IWeaverQuery verifyUser = Weave.Inst.Graph
                                      .V.ExactIndex <User>(x => x.VertexId, result.NewUser.VertexId)
                                      .As(out userAlias)
                                      .DefinesMembers
                                      .Has(x => x.AppId, eq, (long)SetupAppId.FabSys)
                                      .Has(x => x.MemberType, eq, (byte)MemberType.Id.Member)
                                      .Has(x => x.Timestamp, eq, result.NewMember.Timestamp)
                                      .ToMember
                                      .Has(x => x.VertexId, eq, result.NewMember.VertexId)
                                      .Back(userAlias)
                                      .CreatedByMember.ToMember
                                      .Has(x => x.VertexId, eq, result.NewMember.VertexId)
                                      .Back(userAlias)
                                      .UsesEmails.ToEmail
                                      .Has(x => x.Address, eq, vEmail)
                                      .Back(userAlias)
                                      .ToQuery();

            //Confirm new Member and two edges
            IWeaverQuery verifyMem = Weave.Inst.Graph
                                     .V.ExactIndex <Member>(x => x.VertexId, result.NewMember.VertexId)
                                     .As(out memAlias)
                                     .DefinedByApp.ToApp
                                     .Has(x => x.VertexId, eq, (long)SetupAppId.FabSys)
                                     .Back(memAlias)
                                     .DefinedByUser.ToUser
                                     .Has(x => x.VertexId, eq, result.NewUser.VertexId)
                                     .Back(memAlias)
                                     .ToQuery();

            //Confirm creator Member and one new edge
            IWeaverQuery verifyCreatorMem = Weave.Inst.Graph
                                            .V.ExactIndex <Member>(x => x.VertexId, result.NewMember.VertexId)
                                            .As(out creMemAlias)
                                            .CreatesArtifacts
                                            .Has(x => x.VertexType, eq, (byte)VertexType.Id.User)
                                            .Has(x => x.Timestamp, eq, result.NewUser.Timestamp)
                                            .ToArtifact
                                            .Has(x => x.VertexId, eq, result.NewUser.VertexId)
                                            .Back(creMemAlias)
                                            .ToQuery();

            //Confirm new Member's App and one new edge
            IWeaverQuery verifyCreatorUser = Weave.Inst.Graph
                                             .V.ExactIndex <App>(x => x.VertexId, (long)SetupAppId.FabSys)
                                             .As(out appAlias)
                                             .DefinesMembers
                                             .Has(x => x.UserId, eq, result.NewUser.VertexId)
                                             .Has(x => x.MemberType, eq, (byte)MemberType.Id.Member)
                                             .Has(x => x.Timestamp, eq, result.NewMember.Timestamp)
                                             .ToMember
                                             .Has(x => x.VertexId, eq, result.NewMember.VertexId)
                                             .Back(appAlias)
                                             .ToQuery();

            //Confirm new Email and one edge
            IWeaverQuery verifyEmail = Weave.Inst.Graph
                                       .V.ExactIndex <Email>(x => x.VertexId, result.NewEmail.VertexId)
                                       .As(out emailAlias)
                                       .UsedByArtifact.ToArtifact
                                       .Has(x => x.VertexId, eq, result.NewUser.VertexId)
                                       .Back(emailAlias)
                                       .ToQuery();

            VerificationQueryFunc = () => {
                IDataResult dr = OpCtx.ExecuteForTest(verifyUser, "CreateUserAccountOperation-VerifyU");
                Assert.AreEqual(1, dr.GetCommandResultCount(), "New User not verified.");

                dr = OpCtx.ExecuteForTest(verifyMem, "CreateUserAccountOperation-VerifyM");
                Assert.AreEqual(1, dr.GetCommandResultCount(), "New Member not verified.");

                dr = OpCtx.ExecuteForTest(verifyCreatorMem, "CreateUserAccountOperation-VerifyCM");
                Assert.AreEqual(1, dr.GetCommandResultCount(), "Creator Member not verified.");

                dr = OpCtx.ExecuteForTest(verifyCreatorUser, "CreateUserAccountOperation-VerifyCU");
                Assert.AreEqual(1, dr.GetCommandResultCount(), "Creator User not verified.");

                dr = OpCtx.ExecuteForTest(verifyEmail, "CreateUserAccountOperation-VerifyE");
                Assert.AreEqual(1, dr.GetCommandResultCount(), "New Email not verified.");
            };
        }