From 4563f00852e9a393b28bd98925b14bbbf699e8ae Mon Sep 17 00:00:00 2001
From: Teravus Ovares (Dan Olivares)
Date: Fri, 30 Oct 2009 17:27:44 -0400
Subject: * Another ACL Test

---
 OpenSim/Framework/Tests/ACLTest.cs | 59 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 58 insertions(+), 1 deletion(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Framework/Tests/ACLTest.cs b/OpenSim/Framework/Tests/ACLTest.cs
index 2428b64..d11f307 100644
--- a/OpenSim/Framework/Tests/ACLTest.cs
+++ b/OpenSim/Framework/Tests/ACLTest.cs
@@ -1,5 +1,6 @@
 using System;
 using NUnit.Framework;
+using System.Collections.Generic;
 
 
 namespace OpenSim.Framework.Tests
@@ -32,8 +33,64 @@ namespace OpenSim.Framework.Tests
 
             acl.GrantPermission("Guests", "CanBuild");
 
-            acl.HasPermission("JoeGuest", "CanBuild");
+            Permission perm = acl.HasPermission("JoeGuest", "CanBuild");
+            Assert.That(perm == Permission.Allow, "JoeGuest should have permission to build");
+            perm = Permission.None;
+            try
+            {
+                perm = acl.HasPermission("unknownGuest", "CanBuild");
+                
+            }
+            catch (KeyNotFoundException)
+            {
+                
+               
+            }
+            catch (Exception)
+            {
+                Assert.That(false,"Exception thrown should have been KeyNotFoundException");
+            }
+            Assert.That(perm == Permission.None,"Permission None should be set because exception should have been thrown");
+            
+        }
+
+        [Test]
+        public void KnownButPermissionDenyAndPermissionNoneUserTest()
+        {
+            ACL acl = new ACL();
+
+            Role Guests = new Role("Guests");
+            acl.AddRole(Guests);
+            Role Administrators = new Role("Administrators");
+            acl.AddRole(Administrators);
+            Role[] Guestparents = new Role[1];
+            Role[] Adminparents = new Role[1];
+
+            Guestparents[0] = Guests;
+            Adminparents[0] = Administrators;
+
+            Role JoeGuest = new Role("JoeGuest", Guestparents);
+            acl.AddRole(JoeGuest);
+
+            Resource CanBuild = new Resource("CanBuild");
+            acl.AddResource(CanBuild);
+
+            Resource CanScript = new Resource("CanScript");
+            acl.AddResource(CanScript);
+
+            Resource CanRestart = new Resource("CanRestart");
+            acl.AddResource(CanRestart);
+
+            acl.GrantPermission("Guests", "CanBuild");
+            acl.DenyPermission("Guests", "CanRestart");
+
+            acl.GrantPermission("Administrators", "CanScript");
 
+            acl.GrantPermission("Administrators", "CanRestart");
+            Permission setPermission = acl.HasPermission("JoeGuest", "CanRestart");
+            Assert.That(setPermission == Permission.Deny, "Guests Should not be able to restart");
+            Assert.That(acl.HasPermission("JoeGuest", "CanScript") == Permission.None,
+                        "No Explicit Permissions set so should be Permission.None");
         }
 
         #endregion
-- 
cgit v1.1