You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by sm...@apache.org on 2006/11/08 13:19:47 UTC

svn commit: r472464 - in /incubator/harmony/enhanced/classlib/trunk/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/login: LoginContext2Test.java LoginContextTest.java

Author: smishura
Date: Wed Nov  8 04:19:47 2006
New Revision: 472464

URL: http://svn.apache.org/viewvc?view=rev&rev=472464
Log:
Move test case test_login_resourcesLeakage: LoginContext2Test -> LoginContextTest

Removed:
    incubator/harmony/enhanced/classlib/trunk/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/login/LoginContext2Test.java
Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/login/LoginContextTest.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/login/LoginContextTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/login/LoginContextTest.java?view=diff&rev=472464&r1=472463&r2=472464
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/login/LoginContextTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/auth/src/test/java/common/org/apache/harmony/auth/tests/javax/security/auth/login/LoginContextTest.java Wed Nov  8 04:19:47 2006
@@ -25,6 +25,7 @@
 import java.io.File;
 import java.security.Security;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Map;
 import java.util.Properties;
@@ -36,6 +37,7 @@
 import javax.security.auth.login.Configuration;
 import javax.security.auth.login.LoginContext;
 import javax.security.auth.login.LoginException;
+import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag;
 import javax.security.auth.spi.LoginModule;
 
 import junit.framework.TestCase;
@@ -803,6 +805,68 @@
                 fail("No expected SecurityException");
             } catch (SecurityException e) {
             }
+        }
+    }
+    /**
+     * @tests javax.security.auth.login.LoginContext.login()
+     */
+    public void test_login_resourcesLeakage() throws Exception {
+
+        // This is a compatibility test.
+        // The test verifies that LoginContext allows to invoke login() method
+        // multiple times without invoking logout() before. In testing scenario
+        // each login() invocation adds new credentials to the passed subject.
+        Configuration.setConfiguration(new Configuration() {
+
+            @Override
+            public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
+                return new AppConfigurationEntry[] { new AppConfigurationEntry(
+                        MyModule.class.getName(),
+                        LoginModuleControlFlag.REQUIRED,
+                        new HashMap<String, Object>()) };
+            }
+
+            @Override
+            public void refresh() {
+            }
+        });
+
+        LoginContext context = new LoginContext("moduleName", new Subject());
+
+        context.login();
+        context.login();
+
+        Subject subject = context.getSubject();
+
+        assertEquals(2, subject.getPrivateCredentials().size());
+        assertEquals(2, subject.getPublicCredentials().size());
+    }
+
+    public static class MyModule implements LoginModule {
+
+        Subject sub;
+
+        public boolean abort() throws LoginException {
+            return false;
+        }
+
+        public boolean commit() throws LoginException {
+            sub.getPrivateCredentials().add(new Object());
+            return true;
+        }
+
+        public void initialize(Subject arg0, CallbackHandler arg1,
+                Map<String, ?> arg2, Map<String, ?> arg3) {
+            sub = arg0;
+        }
+
+        public boolean login() throws LoginException {
+            sub.getPublicCredentials().add(new Object());
+            return true;
+        }
+
+        public boolean logout() throws LoginException {
+            return false;
         }
     }