Beispiel #1
0
        public void AclWithNoAssociatedStatesHtmlTest()
        {
            using (CultureScope_de_DE())
            {
                var users = ListObjectMother.New(User);

                // Create an ACL with no states
                var orderClassDefinition = TestHelper.CreateOrderClassDefinition();
                var acl = TestHelper.CreateStatefulAcl(orderClassDefinition, new StateDefinition[0]);

                TestHelper.AttachAces(acl, Ace);

                // Assert that the ACL ctually contains no states (note: this is not the same as an ACL being a stateless ACL).
                var stateDefinitions = acl.StateCombinations.SelectMany(x => x.GetStates());
                Assert.That(stateDefinitions.Any(), Is.False);

                var acls = ListObjectMother.New <AccessControlList> (acl);

                List <AclExpansionEntry> aclExpansion = GetAclExpansionEntryList(users, acls, false);

                using (var textWriter = new StringWriter())
                {
                    const string aclWithNoAssociatedStatesHtmlText = "No sports... - I mean states";
                    var          aclExpansionHtmlWriter            = new AclExpansionHtmlWriter(textWriter, true, new AclExpansionHtmlWriterSettings());
                    aclExpansionHtmlWriter.Implementation.AclWithNoAssociatedStatesHtmlText = aclWithNoAssociatedStatesHtmlText;
                    aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
                    string result = textWriter.ToString();
                    Assert.That(result, Is.StringContaining("<td>" + aclWithNoAssociatedStatesHtmlText + @"</td>"));
                }
            }
        }
Beispiel #2
0
        public void SortOrderTest()
        {
            var users = ListObjectMother.New(User3);
            var acls  = ListObjectMother.New <AccessControlList> (Acl);

            List <AclExpansionEntry> aclExpansion = GetAclExpansionEntryList(users, acls, false);

            var stringWriter           = new StringWriter();
            var aclExpansionHtmlWriter = new AclExpansionHtmlWriter(stringWriter, true,
                                                                    new AclExpansionHtmlWriterSettings {
                ShortenNames = true
            });

            aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
            string result = stringWriter.ToString();

            // Roles
            const string firstRoleText  = "Anotha Group, Supreme Being";
            const string secondRoleText = "Anotha Group, Working Drone";
            const string thirdRoleText  = "Da 3rd Group, Combatant";

            Assert.That(result, Is.StringContaining(firstRoleText));
            Assert.That(result.IndexOf(firstRoleText), Is.LessThan(result.IndexOf(secondRoleText)));
            Assert.That(result.IndexOf(secondRoleText), Is.LessThan(result.IndexOf(thirdRoleText)));

            Assert.That(result, Is.StringContaining("Dhl, None, Received"));
            Assert.That(result, Is.StringContaining("Delete, FirstAccessType, Read, Write"));
        }
Beispiel #3
0
 public void WriteAclExpansionAsHtmlTest()
 {
     using (new CultureScope("de-AT", "de-AT"))
     {
         var aclExpander            = new AclExpander();
         var aclExpansion           = aclExpander.GetAclExpansionEntryList();
         var stringWriter           = new StringWriter();
         var aclExpansionHtmlWriter = new AclExpansionHtmlWriter(stringWriter, true, new AclExpansionHtmlWriterSettings());
         aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
     }
 }
Beispiel #4
0
        //--------------------------------------------------------------------------------------------------------------------------------
        // Helper Methods
        //--------------------------------------------------------------------------------------------------------------------------------

        private void WriteAclExpansionAsHtmlToStreamWriter(List <AclExpansionEntry> aclExpansion, bool outputRowCount)
        {
            string aclExpansionFileName = Path.Combine(@"c:\temp\AclExpansionTest_", Path.ChangeExtension(StringUtility.GetFileNameTimestampNow(), "html"));

            using (var streamWriter = new StreamWriter(aclExpansionFileName))
            {
                var aclExpansionHtmlWriter = new AclExpansionHtmlWriter(streamWriter, true,
                                                                        new AclExpansionHtmlWriterSettings {
                    OutputRowCount = outputRowCount
                });
                aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
            }
        }
Beispiel #5
0
        public void DontOutputRowCountTest()
        {
            var users = ListObjectMother.New(User);
            var acls  = ListObjectMother.New <AccessControlList> (Acl);

            List <AclExpansionEntry> aclExpansion = GetAclExpansionEntryList(users, acls, false);

            var stringWriter           = new StringWriter();
            var aclExpansionHtmlWriter = new AclExpansionHtmlWriter(stringWriter, true,
                                                                    new AclExpansionHtmlWriterSettings {
                OutputRowCount = false
            });

            aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
            string result = stringWriter.ToString();

            Assert.That(result, Is.Not.StringContaining("(2)"));
        }
