Example #1
0
        public void UsesSecurityFreeSectionToAccessTenantOfUser()
        {
            ISecurityContext userSecurityContext;
            ISecurityContext tenantSecurityContext;

            using (ClientTransaction.CreateRootTransaction().EnterDiscardingScope())
            {
                var user = _userHandle.GetObject();
                userSecurityContext   = ((ISecurityContextFactory)user).CreateSecurityContext();
                tenantSecurityContext = ((ISecurityContextFactory)user.Tenant).CreateSecurityContext();
            }

            var securityProviderStub = MockRepository.GenerateStub <ISecurityProvider>();

            securityProviderStub.Stub(stub => stub.IsNull).Return(false);
            securityProviderStub
            .Stub(_ => _.GetAccess(Arg.Is(userSecurityContext), Arg <ISecurityPrincipal> .Is.Anything))
            .Throw(new AssertionException("GetAccess should not have been called."));
            securityProviderStub
            .Stub(_ => _.GetAccess(Arg.Is(tenantSecurityContext), Arg <ISecurityPrincipal> .Is.Anything))
            .Return(new AccessType[0]);

            var serviceLocator = DefaultServiceLocator.Create();

            serviceLocator.RegisterSingle(() => securityProviderStub);
            serviceLocator.RegisterSingle <IPrincipalProvider> (() => new NullPrincipalProvider());
            using (new ServiceLocatorScope(serviceLocator))
            {
                SecurityManagerPrincipal principal = new SecurityManagerPrincipal(_rootTenantHandle, _userHandle, null);

                Assert.That(principal.GetTenants(true), Is.Empty);
            }
        }
Example #2
0
        public void ExcludeAbstractTenants()
        {
            SecurityManagerPrincipal principal = new SecurityManagerPrincipal(_rootTenantHandle, _userHandle, null);

            Assert.That(
                principal.GetTenants(false).Select(t => t.ID), Is.EqualTo(new[] { _rootTenantHandle.ObjectID, _grandChildTenantHandle.ObjectID }));
        }
Example #3
0
        public void SerializesCache()
        {
            var deserialized = Serializer.SerializeAndDeserialize(Tuple.Create(_principal, _principal.Tenant));
            SecurityManagerPrincipal deserialziedSecurityManagerPrincipal = deserialized.Item1;
            TenantProxy deserialziedTenant = deserialized.Item2;

            Assert.That(deserialziedSecurityManagerPrincipal.Tenant, Is.SameAs(deserialziedTenant));
        }
Example #4
0
        public void SerializesCache()
        {
            var deserialized = Serializer.SerializeAndDeserialize(Tuple.Create(_principal, _principal.Substitution));
            SecurityManagerPrincipal deserialziedSecurityManagerPrincipal = deserialized.Item1;
            SubstitutionProxy        deserialziedSubstitution             = deserialized.Item2;

            Assert.That(deserialziedSecurityManagerPrincipal.Substitution, Is.SameAs(deserialziedSubstitution));
        }
Example #5
0
        public void SerializesCache()
        {
            var deserialized = Serializer.SerializeAndDeserialize(Tuple.Create(_principal, _principal.GetSecurityPrincipal()));
            SecurityManagerPrincipal deserialziedSecurityManagerPrincipal = deserialized.Item1;
            ISecurityPrincipal       deserialziedSecurityPrincipal        = deserialized.Item2;

            Assert.That(deserialziedSecurityManagerPrincipal.GetSecurityPrincipal(), Is.SameAs(deserialziedSecurityPrincipal));
        }
Example #6
0
        public void GetTenantHierarchyFromUser()
        {
            SecurityManagerPrincipal principal = new SecurityManagerPrincipal(_childTenantHandle, _userHandle, null);

            Assert.That(
                principal.GetTenants(true).Select(t => t.ID),
                Is.EqualTo(new[] { _rootTenantHandle.ObjectID, _childTenantHandle.ObjectID, _grandChildTenantHandle.ObjectID }));
        }
Example #7
0
        public override void SetUp()
        {
            base.SetUp();
            SecurityManagerPrincipal.Current = SecurityManagerPrincipal.Null;
            ClientTransaction.CreateRootTransaction().EnterDiscardingScope();

            _user   = User.FindByUserName("substituting.user");
            _tenant = _user.Tenant;

            _principal = CreateSecurityManagerPrincipal(_tenant, _user, null);
        }
Example #8
0
        public void Initialize_SetsMembers()
        {
            User         user         = User.FindByUserName("substituting.user");
            Tenant       tenant       = user.Tenant;
            Substitution substitution = user.GetActiveSubstitutions().First();

            SecurityManagerPrincipal principal = CreateSecurityManagerPrincipal(tenant, user, substitution);

            Assert.That(principal.Tenant.ID, Is.EqualTo(tenant.ID));
            Assert.That(principal.Tenant, Is.Not.SameAs(tenant));

            Assert.That(principal.User.ID, Is.EqualTo(user.ID));
            Assert.That(principal.User, Is.Not.SameAs(user));

            Assert.That(principal.Substitution.ID, Is.EqualTo(substitution.ID));
            Assert.That(principal.Substitution, Is.Not.SameAs(substitution));
        }
Example #9
0
        public void ExcludeInactiveSubstitutions()
        {
            SecurityManagerPrincipal principal = new SecurityManagerPrincipal(_tenantHandle, _userHandle, null);

            Assert.That(principal.GetActiveSubstitutions().Select(s => s.ID), Is.EquivalentTo(_substitutionIDs));
        }