Ejemplo n.º 1
0
        public void Dispose_causeAchievedRolesDisposition()
        {
            // arrange:
            FakeRole roleToReturn = GeneratePartialMock <FakeRole>();

            roleToReturn.Expect(r => r.Dispose()).Repeat.Once();
            FakeWorkingSession fakeSession = GeneratePartialMock <FakeWorkingSession>();
            IPrincipal         owner       = fakeSession.Owner;

            fakeSession.Expect(s => s.CallIsAllowed <IFakeRole>()).Return(true).Repeat.Once();
            FakeRoleBuilder <IFakeRole, FakeRole> roleBuilder = GeneratePartialMock <FakeRoleBuilder <IFakeRole, FakeRole> >();

            roleBuilder.Expect(b => b.CallCreateRoleFor(owner)).Return(roleToReturn).Repeat.Once();
            fakeSession.Expect(s => s.CallGetRoleBuilder <IFakeRole>()).Return(roleBuilder).Repeat.Once();
            IFakeRole achievedRole = null;

            fakeSession.Achieve <IFakeRole>(out achievedRole);
            fakeSession.Expect(s => s.CallBeforeDispose()).Repeat.Once();
            IWorkingSession session = fakeSession;
            IFakeRole       roleRef = null;

            // act:
            fakeSession.Dispose();

            // assert:
            Assert.Throws <ObjectDisposedException>(delegate { session.CanAchieve <IFakeRole>(); });
            Assert.Throws <ObjectDisposedException>(delegate { session.Achieve <IFakeRole>(out roleRef); });
            Assert.IsNull(roleRef);
            Assert.Throws <ObjectDisposedException>(delegate { session.Leave <IFakeRole>(ref roleRef); });
        }
Ejemplo n.º 2
0
        public void Build_withoutPrincipal_callTemplateMethod()
        {
            // arrange:
            IPrincipal player = null;
            FakeRole   role   = MockRepository.GeneratePartialMock <FakeRole>();
            FakeRoleBuilder <IFakeRole, FakeRole> builder = MockRepository.GeneratePartialMock <FakeRoleBuilder <IFakeRole, FakeRole> >();

            builder.Expect(b => b.CallCreateRoleFor(player)).Return(role).Repeat.Once();

            // act:
            IFakeRole returnedRole = builder.Build(player);

            // assert:
            Assert.AreSame(role, returnedRole);
        }
Ejemplo n.º 3
0
        public void Serialize_works()
        {
            // arrange:
            RoleBase role    = new FakeRole();
            RoleRef  roleRef = new RoleRef(role);
            int      numRef  = 100;

            for (int i = 0; i < numRef; ++i)
            {
                roleRef.Increase();
            }

            // act:
            Stream stream = TestUtilities.Serialize(roleRef);

            // assert:
            Assert.IsNotNull(stream);
        }
Ejemplo n.º 4
0
        public void Achieve_newAllowedRole_delegateToRoleBuilder()
        {
            // arrange:
            FakeRole           roleToReturn = new FakeRole();
            FakeWorkingSession session      = GeneratePartialMock <FakeWorkingSession>();
            IPrincipal         owner        = session.Owner;

            session.Expect(s => s.CallIsAllowed <IFakeRole>()).Return(true).Repeat.Once();
            FakeRoleBuilder <IFakeRole, FakeRole> roleBuilder = GeneratePartialMock <FakeRoleBuilder <IFakeRole, FakeRole> >();

            roleBuilder.Expect(b => b.CallCreateRoleFor(owner)).Return(roleToReturn).Repeat.Once();
            session.Expect(s => s.CallGetRoleBuilder <IFakeRole>()).Return(roleBuilder).Repeat.Once();
            IFakeRole achievedRole = null;

            // act:
            session.Achieve <IFakeRole>(out achievedRole);

            // assert:
            Assert.AreSame(roleToReturn, achievedRole);
        }
