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>")); } } }
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")); }
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); } }
//-------------------------------------------------------------------------------------------------------------------------------- // 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); } }
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)")); }
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."))); }
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")); } }
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)); } }
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>")); } } }
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)); } }
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)); } } }