Esempio n. 1
0
        public void SelfServeReportGrant( )
        {
            IAccessRuleFactory       accessRuleFactory;
            IAccessRuleReportFactory accessRuleReportFactory;
            Subject  selfServeRole;
            Solution coreDataSolution;

            accessRuleReportFactory = new AccessRuleDisplayReportFactory( );
            accessRuleFactory       = new AccessRuleFactory( );
            using (DatabaseContext databaseContext = DatabaseContext.GetContext(true))
                using (new SecurityBypassContext( ))
                {
                    selfServeRole    = Entity.Get <Subject>("core:selfServeRole", true);
                    coreDataSolution = CodeNameResolver.GetInstance("ReadiNow Core Data", "Application").As <Solution>( );

                    // Allow the test to be rerun by re-enabling the allow all Administrators access rule
                    //EnableAdministratorAccessAllRule( );

                    // Create access rules
                    //DeleteAccessRules( ReportTypeNames, SelfServeCreateAccessRuleNameTemplate );
                    CreateAccessRules(
                        accessRuleFactory,
                        accessRuleReportFactory,
                        selfServeRole,
                        SelfServeTypeNames,
                        new [] { Permissions.Create },
                        "core:createSelfServeComponentsAccessRule",
                        coreDataSolution);

                    // Disable the "allow all" administrator access rule
                    //DisableAdministratorAccessAllRule( );

                    databaseContext.CommitTransaction( );
                }
        }
        public void Test_CopyReport_CorrectNameWhenTypeLacksName()
        {
            SecurableEntity entityType;
            Report          report;

            entityType = new EntityType().As <SecurableEntity>();
            report     = new AccessRuleDisplayReportFactory().GetDisplayReportForSecurableEntity(entityType);

            Assert.That(report, Has.Property("Name").EqualTo(AccessRuleDisplayReportFactory.DefaultReportName));
            Assert.That(report, Has.Property("Description").EqualTo(string.Empty));
        }
Esempio n. 3
0
        public void HobbleAdministratorsRole()
        {
            IAccessRuleFactory       accessRuleFactory;
            IAccessRuleReportFactory accessRuleReportFactory;
            Subject administratorsRole;

            accessRuleReportFactory = new AccessRuleDisplayReportFactory();
            accessRuleFactory       = new AccessRuleFactory();
            using (DatabaseContext databaseContext = DatabaseContext.GetContext(true))
                using (new SecurityBypassContext())
                {
                    administratorsRole = Entity.Get <Subject>("core:administratorRole", true);

                    // Allow the test to be rerun by re-enabling the allow all Administrators access rule
                    EnableAdministratorAccessAllRule();

                    // Create full control access rules
                    DeleteAccessRules(FullControlTypeNames, AdministratorsFullControlAccessRuleNameTemplate);
                    CreateAccessRules(
                        accessRuleFactory,
                        accessRuleReportFactory,
                        administratorsRole,
                        FullControlTypeNames,
                        new[] { Permissions.Create, Permissions.Read, Permissions.Modify, Permissions.Delete },
                        AdministratorsFullControlAccessRuleNameTemplate);

                    // Create read modify access rules
                    DeleteAccessRules(ReadModifyTypeNames, AdministratorsReadModifyAccessRuleNameTemplate);
                    CreateAccessRules(
                        accessRuleFactory,
                        accessRuleReportFactory,
                        administratorsRole,
                        ReadModifyTypeNames,
                        new[] { Permissions.Read, Permissions.Modify },
                        AdministratorsReadModifyAccessRuleNameTemplate);

                    // Create read only access rules
                    DeleteAccessRules(ReadOnlyTypeNames, AdministratorsReadOnlyAccessRuleNameTemplate);
                    CreateAccessRules(
                        accessRuleFactory,
                        accessRuleReportFactory,
                        administratorsRole,
                        ReadOnlyTypeNames,
                        new[] { Permissions.Read },
                        AdministratorsReadOnlyAccessRuleNameTemplate);

                    // Disable the "allow all" administrator access rule
                    DisableAdministratorAccessAllRule();

                    databaseContext.CommitTransaction();
                }
        }
        public void Test_CopyReport_CorrectEntityType()
        {
            SecurableEntity entityType;
            Report          report;

            entityType = Entity.Get <SecurableEntity>("core:report");
            report     = new AccessRuleDisplayReportFactory().GetDisplayReportForSecurableEntity(entityType);

            Assert.That(report.RootNode.As <ResourceReportNode>(),
                        Has.Property("ResourceReportNodeType").Property("Alias").EqualTo(entityType.Alias));
            Assert.That(report,
                        Has.Property("ReportUsesDefinition").Property("Alias").EqualTo(entityType.Alias));
        }