Beispiel #6
0
        public void UserSortOrderTest()
        {
            var users = ListObjectMother.New(User, User2, User3);
            var acls  = ListObjectMother.New <AccessControlList> (Acl, Acl2);

            List <AclExpansionEntry> aclExpansion = GetAclExpansionEntryList(users, acls, false);

            var stringWriter           = new StringWriter();
            var aclExpansionHtmlWriter = new AclExpansionHtmlWriter(stringWriter, true,
                                                                    new AclExpansionHtmlWriterSettings {
                ShortenNames = true
            });

            aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
            string result = stringWriter.ToString();

            Assert.That(result, Is.StringContaining("James Ryan"));
            Assert.That(result.IndexOf("James Ryan"), Is.LessThan(result.IndexOf("Smith, Mr.")));
        }
Beispiel #7
0
        public void FullNameTest()
        {
            using (CultureScope.CreateInvariantCultureScope())
            {
                var users = ListObjectMother.New(User);
                var acls  = ListObjectMother.New <AccessControlList> (Acl);

                List <AclExpansionEntry> aclExpansion = GetAclExpansionEntryList(users, acls, false);

                var stringWriter           = new StringWriter();
                var aclExpansionHtmlWriter = new AclExpansionHtmlWriter(stringWriter, true,
                                                                        new AclExpansionHtmlWriterSettings {
                    ShortenNames = false
                });
                aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
                string result = stringWriter.ToString();
                Assert.That(result, Is.StringContaining("Dhl|Remotion.SecurityManager.UnitTests.TestDomain.Delivery, Remotion.SecurityManager.UnitTests"));
                Assert.That(result, Is.StringContaining("Remotion.SecurityManager.UnitTests.TestDomain.Order"));
            }
        }
Beispiel #8
0
        public void AssertTenantHierarchyCondition(Tenant owningTenant, TenantHierarchyCondition tenantHierarchyCondition, string inResultingHtmlString,
                                                   string[] notInResultingHtmlStrings)
        {
            var accessConditions = new AclExpansionAccessConditions {
                OwningTenant = owningTenant, TenantHierarchyCondition = tenantHierarchyCondition
            };
            var aclExpansionEntry = new AclExpansionEntry(User, Role, Acl, accessConditions, new AccessTypeDefinition[0], new AccessTypeDefinition[0]);
            List <AclExpansionEntry> aclExpansion = ListObjectMother.New(aclExpansionEntry);

            var stringWriter           = new StringWriter();
            var aclExpansionHtmlWriter = new AclExpansionHtmlWriter(stringWriter, true, new AclExpansionHtmlWriterSettings());

            aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
            string result = stringWriter.ToString();

            //Clipboard.SetText (result);

            Assert.That(result, Is.StringContaining(inResultingHtmlString));
            foreach (string notInResultingHtml in notInResultingHtmlStrings)
            {
                Assert.That(result, Is.Not.StringContaining(notInResultingHtml));
            }
        }
Beispiel #9
0
        public void StatelessAclTest()
        {
            using (CultureScope_de_DE())
            {
                var users = ListObjectMother.New(User);

                // Create stateless-only ACL
                SecurableClassDefinition classDefinition = TestHelper.CreateOrderClassDefinition();
                var statlessAcl = TestHelper.CreateStatelessAcl(classDefinition);
                TestHelper.AttachAces(statlessAcl, Ace);
                var acls = ListObjectMother.New <AccessControlList> (statlessAcl);
                List <AclExpansionEntry> aclExpansion = GetAclExpansionEntryList(users, acls, false);

                using (var textWriter = new StringWriter())
                {
                    const string stateLessAclStateHtmlText = "@*?stateless state?!?!?";
                    var          aclExpansionHtmlWriter    = new AclExpansionHtmlWriter(textWriter, true, new AclExpansionHtmlWriterSettings());
                    aclExpansionHtmlWriter.Implementation.StatelessAclStateHtmlText = stateLessAclStateHtmlText;
                    aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
                    string result = textWriter.ToString();
                    Assert.That(result, Is.StringContaining("<td>" + stateLessAclStateHtmlText + @"</td>"));
                }
            }
        }