Ejemplo n.º 5
0
        public void Deserialize_works()
        {
            // arrange:
            RoleBase role    = new FakeRole();
            RoleRef  roleRef = new RoleRef(role);
            int      numRef  = 100;

            for (int i = 0; i < numRef; ++i)
            {
                roleRef.Increase();
            }
            Stream stream = TestUtilities.Serialize(roleRef);

            // act:
            RoleRef deserialized = TestUtilities.Deserialize <RoleRef>(stream);
            int     nextRef      = deserialized.Increase();

            // assert:
            Assert.AreEqual(numRef + 1, nextRef);
        }
Ejemplo n.º 6
0
        public void CanAchieve_anAlreadyAchievedRole_dontCallIsAllowedTemplateMethod()
        {
            // arrange:
            FakeRole           roleToReturn = new FakeRole();
            FakeWorkingSession session      = GeneratePartialMock <FakeWorkingSession>();
            IPrincipal         owner        = session.Owner;

            session.Expect(s => s.CallIsAllowed <IFakeRole>()).Return(true).Repeat.Once();
            FakeRoleBuilder <IFakeRole, FakeRole> roleBuilder = GeneratePartialMock <FakeRoleBuilder <IFakeRole, FakeRole> >();

            roleBuilder.Expect(b => b.CallCreateRoleFor(owner)).Return(roleToReturn).Repeat.Once();
            session.Expect(s => s.CallGetRoleBuilder <IFakeRole>()).Return(roleBuilder).Repeat.Once();
            IFakeRole achievedRole1 = null;

            session.Achieve <IFakeRole>(out achievedRole1);

            // act:
            bool canAchieve = session.CanAchieve <IFakeRole>();

            // assert:
            Assert.IsTrue(canAchieve);
        }
Ejemplo n.º 7
0
        public void Leave_withRoleAchievedManyTimes_disposeRoleOnlyOnce(int times)
        {
            // arrange:
            FakeRole roleToReturn = GeneratePartialMock <FakeRole>();

            roleToReturn.Expect(r => r.Dispose()).Repeat.Once();                                                        // Dispose expected only once.
            FakeWorkingSession session = GeneratePartialMock <FakeWorkingSession>();
            IPrincipal         owner   = session.Owner;

            session.Expect(s => s.CallIsAllowed <IFakeRole>()).Return(true).Repeat.Once();
            FakeRoleBuilder <IFakeRole, FakeRole> roleBuilder = GeneratePartialMock <FakeRoleBuilder <IFakeRole, FakeRole> >();

            roleBuilder.Expect(b => b.CallCreateRoleFor(owner)).Return(roleToReturn).Repeat.Once();
            session.Expect(s => s.CallGetRoleBuilder <IFakeRole>()).Return(roleBuilder).Repeat.Once();
            IFakeRole achievedRole = null;

            for (int i = 0; i < times; ++i)
            {
                IFakeRole achievedRoleI = null;
                session.Achieve <IFakeRole>(out achievedRoleI);
                if (i == 0)
                {
                    achievedRole = achievedRoleI;
                }
                else
                {
                    Assert.AreSame(achievedRole, achievedRoleI);
                }
            }

            // assert:
            for (int i = 0; i < times; ++i)
            {
                IFakeRole achievedRoleI2 = achievedRole;
                session.Leave <IFakeRole>(ref achievedRoleI2);
                Assert.IsNull(achievedRoleI2);
            }
        }
