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

Reply via email to