You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ps...@apache.org on 2004/09/13 15:17:41 UTC

svn commit: rev 45975 - incubator/directory/naming/trunk/core/src/test/org/apache/naming

Author: psteitz
Date: Mon Sep 13 06:17:41 2004
New Revision: 45975

Added:
   incubator/directory/naming/trunk/core/src/test/org/apache/naming/ContextAccessControllerTest.java
Log:
Initial commit.

Added: incubator/directory/naming/trunk/core/src/test/org/apache/naming/ContextAccessControllerTest.java
==============================================================================
--- (empty file)
+++ incubator/directory/naming/trunk/core/src/test/org/apache/naming/ContextAccessControllerTest.java	Mon Sep 13 06:17:41 2004
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.naming;
+
+import java.util.Hashtable;
+
+import javax.naming.Context;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+import junit.framework.TestCase;
+
+
+/**
+ * Unit tests for  {@link ContextAccessController}.
+ *  
+ * @version $Revision: 1.2 $ $Date: 2003/11/30 05:36:07 $
+ */
+public class ContextAccessControllerTest extends TestCase {
+    
+    public ContextAccessControllerTest(String name) {
+        super(name);
+    }
+
+    public static void main(String[] args) {
+        TestRunner.run(suite());
+    }
+
+    public static Test suite() {
+    	TestSuite suite = new TestSuite(ContextAccessControllerTest.class);
+    	suite.setName("ContextAccessController Tests");
+        return suite;
+    }
+    
+    protected Context testContext = null;
+    protected Context testSubContext = null;
+    protected String testToken1 = "test1";
+    protected String testToken2 = "test2";
+    protected String contextName = "context";
+    protected String subName = "sub";
+    
+    public void setUp() throws Exception {
+        testContext = new SelectorContext(new Hashtable(), true);
+        testSubContext = testContext.createSubcontext("env:comp");
+    }
+    
+    public void tearDown() throws Exception {
+        testContext.destroySubcontext("env:comp");
+        testContext = null;
+    }
+    
+   public void testAccessControl() throws Exception {
+       // no token set, check should return true for any token
+       assertTrue(ContextAccessController.checkSecurityToken(contextName, testToken1));
+       
+       // set token and check access
+       ContextAccessController.setSecurityToken(contextName, testToken1);
+       assertTrue(ContextAccessController.checkSecurityToken(contextName, testToken1));
+       assertFalse(ContextAccessController.checkSecurityToken(contextName, testToken2));      
+      
+       // no token set, return true
+       assertTrue(ContextAccessController.checkSecurityToken(subName, testToken1));
+       
+       // set null token, should have no effect
+       ContextAccessController.setSecurityToken(contextName, null);
+       assertTrue(ContextAccessController.checkSecurityToken(subName, testToken1));
+       
+       // set valid token
+       ContextAccessController.setSecurityToken(subName, testToken2);
+       // parent's token should not work
+       assertFalse(ContextAccessController.checkSecurityToken(subName, testToken1)); 
+       assertTrue(ContextAccessController.checkSecurityToken(subName, testToken2)); 
+       
+       // try to unset using wrong token, should have no effect
+       ContextAccessController.unsetSecurityToken(contextName, testToken2);
+       assertFalse(ContextAccessController.checkSecurityToken(contextName, testToken2));
+       ContextAccessController.unsetSecurityToken(contextName, null);
+       assertFalse(ContextAccessController.checkSecurityToken(contextName, testToken2));
+       
+       // unset token
+       ContextAccessController.unsetSecurityToken(contextName, testToken1);
+       assertTrue(ContextAccessController.checkSecurityToken(contextName, testToken2));
+       assertTrue(ContextAccessController.checkSecurityToken(contextName, null));      
+   }
+   
+   public void testMutationControl() throws Exception {
+       // verify that contexts are writable by default
+       assertTrue(ContextAccessController.isWritable(contextName));
+       assertTrue(ContextAccessController.isWritable(subName));
+       
+       // make context read only without setting token
+       ContextAccessController.setReadOnly(contextName);
+       assertFalse(ContextAccessController.isWritable(contextName));
+       // property is not inherited, however, by subcontext
+       assertTrue(ContextAccessController.isWritable(subName));
+       // can use any token value to make writable
+       ContextAccessController.setWritable(contextName, null);
+       assertTrue(ContextAccessController.isWritable(contextName));
+       
+       // set token, so setWritable will need correct token
+       ContextAccessController.setSecurityToken(contextName, testToken1);
+       ContextAccessController.setReadOnly(contextName);
+       // wrong token will not work
+       ContextAccessController.setWritable(contextName, testToken2);
+       assertFalse(ContextAccessController.isWritable(contextName));
+       // now here's the ticket...
+       ContextAccessController.setWritable(contextName, testToken1);
+       assertTrue(ContextAccessController.isWritable(contextName));
+   }
+    
+}