Esempio n. 5
0
        public void AddMissingAccessRules()
        {
            IAccessRuleFactory       accessRuleFactory;
            IAccessRuleReportFactory accessRuleReportFactory;
            Subject  administratorsRole;
            Subject  everyoneRole;
            Solution coreDataSolution;

            accessRuleReportFactory = new AccessRuleDisplayReportFactory();
            accessRuleFactory       = new AccessRuleFactory();
            using (DatabaseContext databaseContext = DatabaseContext.GetContext(true))
                using (new SecurityBypassContext())
                {
                    administratorsRole = Entity.Get <Subject>("core:administratorRole", true);
                    everyoneRole       = Entity.Get <Subject>("core:everyoneRole", true);
                    coreDataSolution   = CodeNameResolver.GetInstance("ReadiNow Core Data", "Application").As <Solution>();

                    Console.WriteLine("Create access rule in solution {0}", coreDataSolution.Id);

                    CreateAccessRules(
                        accessRuleFactory,
                        accessRuleReportFactory,
                        administratorsRole,
                        new [] { "core:importConfig" },
                        new [] { Permissions.Create, Permissions.Read, Permissions.Modify, Permissions.Delete },
                        AdministratorsFullControlAccessRuleNameTemplate,
                        coreDataSolution);

                    CreateAccessRules(
                        accessRuleFactory,
                        accessRuleReportFactory,
                        administratorsRole,
                        new [] { "core:importRun" },
                        new [] { Permissions.Read, Permissions.Modify },
                        AdministratorsReadModifyAccessRuleNameTemplate,
                        coreDataSolution);

                    //var types = new[] { "core:board", "core:boardDimension" };
                    //DeleteAccessRules(types, EveryoneReadModifyControlAccessRuleNameTemplate);
                    //CreateAccessRules(
                    //    accessRuleFactory,
                    //    accessRuleReportFactory,
                    //    everyoneRole,
                    //    types,
                    //    new[] { Permissions.Create, Permissions.Read, Permissions.Modify },
                    //    EveryoneReadModifyControlAccessRuleNameTemplate,
                    //    coreDataSolution);

                    databaseContext.CommitTransaction();
                }
        }
        public void Test_CopyReport_CorrectNameDescriptionAndColumnNames()
        {
            SecurableEntity entityType;
            Report          report;

            entityType = Entity.Get <SecurableEntity>("core:report");
            report     = new AccessRuleDisplayReportFactory().GetDisplayReportForSecurableEntity(entityType);

            Assert.That(report, Has.Property("Name").EqualTo(entityType.Name));
            Assert.That(report, Has.Property("Description").EqualTo(string.Empty));
            Assert.That(report.ReportColumns.Select(rc => rc.Name),
                        Is.EquivalentTo(new [] { "Id", entityType.Name, "Description" }),
                        "Incorrect column names");
        }
        public void Test_CopyReport_NoResourceKeyViolation()
        {
            SecurableEntity          entityType;
            IAccessRuleReportFactory accessRuleReportFactory;

            entityType = Entity.Get <EntityType>("core:report").As <SecurableEntity>();

            accessRuleReportFactory = new AccessRuleDisplayReportFactory();
            Assert.That(() => accessRuleReportFactory.GetDisplayReportForSecurableEntity(entityType),
                        Throws.Nothing);
            Assert.That(() => accessRuleReportFactory.GetDisplayReportForSecurableEntity(entityType),
                        Throws.Nothing);
            Assert.That(() => accessRuleReportFactory.GetDisplayReportForSecurableEntity(entityType),
                        Throws.Nothing);
        }
        public void Test_GetDisplayReportForSecurableEntity_EnsureDifferent()
        {
            EntityType entityType;
            IAccessRuleReportFactory accessRuleReportFactory;
            Report report1;
            Report report2;

            entityType = new EntityType();
            entityType.Save();

            accessRuleReportFactory = new AccessRuleDisplayReportFactory();
            report1 = accessRuleReportFactory.GetDisplayReportForSecurableEntity(entityType.As <SecurableEntity>());
            report2 = accessRuleReportFactory.GetDisplayReportForSecurableEntity(entityType.As <SecurableEntity>());

            Assert.That(report1, Has.Property("Id").Not.EqualTo(report2.Id));
        }
        public void Test_GetDisplayReportForSecurableEntity_ValidSecurityQuery()
        {
            EntityType entityType;
            IAccessRuleReportFactory accessRuleReportFactory;
            Report          report;
            StructuredQuery reportStructuredQuery;

            entityType = new EntityType();
            entityType.Save();

            accessRuleReportFactory = new AccessRuleDisplayReportFactory();
            report = accessRuleReportFactory.GetDisplayReportForSecurableEntity(entityType.As <SecurableEntity>());
            reportStructuredQuery = ReportToQueryConverter.Instance.Convert(report);

            Assert.That(reportStructuredQuery, Has.Property("SelectColumns").Count.EqualTo(reportStructuredQuery.SelectColumns.Count),
                        "Select column mismatch");
            Assert.That(reportStructuredQuery.SelectColumns.Any(sc => sc.Expression is IdExpression),
                        Is.EqualTo(reportStructuredQuery.SelectColumns.Any(sc => sc.Expression is IdExpression)), "Id Expression mismatch");
        }