User: starksm
Date: 01/03/28 18:30:34
Modified: src/main/org/jboss/test LoginModulesTest.java
Log:
Updates tests to include all sample login modules
Revision Changes Path
1.2 +133 -6 jbosssx/src/main/org/jboss/test/LoginModulesTest.java
Index: LoginModulesTest.java
===================================================================
RCS file: /cvsroot/jboss/jbosssx/src/main/org/jboss/test/LoginModulesTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LoginModulesTest.java 2001/03/22 09:40:03 1.1
+++ LoginModulesTest.java 2001/03/29 02:30:34 1.2
@@ -7,21 +7,26 @@
package org.jboss.test;
import java.lang.reflect.Method;
+import java.io.Serializable;
import java.security.Principal;
import java.security.acl.Group;
+import java.sql.DriverManager;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Set;
-import java.util.Vector;
+import java.util.Properties;
+import javax.naming.InitialContext;
import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.login.AppConfigurationEntry;
import javax.security.auth.login.Configuration;
import javax.security.auth.login.LoginContext;
+import javax.sql.DataSource;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import org.jboss.security.SimpleGroup;
import org.jboss.security.SimplePrincipal;
import org.jboss.security.plugins.UsernamePasswordHandler;
import org.jboss.security.plugins.samples.UsernamePasswordLoginModule;
@@ -29,7 +34,7 @@
/** Tests of the sample LoginModule classes.
@author [EMAIL PROTECTED]
-@version $Revision: 1.1 $
+@version $Revision: 1.2 $
*/
public class LoginModulesTest extends TestCase
{
@@ -96,6 +101,26 @@
AppConfigurationEntry[] entry = {ace};
return entry;
}
+ AppConfigurationEntry[] testJdbc()
+ {
+ String name =
"org.jboss.security.plugins.samples.DatabaseServerLoginModule";
+ HashMap options = new HashMap();
+ options.put("dsJndiName", "testJdbc");
+ options.put("principalsQuery", "select Password from Principals where
PrincipalID=?");
+ options.put("rolesQuery", "select Role, RoleGroup from Roles where
PrincipalID=?");
+ AppConfigurationEntry ace = new AppConfigurationEntry(name,
+ AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, options);
+ AppConfigurationEntry[] entry = {ace};
+ return entry;
+ }
+ AppConfigurationEntry[] testSimple()
+ {
+ String name =
"org.jboss.security.plugins.samples.SimpleServerLoginModule";
+ AppConfigurationEntry ace = new AppConfigurationEntry(name,
+ AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, new
HashMap());
+ AppConfigurationEntry[] entry = {ace};
+ return entry;
+ }
AppConfigurationEntry[] testUsernamePassword()
{
return other();
@@ -110,18 +135,47 @@
}
public static class TestLoginModule extends UsernamePasswordLoginModule
{
- protected Enumeration getUsersRoles()
+ protected Group[] getRoleSets()
{
- Vector tmp = new Vector();
- tmp.add("TestRole");
- tmp.add("Role2");
- return tmp.elements();
+ SimpleGroup roles = new SimpleGroup("Roles");
+ Group[] roleSets = {roles};
+ roles.addMember(new SimplePrincipal("TestRole"));
+ roles.addMember(new SimplePrincipal("Role2"));
+ return roleSets;
}
protected String getUsersPassword()
{
return "secret";
}
}
+ static class TestDS implements DataSource, Serializable
+ {
+ public java.sql.Connection getConnection() throws java.sql.SQLException
+ {
+ String url =
"jdbc:idb=/usr/local/src/cvsroot/jBoss/jboss/dist/conf/default/instantdb.properties";
+ java.sql.Connection con = DriverManager.getConnection(url);
+ return con;
+ }
+ public java.sql.Connection getConnection(String user, String pass) throws
java.sql.SQLException
+ {
+ return getConnection();
+ }
+ public java.io.PrintWriter getLogWriter() throws java.sql.SQLException
+ {
+ return null;
+ }
+ public void setLogWriter(java.io.PrintWriter out)
+ throws java.sql.SQLException
+ {
+ }
+ public int getLoginTimeout() throws java.sql.SQLException
+ {
+ return 0;
+ }
+ public void setLoginTimeout(int seconds) throws java.sql.SQLException
+ {
+ }
+ }
public LoginModulesTest(String testName)
{
@@ -160,6 +214,22 @@
lc.logout();
}
+ public void testSimple() throws Exception
+ {
+ System.out.println("testSimple");
+ UsernamePasswordHandler handler = new UsernamePasswordHandler("jduke",
"jduke".toCharArray());
+ LoginContext lc = new LoginContext("testSimple", handler);
+ lc.login();
+ Subject subject = lc.getSubject();
+ Set groups = subject.getPrincipals(Group.class);
+ assert("Principals contains jduke", subject.getPrincipals().contains(new
SimplePrincipal("jduke")));
+ assert("Principals contains Roles", groups.contains(new
SimplePrincipal("Roles")));
+ Group roles = (Group) groups.iterator().next();
+ assert("user is a role", roles.isMember(new SimplePrincipal("user")));
+ assert("guest is a role", roles.isMember(new SimplePrincipal("guest")));
+
+ lc.logout();
+ }
public void testLdap() throws Exception
{
System.out.println("testLdap");
@@ -173,6 +243,63 @@
Group roles = (Group) groups.iterator().next();
assert("ProjectUser is a role", roles.isMember(new
SimplePrincipal("ProjectUser")));
assert("TheDuke is a role", roles.isMember(new SimplePrincipal("TheDuke")));
+
+ lc.logout();
+ }
+ /** Use this InstantDB script to setup tables:
+ ; First load the JDBC driver and open a database.
+ d org.enhydra.instantdb.jdbc.idbDriver;
+ o
jdbc:idb=/usr/local/src/cvsroot/jBoss/jboss/dist/conf/default/instantdb.properties;
+
+ ; Create the Principal table
+ e DROP TABLE Principals ;
+ e CREATE TABLE Principals (
+ PrincipalID VARCHAR(64) PRIMARY KEY,
+ Password VARCHAR(64) );
+
+ ; put some initial data in the table
+ e INSERT INTO Principals VALUES ("scott", "echoman");
+ e INSERT INTO Principals VALUES ("stark", "javaman");
+
+ ; Create the Roles table
+ e DROP TABLE Roles;
+ e CREATE TABLE Roles (
+ PrincipalID VARCHAR(64) PRIMARY KEY,
+ Role VARCHAR(64),
+ RoleGroup VARCHAR(64) );
+
+ ; put some initial data in the table
+ e INSERT INTO Roles VALUES ("scott", "Echo", "");
+ e INSERT INTO Roles VALUES ("scott", "caller_scott", "CallerPrincipal");
+ e INSERT INTO Roles VALUES ("stark", "Java", "");
+ e INSERT INTO Roles VALUES ("stark", "Coder", "");
+ e INSERT INTO Roles VALUES ("stark", "caller_stark", "CallerPrincipal");
+
+ c close;
+
+ */
+ public void testJdbc() throws Exception
+ {
+ System.out.println("testJdbc");
+ Class.forName ("org.enhydra.instantdb.jdbc.idbDriver");
+ DataSource ds = new TestDS();
+ Properties env = new Properties();
+ org.jnp.server.Main naming = new org.jnp.server.Main();
+ naming.start();
+ System.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
+ System.setProperty("java.naming.provider.url", "localhost");
+ InitialContext ctx = new InitialContext(System.getProperties());
+ ctx.bind("testJdbc", ds);
+ UsernamePasswordHandler handler = new UsernamePasswordHandler("stark",
"javaman".toCharArray());
+ LoginContext lc = new LoginContext("testJdbc", handler);
+ lc.login();
+ Subject subject = lc.getSubject();
+ Set groups = subject.getPrincipals(Group.class);
+ assert("Principals contains stark", subject.getPrincipals().contains(new
SimplePrincipal("stark")));
+ assert("Principals contains Roles", groups.contains(new
SimplePrincipal("Roles")));
+ Group roles = (Group) groups.iterator().next();
+ assert("Java is a role", roles.isMember(new SimplePrincipal("Java")));
+ assert("Coder is a role", roles.isMember(new SimplePrincipal("Coder")));
lc.logout();
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development