Esempio n. 1
0
        public void TestLoadItems()
        {
            try {
                EntityType crEntityType = EntityType.GetEntityType(typeof(ComputingResource));
                EntityType psEntityType = EntityType.GetEntityType(typeof(PublishServer));

                //Console.WriteLine("CR EXISTS {0} {1} {2} {3}", crEntityType.DoesItemExist(context, 3), crEntityType.DoesItemExist(context, 1), crEntityType.DoesItemExist(context, "cr-3"), crEntityType.DoesItemExist(context, "cr-1"));
                //Console.WriteLine("PS EXISTS {0} {1} {2} {3}", psEntityType.DoesItemExist(context, 3), psEntityType.DoesItemExist(context, 1), psEntityType.DoesItemExist(context, "ps-3"), psEntityType.DoesItemExist(context, "ps-1"));

                //Console.WriteLine(crEntityType.GetQuery(context, null, 1, null, false, EntityAccessLevel.Permission));
                //Console.WriteLine(psEntityType.GetQuery(context, null, 1, null, false, EntityAccessLevel.Permission));

                ComputingResource cr1;

                context.AccessLevel = EntityAccessLevel.Privilege;

                Console.WriteLine("Privilege-based: user 'domain-1_cr_viewer+changer' (can view, cannot delete)");
                cr1        = new GenericComputingResource(context);
                cr1.UserId = user11.Id;
                cr1.Load("cr-1");
                Assert.IsTrue(cr1.CanView);
                Assert.IsTrue(cr1.CanChange);
                Assert.IsFalse(cr1.CanDelete);

                Console.WriteLine("Privilege-based: user 'domain-1_cr_viewer+changer' (can view, can delete)");
                cr1.UserId = user12.Id;
                cr1.Load("cr-1");
                Assert.IsTrue(cr1.CanView);
                Assert.IsTrue(cr1.CanChange);
                Assert.IsTrue(cr1.CanDelete);
            } catch (Exception e) {
                Console.WriteLine("{0} - {1}", e.Message, e.StackTrace);
                throw;
            }
        }
Esempio n. 2
0
        public void _CreateData()
        {
            try {
                if (rebuildData)
                {
                    context.AccessLevel = EntityAccessLevel.Administrator;

                    domain1            = new Domain(context);
                    domain1.Identifier = "domain-1";
                    domain1.Name       = "domain-1";
                    domain1.Store();

                    domain2            = new Domain(context);
                    domain2.Identifier = "domain-2";
                    domain2.Name       = "domain-2";
                    domain2.Store();

                    user0            = new User(context);
                    user0.Identifier = "user-0";
                    user0.Store();

                    user11            = new User(context);
                    user11.Identifier = "domain-1_cr_viewer+changer";
                    user11.Store();

                    user12            = new User(context);
                    user12.Identifier = "domain-1_cr_viewer+changer+deleter";
                    user12.Store();

                    user21            = new User(context);
                    user21.Identifier = "global_cr_deleter";
                    user21.Store();

                    group1            = new Group(context);
                    group1.Identifier = "domain-1_cr_viewers+changers";
                    group1.Store();
                    group1.AssignUsers(new int[] { user11.Id, user12.Id });

                    group2            = new Group(context);
                    group2.Identifier = "global_cr_deleters";
                    group2.Store();
                    group2.AssignUsers(new int[] { user21.Id });

                    user31            = new User(context);
                    user31.Identifier = "global_service_admin";
                    user31.Store();

                    role1            = new Role(context);
                    role1.Identifier = "cr_view+change";
                    role1.Store();
                    role1.IncludePrivileges(Privilege.Get(EntityType.GetEntityType(typeof(ComputingResource)), new EntityOperationType[] { EntityOperationType.Search, EntityOperationType.View, EntityOperationType.Change }));
                    role1.GrantToGroups(new int[] { group1.Id }, domain1.Id);

                    role2            = new Role(context);
                    role2.Identifier = "cr_delete";
                    role2.Store();
                    role2.IncludePrivilege(Privilege.Get(EntityType.GetEntityType(typeof(ComputingResource)), EntityOperationType.Delete));
                    role2.GrantToUsers(new int[] { user12.Id }, domain1.Id);
                    role2.GrantToGroups(new int[] { group2.Id }, 0);

                    role3            = new Role(context);
                    role3.Identifier = "service_all";
                    role3.Store();
                    role3.IncludePrivileges(Privilege.Get(EntityType.GetEntityType(typeof(Service))));
                    role3.GrantToUsers(new int[] { user31.Id }, 0);

                    ComputingResource cr1 = new GenericComputingResource(context);
                    cr1.Identifier = "cr-1";
                    cr1.Name       = "cr-1";
                    cr1.Domain     = domain1;
                    cr1.Store();
                    cr1.GrantPermissionsToUsers(new int[] { user12.Id });

                    PublishServer ps1 = new PublishServer(context);
                    ps1.Identifier = "ps-1";
                    ps1.Name       = "ps-1";
                    ps1.Hostname   = "mytest.host";
                    ps1.Domain     = domain1;
                    ps1.Protocol   = "http";
                    ps1.Store();

                    seriesShareDomain            = new Domain(context);
                    seriesShareDomain.Identifier = "series-share";
                    seriesShareDomain.Name       = "series-share";
                    seriesShareDomain.Store();

                    shareCreator            = new User(context);
                    shareCreator.Identifier = "share-creator";
                    shareCreator.Store();
                    shareReceiver            = new User(context);
                    shareReceiver.Identifier = "share-receiver";
                    shareReceiver.Store();

                    context.StartImpersonation(shareCreator.Id);
                    sharedSeries            = new Series(context);
                    sharedSeries.Identifier = "shared-series";
                    sharedSeries.Store();
                    sharedSeries.GrantPermissionsToUsers(new int[] { shareReceiver.Id });
                    unsharedSeries            = new Series(context);
                    unsharedSeries.Domain     = seriesShareDomain;
                    unsharedSeries.Identifier = "unshared-series";
                    unsharedSeries.Store();
                    context.EndImpersonation();

                    seriesShareRole            = new Role(context);
                    seriesShareRole.Identifier = "series_all";
                    seriesShareRole.Store();
                    seriesShareRole.IncludePrivileges(Privilege.Get(EntityType.GetEntityType(typeof(Series))));
                    seriesShareRole.GrantToUsers(new int[] { shareCreator.Id }, seriesShareDomain.Id);

                    context.AccessLevel = EntityAccessLevel.Permission;
                }
                else
                {
                    domain1 = Domain.GetInstance(context);
                    domain1.Load("domain-1");
                    domain2 = Domain.GetInstance(context);
                    domain2.Load("domain-2");
                    group1 = Group.FromIdentifier(context, "domain-1_cr_viewers+changers");
                    group2 = Group.FromIdentifier(context, "global_cr_deleters");
                    user0  = User.FromUsername(context, "user-0");
                    user11 = User.FromUsername(context, "domain-1_cr_viewer+changer");
                    user12 = User.FromUsername(context, "domain-1_cr_viewer+changer+deleter");
                    user21 = User.FromUsername(context, "global_cr_deleter");
                    user31 = User.FromUsername(context, "global_service_admin");
                    role1  = Role.GetInstance(context);
                    role1.Load("cr_view+change");
                    role2 = Role.GetInstance(context);
                    role2.Load("cr_delete");
                    role2 = Role.GetInstance(context);
                    role2.Load("service_all");
                }
            } catch (Exception e) {
                Console.WriteLine("{0} - {1}", e.Message, e.StackTrace);
                throw;
            }
        }