Ejemplo n.º 8
0
        public void Leave_withUnknownRoleReference_throwsArgumentException()
        {
            // arrange:
            IFakeRole          unknownInstance = new FakeRole();
            FakeRole           roleToReturn    = GeneratePartialMock <FakeRole>();
            FakeWorkingSession session         = GeneratePartialMock <FakeWorkingSession>();
            IPrincipal         owner           = session.Owner;

            session.Expect(s => s.CallIsAllowed <IFakeRole>()).Return(true).Repeat.Once();
            FakeRoleBuilder <IFakeRole, FakeRole> roleBuilder = GeneratePartialMock <FakeRoleBuilder <IFakeRole, FakeRole> >();

            roleBuilder.Expect(b => b.CallCreateRoleFor(owner)).Return(roleToReturn).Repeat.Once();
            session.Expect(s => s.CallGetRoleBuilder <IFakeRole>()).Return(roleBuilder).Repeat.Once();
            IFakeRole achievedRole1 = null;

            session.Achieve <IFakeRole>(out achievedRole1);

            // assert:
            Assert.Throws <ArgumentException>(delegate {
                session.Leave <IFakeRole>(ref unknownInstance);
            });
            Assert.IsNotNull(unknownInstance);
        }
Ejemplo n.º 9
0
        public void Leave_withAchievedRole_disposeRole()
        {
            // arrange:
            FakeRole roleToReturn = GeneratePartialMock <FakeRole>();

            roleToReturn.Expect(r => r.Dispose()).Repeat.Once();
            FakeWorkingSession session = GeneratePartialMock <FakeWorkingSession>();
            IPrincipal         owner   = session.Owner;

            session.Expect(s => s.CallIsAllowed <IFakeRole>()).Return(true).Repeat.Once();
            FakeRoleBuilder <IFakeRole, FakeRole> roleBuilder = GeneratePartialMock <FakeRoleBuilder <IFakeRole, FakeRole> >();

            roleBuilder.Expect(b => b.CallCreateRoleFor(owner)).Return(roleToReturn).Repeat.Once();
            session.Expect(s => s.CallGetRoleBuilder <IFakeRole>()).Return(roleBuilder).Repeat.Once();
            IFakeRole achievedRole1 = null;

            session.Achieve <IFakeRole>(out achievedRole1);

            // act:
            session.Leave <IFakeRole>(ref achievedRole1);

            // assert:
            Assert.IsNull(achievedRole1);
        }
Ejemplo n.º 10
0
        public FakeMembershipStore()
        {
            var adminRole = new FakeRole
            {
                RoleId   = 1,
                RoleName = "Admin"
            };
            var adminUser = new FakeUser
            {
                UserId    = 1,
                Account   = "admin",
                IsAdmin   = true,
                Password  = CryptoKit.MD5ThenHashPassword("1234"),
                RoleNames = new string[] { adminRole.RoleName }
            };

            UpsertRole(adminRole);
            UpsertUser(adminUser);

            var mangerRole = new FakeRole
            {
                RoleId      = 2,
                RoleName    = "Manager",
                Permissoins = new AccessPermission
                {
                    { FakeResources.ProductMaintain, new string[] { AuthAction.Create.Id, AuthAction.Read.Id, AuthAction.Update.Id, AuthAction.Approve.Id } },
                    { FakeResources.OrderQuery, new string[] { AuthAction.Read.Id } },
                }
            };

            var mangerUser = new FakeUser
            {
                UserId    = 2,
                Account   = "managerA",
                Password  = CryptoKit.MD5ThenHashPassword("1234"),
                RoleNames = new string[] { mangerRole.RoleName }
            };

            UpsertRole(mangerRole);
            UpsertUser(mangerUser);


            var staffRole = new FakeRole
            {
                RoleId      = 2,
                RoleName    = "Staff",
                Permissoins = new AccessPermission
                {
                    { FakeResources.ProductMaintain, new string[] { AuthAction.Create.Id, AuthAction.Read.Id, AuthAction.Update.Id } },
                }
            };

            var staffUser = new FakeUser
            {
                UserId    = 3,
                Account   = "staffA",
                Password  = CryptoKit.MD5ThenHashPassword("1234"),
                RoleNames = new string[] { staffRole.RoleName }
            };

            UpsertRole(staffRole);
            UpsertUser(staffUser);
        }