コード例 #1
0
        public void EqualsObject_WithEqual()
        {
            SecurityContext left  = SecurityContext.CreateStateless(typeof(SecurableObject));
            SecurityContext right = SecurityContext.CreateStateless(typeof(SecurableObject));

            Assert.That(left.Equals((object)right), Is.True);
        }
コード例 #2
0
        public void HasAccess_WithoutRequiredAccessTypesMatchingAllowedAccessTypes_ReturnsFalse()
        {
            _securityProviderMock
            .Expect(_ => _.GetAccess(SecurityContext.CreateStateless(_securableType), _principalStub))
            .Return(
                new[]
            {
                AccessType.Get(GeneralAccessTypes.Delete),
                AccessType.Get(GeneralAccessTypes.Read)
            });

            bool hasAccess = _strategy.HasAccess(
                _securableType,
                _securityProviderMock,
                _principalStub,
                new[]
            {
                AccessType.Get(GeneralAccessTypes.Create),
                AccessType.Get(GeneralAccessTypes.Delete),
                AccessType.Get(GeneralAccessTypes.Read)
            });

            Assert.That(hasAccess, Is.EqualTo(false));
            _securityProviderMock.VerifyAllExpectations();
        }
コード例 #3
0
        public void Equals_WithStatefulAndStateless()
        {
            SecurityContext left  = SecurityContext.CreateStateless(typeof(File));
            SecurityContext right = SecurityContext.Create(typeof(File), null, null, null, new Dictionary <string, Enum>(), new Enum[0]);

            Assert.That(left.Equals(right), Is.False);
            Assert.That(right.Equals(left), Is.False);
        }
コード例 #4
0
        public void Test_WithSubtransaction_ViaDomainObjectQuery_EventIsExecutedInRoot()
        {
            _testHelper.AddExtension(_extension);
            _testHelper.ExpectSecurityProviderGetAccess(SecurityContext.CreateStateless(typeof(SecurableObject)), GeneralAccessTypes.Find);
            _testHelper.ReplayAll();

            _testHelper.Transaction.QueryManager.GetCollection(_testHelper.CreateSecurableObjectQuery());

            _testHelper.VerifyAll();
        }
コード例 #5
0
        public void HasAccess_WithRequiredAccessTypesEmpty_ThrowsArgumentException()
        {
            _securityProviderMock
            .Expect(_ => _.GetAccess(SecurityContext.CreateStateless(_securableType), _principalStub))
            .Return(
                new[]
            {
                AccessType.Get(GeneralAccessTypes.Read)
            });

            Assert.That(
                () => _strategy.HasAccess(_securableType, _securityProviderMock, _principalStub, new AccessType[0]),
                Throws.ArgumentException.With.Message.EqualTo("Parameter 'requiredAccessTypes' cannot be empty.\r\nParameter name: requiredAccessTypes"));
        }
コード例 #6
0
        public void HasAccess_WithAllowedAccessTypesAreNull_ThrowsInvalidOperationException()
        {
            _securityProviderMock
            .Expect(_ => _.GetAccess(SecurityContext.CreateStateless(_securableType), _principalStub))
            .Return(null);

            Assert.That(
                () => _strategy.HasAccess(
                    _securableType,
                    _securityProviderMock,
                    _principalStub,
                    new[] { AccessType.Get(GeneralAccessTypes.Find) }),
                Throws.InvalidOperationException.With.Message.EqualTo("GetAccess evaluated and returned null."));

            _securityProviderMock.VerifyAllExpectations();
        }
コード例 #7
0
        public void HasAccess_StaticMethod()
        {
            var securityContext            = SecurityContext.CreateStateless(typeof(SecurableObject));
            var securityContextFactoryStub = MockRepository.GenerateStub <ISecurityContextFactory>();

            securityContextFactoryStub.Stub(mock => mock.CreateSecurityContext()).Return(securityContext);
            _securityProviderStub
            .Stub(mock => mock.GetAccess(securityContext, _securityPrincipalStub))
            .Return(new[] { AccessType.Get(GeneralAccessTypes.Read) });

            var securityClient = new SecurityClient(
                _securityProviderStub,
                new PermissionReflector(),
                _principalProviderStub,
                new FunctionalSecurityStrategy(),
                new ReflectionBasedMemberResolver());

            var methodInfo = typeof(SecurableObject).GetMethod("IsValid", new[] { typeof(SecurableObject) });

            var hasMethodAccess = securityClient.HasStaticMethodAccess(typeof(SecurableObject), methodInfo);

            Assert.That(hasMethodAccess, Is.True);
        }
コード例 #8
0
 private SecurityContext CreateContext <TClass>()
     where TClass : ISecurableObject
 {
     return(SecurityContext.CreateStateless(typeof(TClass)));
 }
コード例 #9
0
 private SecurityContext CreateStatelessTestSecurityContext()
 {
     return(SecurityContext.CreateStateless(typeof(File)));
 }
コード例 #10
0
        public void EqualsObject_WithObject()
        {
            SecurityContext context = SecurityContext.CreateStateless(typeof(SecurableObject));

            Assert.That(context.Equals(new object()), Is.False);
        }
コード例 #11
0
        public void Equals_WithSame()
        {
            SecurityContext context = SecurityContext.CreateStateless(typeof(File));

            Assert.That(context.Equals(context), Is.True);
        }
コード例 #12
0
        public void Equals_WithNull()
        {
            SecurityContext context = SecurityContext.CreateStateless(typeof(SecurableObject));

            Assert.That(context.Equals(null), Is.False);
        }
コード例 #13
0
 ISecurityContext ISecurityContextFactory.CreateSecurityContext()
 {
     return(SecurityContext.CreateStateless(GetPublicDomainObjectType()));
 }