コード例 #1
0
        public void PropertiesTest()
        {
            const string Title = "Test Title";
            const string Description = "Test Description";
            const string FileName = "TestReport.trdx";
            const ReportVisibility Visibility = ReportVisibility.Detail;

            var report = new CustomReportDefinition(
                Title,
                Description,
                FileName,
                Visibility,
                new[]
                    {
                        new CustomReportSecurityConfiguration(100, 200), new CustomReportSecurityConfiguration(10, Constants.AllBusinessUnitsId),
                        new CustomReportSecurityConfiguration(Constants.AllRolesId, 20)
                    });

            Assert.AreEqual(Title, report.Title);
            Assert.AreEqual(Description, report.Description);
            Assert.AreEqual(FileName, report.FileName);
            Assert.IsTrue(report.IsVisibleOnDetail);
            Assert.IsFalse(report.IsVisibleOnSearch);
            Assert.AreEqual(3, report.SecurityConfigurations.Count);
            Assert.IsTrue(report.SecurityConfigurations.Any(sc => sc.RoleId == 100 && sc.BusinessUnitId == 200));
            Assert.IsTrue(report.SecurityConfigurations.Any(sc => sc.RoleId == 10 && sc.BusinessUnitId == Constants.AllBusinessUnitsId));
            Assert.IsTrue(report.SecurityConfigurations.Any(sc => sc.RoleId == Constants.AllRolesId && sc.BusinessUnitId == 20));
        }
コード例 #2
0
        public void VisibilityTest()
        {
            var searchReport = new CustomReportDefinition("test", "test", "test", ReportVisibility.Search, Enumerable.Empty<CustomReportSecurityConfiguration>());
            var detailReport = new CustomReportDefinition("test", "test", "test", ReportVisibility.Detail, Enumerable.Empty<CustomReportSecurityConfiguration>());
            var searchAndDetailReport = new CustomReportDefinition("test", "test", "test", ReportVisibility.Both, Enumerable.Empty<CustomReportSecurityConfiguration>());

            Assert.IsTrue(searchReport.IsVisibleOnSearch);
            Assert.IsFalse(searchReport.IsVisibleOnDetail);
            Assert.IsFalse(detailReport.IsVisibleOnSearch);
            Assert.IsTrue(detailReport.IsVisibleOnDetail);
            Assert.IsTrue(searchAndDetailReport.IsVisibleOnSearch);
            Assert.IsTrue(searchAndDetailReport.IsVisibleOnDetail);
        }
コード例 #3
0
        public void UnauthenticatedUsersCannotViewReports()
        {
            var report = new CustomReportDefinition("test", "test", "test", ReportVisibility.Both, new[] { new CustomReportSecurityConfiguration(Constants.AllRolesId, Constants.AllBusinessUnitsId) });

            var identity1 = Mock.Create<IMQ1Identity>();
            Mock.Arrange(() => identity1.IsAuthenticated).Returns(false);
            Mock.Arrange(() => identity1.IsAdmin).Returns(false);

            var identity2 = Mock.Create<IMQ1Identity>();
            Mock.Arrange(() => identity2.IsAuthenticated).Returns(true);
            Mock.Arrange(() => identity2.IsAdmin).Returns(false);

            Csla.ApplicationContext.User = new UnauthenticatedPrincipal();

            Assert.IsFalse(report.CanView());

            Csla.ApplicationContext.User = new GenericPrincipal(identity1, new string[] { });

            Assert.IsFalse(report.CanView());

            Csla.ApplicationContext.User = new GenericPrincipal(identity2, new string[] { });

            Assert.IsTrue(report.CanView());
        }
コード例 #4
0
        public void PermissionsTest()
        {
            var report = new CustomReportDefinition(
                "test",
                "test",
                "test",
                ReportVisibility.Both,
                new[]
                    {
                        new CustomReportSecurityConfiguration(Constants.AllRolesId, 1), new CustomReportSecurityConfiguration(2, Constants.AllBusinessUnitsId),
                        new CustomReportSecurityConfiguration(5, 4)
                    });

            var identity1 = Mock.Create<IMQ1Identity>();
            Mock.Arrange(() => identity1.IsAuthenticated).Returns(true);
            Mock.Arrange(() => identity1.IsAdmin).Returns(false);
            Mock.Arrange(() => identity1.RolesId).Returns(new List<int> { 10 });
            Mock.Arrange(() => identity1.BusinessUnitId).Returns(1);

            var identity2 = Mock.Create<IMQ1Identity>();
            Mock.Arrange(() => identity2.IsAuthenticated).Returns(true);
            Mock.Arrange(() => identity2.IsAdmin).Returns(false);
            Mock.Arrange(() => identity2.RolesId).Returns(new List<int> { 2 });
            Mock.Arrange(() => identity2.BusinessUnitId).Returns(20);

            var identity3 = Mock.Create<IMQ1Identity>();
            Mock.Arrange(() => identity3.IsAuthenticated).Returns(true);
            Mock.Arrange(() => identity3.IsAdmin).Returns(false);
            Mock.Arrange(() => identity3.RolesId).Returns(new List<int> { 3, 5 });
            Mock.Arrange(() => identity3.BusinessUnitId).Returns(4);

            var identity4 = Mock.Create<IMQ1Identity>();
            Mock.Arrange(() => identity4.IsAuthenticated).Returns(true);
            Mock.Arrange(() => identity4.IsAdmin).Returns(false);
            Mock.Arrange(() => identity4.RolesId).Returns(new List<int> { 10 });
            Mock.Arrange(() => identity4.BusinessUnitId).Returns(10);

            Csla.ApplicationContext.User = new GenericPrincipal(identity1, new string[] { });
            Assert.IsTrue(report.CanView());

            Csla.ApplicationContext.User = new GenericPrincipal(identity2, new string[] { });
            Assert.IsTrue(report.CanView());

            Csla.ApplicationContext.User = new GenericPrincipal(identity3, new string[] { });
            Assert.IsTrue(report.CanView());

            Csla.ApplicationContext.User = new GenericPrincipal(identity4, new string[] { });
            Assert.IsFalse(report.CanView());
        }
コード例 #5
0
        public void AdminUserCanViewAllReports()
        {
            var report = new CustomReportDefinition("test", "test", "test", ReportVisibility.Both, new[] { new CustomReportSecurityConfiguration(1, 1) });

            var identity = Mock.Create<IMQ1Identity>();
            Mock.Arrange(() => identity.IsAuthenticated).Returns(true);
            Mock.Arrange(() => identity.IsAdmin).Returns(true);
            Mock.Arrange(() => identity.RolesId).Returns(new List<int> { 10 });
            Mock.Arrange(() => identity.BusinessUnitId).Returns(10);

            Csla.ApplicationContext.User = new GenericPrincipal(identity, new string[] { });
            Assert.IsTrue(report.CanView());
        }