Beispiel #10
0
        public void DeniedRightsTest()
        {
            var aclExpansionEntry = new AclExpansionEntry(
                User, Role, Acl, new AclExpansionAccessConditions(), new[] { DeleteAccessType }, new[] { ReadAccessType, WriteAccessType });
            var aclExpansionEntryList = ListObjectMother.New(aclExpansionEntry);

            using (var textWriter = new StringWriter())
            {
                var aclExpansionWriter = new AclExpansionHtmlWriter(textWriter, true,
                                                                    new AclExpansionHtmlWriterSettings {
                    OutputDeniedRights = true
                });
                aclExpansionWriter.WriteAclExpansion(aclExpansionEntryList);


                string result = textWriter.ToString();
                //Clipboard.SetText (result);

                // Detail tests
                Assert.That(result, Is.StringContaining("Denied Rights</th>"));   // Denied rights header
                Assert.That(result, Is.StringContaining("<td>Delete</td>"));      // allowed rights
                Assert.That(result, Is.StringContaining("<td>Read, Write</td>")); // denied rights

                const string resultExpected =
                    #region
                    @"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"" """">
<html>
  <head>
    <title>re-motion ACL Expansion</title>
    <style>@import ""AclExpansion.css"";</style>
    <meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8"" />
  </head>
  <body>
    <table style=""width: 100%;"" class=""aclExpansionTable"" id=""remotion-ACL-expansion-table"">
      <tr>
        <th class=""header"">User</th>
        <th class=""header"">Role</th>
        <th class=""header"">Class</th>
        <th class=""header"">States</th>
        <th class=""header"">User Must Own</th>
        <th class=""header"">Owning Group Equals</th>
        <th class=""header"">Owning Tenant Equals</th>
        <th class=""header"">User Must Have Abstract Role</th>
        <th class=""header"">Access Rights</th>
        <th class=""header"">Denied Rights</th>
      </tr>
      <tr>
        <td rowspan=""1"">Usa Da, Dr.</td>
        <td rowspan=""1"">Da Group, Supreme Being</td>
        <td rowspan=""1"">Order</td>
        <td>DHL, None, Received</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete</td>
        <td>Read, Write</td>
      </tr>
    </table>
  </body>
</html>";
                #endregion

                // Full test
                Assert.That(result, Is.EqualTo(resultExpected));
            }
        }
Beispiel #11
0
        public void ResultTest()
        {
            using (CultureScope_de_DE())
            {
                var users = ListObjectMother.New(User, User2, User3);
                var acls  = ListObjectMother.New <AccessControlList> (Acl2, Acl);

                List <AclExpansionEntry> aclExpansion = GetAclExpansionEntryList(users, acls, false);

                using (var textWriter = new StringWriter())
                {
                    var aclExpansionHtmlWriter = new AclExpansionHtmlWriter(textWriter, true, new AclExpansionHtmlWriterSettings());
                    aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
                    string result = textWriter.ToString();

                    //Clipboard.SetText (CreateLiteralResultExpectedString(result));

                    const string resultExpected =
                        #region
                        @"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"" """">
<html>
  <head>
    <title>re-motion ACL Expansion</title>
    <style>@import ""AclExpansion.css"";</style>
    <meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8"" />
  </head>
  <body>
    <table style=""width: 100%;"" class=""aclExpansionTable"" id=""remotion-ACL-expansion-table"">
      <tr>
        <th class=""header"">User</th>
        <th class=""header"">Role</th>
        <th class=""header"">Class</th>
        <th class=""header"">States</th>
        <th class=""header"">User Must Own</th>
        <th class=""header"">Owning Group Equals</th>
        <th class=""header"">Owning Tenant Equals</th>
        <th class=""header"">User Must Have Abstract Role</th>
        <th class=""header"">Access Rights</th>
      </tr>
      <tr>
        <td rowspan=""15"">James Ryan</td>
        <td rowspan=""2"">Anotha Group, Supreme Being</td>
        <td rowspan=""2"">Bestellung</td>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
      <tr>
        <td rowspan=""2"">Anotha Group, Working Drone</td>
        <td rowspan=""2"">Bestellung</td>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
      <tr>
        <td rowspan=""3"">Da 3rd Group, Combatant</td>
        <td rowspan=""3"">Bestellung</td>
        <td>Bezahlt, DHL, Erhalten</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Read, Write</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
      <tr>
        <td rowspan=""3"">Da 3rd Group, Combatant</td>
        <td rowspan=""3"">Bestellung</td>
        <td>Bezahlt, DHL, Erhalten</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Read, Write</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
      <tr>
        <td rowspan=""3"">Da Group, Combatant</td>
        <td rowspan=""3"">Bestellung</td>
        <td>Bezahlt, DHL, Erhalten</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Read, Write</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
      <tr>
        <td rowspan=""2"">Da Group, Supreme Being</td>
        <td rowspan=""2"">Bestellung</td>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
      <tr>
        <td rowspan=""8"">Smith, Mr.</td>
        <td rowspan=""2"">Anotha Group, Supreme Being</td>
        <td rowspan=""2"">Bestellung</td>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
      <tr>
        <td rowspan=""2"">Anotha Group, Working Drone</td>
        <td rowspan=""2"">Bestellung</td>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
      <tr>
        <td rowspan=""2"">Da 3rd Group, Working Drone</td>
        <td rowspan=""2"">Bestellung</td>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
      <tr>
        <td rowspan=""2"">Da Group, Working Drone</td>
        <td rowspan=""2"">Bestellung</td>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
      <tr>
        <td rowspan=""2"">Usa Da, Dr.</td>
        <td rowspan=""2"">Da Group, Supreme Being</td>
        <td rowspan=""2"">Bestellung</td>
        <td>DHL, Erhalten, Offen; DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td>Delete, FirstAccessType, Read</td>
      </tr>
      <tr>
        <td>DHL, Erhalten, Offen</td>
        <td></td>
        <td></td>
        <td>Da Tenant</td>
        <td></td>
        <td>Delete, FirstAccessType, Read, Write</td>
      </tr>
    </table>
  </body>
</html>";
                    #endregion

                    Assert.That(result, Is.EqualTo(resultExpected));
                }
            }
        }