User: starksm 
  Date: 01/05/30 05:26:10

  Modified:    src/main/org/jboss/test LoginModulesTest.java
  Added:       src/main/org/jboss/test UsersRolesLoginModuleTest.java
                        roles.properties tst-policy.xml tst.policy
                        users.properties
  Log:
  Update the test suite for the latest changes
  
  Revision  Changes    Path
  1.6       +179 -15   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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LoginModulesTest.java     2001/04/13 20:04:54     1.5
  +++ LoginModulesTest.java     2001/05/30 12:26:10     1.6
  @@ -7,16 +7,21 @@
   package org.jboss.test;
   
   import java.lang.reflect.Method;
  +import java.io.File;
   import java.io.Serializable;
   import java.security.Principal;
   import java.security.acl.Group;
  +import java.sql.Connection;
   import java.sql.DriverManager;
  +import java.sql.SQLException;
  +import java.sql.Statement;
   import java.util.Enumeration;
   import java.util.HashMap;
   import java.util.Iterator;
   import java.util.Set;
   import java.util.Properties;
   import javax.naming.InitialContext;
  +import javax.naming.NameAlreadyBoundException;
   import javax.security.auth.Subject;
   import javax.security.auth.callback.CallbackHandler;
   import javax.security.auth.login.AppConfigurationEntry;
  @@ -32,10 +37,10 @@
   import org.jboss.security.auth.callback.UsernamePasswordHandler;
   import org.jboss.security.auth.spi.UsernamePasswordLoginModule;
   
  -/** Tests of the sample LoginModule classes.
  +/** Tests of the LoginModule classes.
   
   @author [EMAIL PROTECTED]
  -@version $Revision: 1.5 $
  +@version $Revision: 1.6 $
   */
   public class LoginModulesTest extends TestCase
   {
  @@ -76,7 +81,7 @@
           }
           AppConfigurationEntry[] testLdap()
           {
  -            String name = "org.jboss.security.plugins.samples.LdapLoginModule";
  +            String name = "org.jboss.security.auth.spi.LdapLoginModule";
               HashMap options = new HashMap();
               options.put("java.naming.factory.initial", 
"com.sun.jndi.ldap.LdapCtxFactory");
               options.put("java.naming.provider.url", "ldap://siren-int/";);
  @@ -91,9 +96,10 @@
               AppConfigurationEntry[] entry = {ace};
               return entry;
           }
  +
           AppConfigurationEntry[] testIdentity()
           {
  -            String name = "org.jboss.security.plugins.samples.IdentityLoginModule";
  +            String name = "org.jboss.security.auth.spi.IdentityLoginModule";
               HashMap options = new HashMap();
               options.put("principal", "stark");
               options.put("roles", "Role3,Role4");
  @@ -104,7 +110,7 @@
           }
           AppConfigurationEntry[] testShared()
           {
  -            String name0 = "org.jboss.security.plugins.samples.IdentityLoginModule";
  +            String name0 = "org.jboss.security.auth.spi.IdentityLoginModule";
               String name1 = "org.jboss.security.plugins.samples.RolesLoginModule";
               HashMap options = new HashMap();
               options.put("principal", "stark");
  @@ -118,7 +124,7 @@
           }
           AppConfigurationEntry[] testJdbc()
           {
  -            String name = 
"org.jboss.security.plugins.samples.DatabaseServerLoginModule";
  +            String name = "org.jboss.security.auth.spi.DatabaseServerLoginModule";
               HashMap options = new HashMap();
               options.put("dsJndiName", "testJdbc");
               options.put("principalsQuery", "select Password from Principals where 
PrincipalID=?");
  @@ -130,7 +136,7 @@
           }
           AppConfigurationEntry[] testSimple()
           {
  -            String name = 
"org.jboss.security.plugins.samples.SimpleServerLoginModule";
  +            String name = "org.jboss.security.auth.spi.SimpleServerLoginModule";
               AppConfigurationEntry ace = new AppConfigurationEntry(name,
                   AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, new 
HashMap());
               AppConfigurationEntry[] entry = {ace};
  @@ -148,6 +154,14 @@
           {
               return other();
           }
  +        AppConfigurationEntry[] testUsersRoles()
  +        {
  +            String name = "org.jboss.security.auth.spi.UsersRolesLoginModule";
  +            AppConfigurationEntry ace = new AppConfigurationEntry(name,
  +                AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, new 
HashMap());
  +            AppConfigurationEntry[] entry = {ace};
  +            return entry;
  +        }
           AppConfigurationEntry[] other()
           {
               AppConfigurationEntry ace = new 
AppConfigurationEntry(TestLoginModule.class.getName(),
  @@ -175,13 +189,13 @@
       {
           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;
  +            return getConnection("sa", "");
           }
           public java.sql.Connection getConnection(String user, String pass) throws 
java.sql.SQLException
           {
  -            return getConnection();
  +            String jdbcURL = "jdbc:HypersonicSQL:hsql://localhost:1476";
  +            java.sql.Connection con = DriverManager.getConnection(jdbcURL, user, 
pass);
  +            return con;
           }
           public java.io.PrintWriter getLogWriter() throws java.sql.SQLException
           {
  @@ -248,6 +262,64 @@
           assert("Coder is a role", roles.isMember(new SimplePrincipal("Coder")));
           lc.logout();
       }
  +    public void testUsersRoles() throws Exception
  +    {
  +        System.out.println("testUsersRoles");
  +        UsernamePasswordHandler handler = new UsernamePasswordHandler("scott", 
"echoman".toCharArray());
  +        LoginContext lc = new LoginContext("testUsersRoles", handler);
  +        lc.login();
  +        Subject subject = lc.getSubject();
  +        Set groups = subject.getPrincipals(Group.class);
  +        assert("Principals contains scott", subject.getPrincipals().contains(new 
SimplePrincipal("scott")));
  +        assert("Principals contains Roles", groups.contains(new 
SimplePrincipal("Roles")));
  +        assert("Principals contains CallerPrincipal", groups.contains(new 
SimplePrincipal("CallerPrincipal")));
  +        Group roles = (Group) groups.iterator().next();
  +        Iterator groupsIter = groups.iterator();
  +        while( groupsIter.hasNext() )
  +        {
  +            roles = (Group) groupsIter.next();
  +            if( roles.getName().equals("Roles") )
  +            {
  +                assert("Echo is a role", roles.isMember(new 
SimplePrincipal("Echo")));
  +                assert("Java is NOT a role", roles.isMember(new 
SimplePrincipal("Java")) == false);
  +                assert("Coder is NOT a role", roles.isMember(new 
SimplePrincipal("Coder")) == false);
  +            }
  +            else if( roles.getName().equals("CallerPrincipal") )
  +            {
  +                System.out.println("CallerPrincipal is 
"+roles.members().nextElement());
  +                boolean isMember = roles.isMember(new 
SimplePrincipal("callerScott"));
  +                assert("CallerPrincipal is callerScott", isMember);
  +            }
  +        }
  +        lc.logout();
  +
  +        handler = new UsernamePasswordHandler("stark", "javaman".toCharArray());
  +        lc = new LoginContext("testUsersRoles", handler);
  +        lc.login();
  +        subject = lc.getSubject();
  +        groups = subject.getPrincipals(Group.class);
  +        assert("Principals contains stark", subject.getPrincipals().contains(new 
SimplePrincipal("stark")));
  +        assert("Principals contains Roles", groups.contains(new 
SimplePrincipal("Roles")));
  +        assert("Principals contains CallerPrincipal", groups.contains(new 
SimplePrincipal("CallerPrincipal")));
  +        groupsIter = groups.iterator();
  +        while( groupsIter.hasNext() )
  +        {
  +            roles = (Group) groupsIter.next();
  +            if( roles.getName().equals("Roles") )
  +            {
  +                assert("Echo is NOT a role", roles.isMember(new 
SimplePrincipal("Echo")) == false);
  +                assert("Java is a role", roles.isMember(new 
SimplePrincipal("Java")));
  +                assert("Coder is a role", roles.isMember(new 
SimplePrincipal("Coder")));
  +            }
  +            else if( roles.getName().equals("CallerPrincipal") )
  +            {
  +                System.out.println("CallerPrincipal is 
"+roles.members().nextElement());
  +                boolean isMember = roles.isMember(new 
SimplePrincipal("callerStark"));
  +                assert("CallerPrincipal is callerStark", isMember);
  +            }
  +        }
  +        lc.logout();
  +    }
       public void testIdentity() throws Exception
       {
           System.out.println("testIdentity");
  @@ -354,20 +426,20 @@
           e INSERT INTO Roles VALUES ("stark", "caller_stark", "CallerPrincipal");
   
           c close;
  -
       */
       public void testJdbc() throws Exception
       {
           System.out.println("testJdbc");
           try
           {
  -            Class.forName ("org.enhydra.instantdb.jdbc.idbDriver");
  +            Class.forName ("org.hsql.jdbcDriver");
           }
           catch(ClassNotFoundException e)
           {   // Skip the test
  -            System.out.println("Skipping test because 
org.enhydra.instantdb.jdbc.idbDriver was not found");
  +            System.out.println("Skipping test because org.hsql.jdbcDriver was not 
found");
               return;
           }
  +        // Create a DataSource binding
           DataSource ds = new TestDS();
           Properties env = new Properties();
           org.jnp.server.Main naming = new org.jnp.server.Main();
  @@ -375,7 +447,24 @@
           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);
  +        try
  +        {
  +            ctx.bind("testJdbc", ds);
  +        }
  +        catch(NameAlreadyBoundException e)
  +        {
  +            // Ignore
  +        }
  +
  +        // Start database and setup tables
  +        startHsql();
  +        Connection conn = ds.getConnection("sa", "");
  +        Statement statement = conn.createStatement();
  +        createPrincipalsTable(statement);
  +        createRolesTable(statement);
  +        statement.close();
  +        conn.close();
  +
           UsernamePasswordHandler handler = new UsernamePasswordHandler("stark", 
"javaman".toCharArray());
           LoginContext lc = new LoginContext("testJdbc", handler);
           lc.login();
  @@ -390,6 +479,81 @@
           lc.logout();
       }
   
  +    static void startHsql()
  +    {
  +        // Start DB in new thread, or else it will block us
  +        Thread runner = new Thread(new Runnable()
  +        {
  +            public void run()
  +            {
  +                File dbDir = new File("hypersonic");
  +                dbDir.mkdir();
  +                File dbName = new File(dbDir, "DBLogin");
  +                // Create startup arguments
  +                String[] args = new String[]
  +                {
  +                    "-database", dbName.toString(),
  +                    "-port", "1476",
  +                    "-silent", "true",
  +                    "-trace", "false"
  +                };
  +                // Start server
  +                org.hsql.Server.main(args);
  +            }
  +        });
  +
  +        runner.start();
  +        System.out.println("HSQL database started");
  +    }
  +
  +    static void createPrincipalsTable(Statement statement) throws SQLException
  +    {
  +        try
  +        {
  +            statement.execute("DROP TABLE Principals");
  +        }
  +        catch(SQLException e)
  +        {
  +            // Ok, assume table does not exist
  +        }
  +        boolean result = statement.execute("CREATE TABLE Principals ("
  +            + "PrincipalID VARCHAR(64) PRIMARY KEY,"
  +            + "Password VARCHAR(64) )"
  +        );
  +        System.out.println("Created Principals table, result="+result);
  +        result = statement.execute("INSERT INTO Principals VALUES ('scott', 
'echoman')");
  +        System.out.println("INSERT INTO Principals VALUES ('scott', 'echoman'), 
result="+result);
  +        result = statement.execute("INSERT INTO Principals VALUES ('stark', 
'javaman')");
  +        System.out.println("INSERT INTO Principals VALUES ('stark', 'javaman'), 
result="+result);
  +    }
  +
  +    static void createRolesTable(Statement statement) throws SQLException
  +    {
  +        try
  +        {
  +            statement.execute("DROP TABLE Roles");
  +        }
  +        catch(SQLException e)
  +        {
  +            // Ok, assume table does not exist
  +        }
  +        boolean result = statement.execute("CREATE TABLE Roles ("
  +            + "PrincipalID   VARCHAR(64),"
  +            + "Role  VARCHAR(64),"
  +            + "RoleGroup VARCHAR(64) )"
  +        );
  +        System.out.println("Created Roles table, result="+result);
  +        result = statement.execute("INSERT INTO Roles VALUES ('scott', 'Echo', 
'Roles')");
  +        System.out.println("INSERT INTO Roles VALUES ('scott', 'Echo', 'Roles'), 
result="+result);
  +        result = statement.execute("INSERT INTO Roles VALUES ('scott', 
'callerScott', 'CallerPrincipal')");
  +        System.out.println("INSERT INTO Roles VALUES ('scott', 'callerScott', 
'CallerPrincipal'), result="+result);
  +        result = statement.execute("INSERT INTO Roles VALUES ('stark', 'Java', 
'Roles')");
  +        System.out.println("INSERT INTO Roles VALUES ('stark', 'Java', 'Roles'), 
result="+result);
  +        result = statement.execute("INSERT INTO Roles VALUES ('stark', 'Coder', 
'Roles')");
  +        System.out.println("INSERT INTO Roles VALUES ('stark', 'Coder', 'Roles'), 
result="+result);
  +        result = statement.execute("INSERT INTO Roles VALUES ('stark', 
'callerStark', 'CallerPrincipal')");
  +        System.out.println("INSERT INTO Roles VALUES ('stark', 'callerStark', 
'CallerPrincipal'), result="+result);
  +    }
       public static void main(java.lang.String[] args)
       {
           System.setErr(System.out);
  
  
  
  1.1                  jbosssx/src/main/org/jboss/test/UsersRolesLoginModuleTest.java
  
  Index: UsersRolesLoginModuleTest.java
  ===================================================================
  /*
   * JBoss, the OpenSource EJB server
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
  package org.jboss.test;
  
  import java.io.Serializable;
  import java.security.Principal;
  import java.security.acl.Group;
  import java.util.Enumeration;
  import java.util.HashMap;
  import java.util.Iterator;
  import java.util.Set;
  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 junit.framework.TestCase;
  import junit.framework.TestSuite;
  
  import org.jboss.security.SimpleGroup;
  import org.jboss.security.SimplePrincipal;
  import org.jboss.security.auth.callback.UsernamePasswordHandler;
  import org.jboss.security.auth.spi.UsersRolesLoginModule;
  
  /** Tests of the sample LoginModule classes.
  
  @author [EMAIL PROTECTED]
  @version $Revision: 1.1 $
  */
  public class UsersRolesLoginModuleTest extends TestCase
  {
      public UsersRolesLoginModuleTest(String testName)
      {
          super(testName);
      }
  
      public void testUsersRoles() throws Exception
      {
          System.out.println("testUsersRoles");
          UsersRolesLoginModule lm = new UsersRolesLoginModule();
          Subject subject = new Subject();
          UsernamePasswordHandler handler = new UsernamePasswordHandler("scott", 
"echoman".toCharArray());
          lm.initialize(subject, handler, new HashMap(), new HashMap());
          assert(lm.login());
          assert(lm.commit());
  
          Set groups = subject.getPrincipals(Group.class);
          assert("Principals contains scott", subject.getPrincipals().contains(new 
SimplePrincipal("scott")));
          assert("Principals contains Roles", groups.contains(new 
SimplePrincipal("Roles")));
          assert("Principals contains CallerPrincipal", groups.contains(new 
SimplePrincipal("CallerPrincipal")));
          Group roles = (Group) groups.iterator().next();
          Iterator groupsIter = groups.iterator();
          while( groupsIter.hasNext() )
          {
              roles = (Group) groupsIter.next();
              if( roles.getName().equals("Roles") )
              {
                  assert("Echo is a role", roles.isMember(new 
SimplePrincipal("Echo")));
                  assert("Java is NOT a role", roles.isMember(new 
SimplePrincipal("Java")) == false);
                  assert("Coder is NOT a role", roles.isMember(new 
SimplePrincipal("Coder")) == false);
              }
              else if( roles.getName().equals("CallerPrincipal") )
              {
                  System.out.println("CallerPrincipal is 
"+roles.members().nextElement());
                  assert("CallerPrincipal is callerScott", roles.isMember(new 
SimplePrincipal("callerScott")));
              }
          }
          lm.logout();
  
          handler = new UsernamePasswordHandler("stark", "javaman".toCharArray());
          lm = new UsersRolesLoginModule();
          lm.initialize(subject, handler, new HashMap(), new HashMap());
          assert(lm.login());
          assert(lm.commit());
          groups = subject.getPrincipals(Group.class);
          assert("Principals contains stark", subject.getPrincipals().contains(new 
SimplePrincipal("stark")));
          assert("Principals contains Roles", groups.contains(new 
SimplePrincipal("Roles")));
          assert("Principals contains CallerPrincipal", groups.contains(new 
SimplePrincipal("CallerPrincipal")));
          groupsIter = groups.iterator();
          while( groupsIter.hasNext() )
          {
              roles = (Group) groupsIter.next();
              if( roles.getName().equals("Roles") )
              {
                  assert("Echo is NOT a role", roles.isMember(new 
SimplePrincipal("Echo")) == false);
                  assert("Java is a role", roles.isMember(new 
SimplePrincipal("Java")));
                  assert("Coder is a role", roles.isMember(new 
SimplePrincipal("Coder")));
              }
              else if( roles.getName().equals("CallerPrincipal") )
              {
                  System.out.println("CallerPrincipal is 
"+roles.members().nextElement());
                  assert("CallerPrincipal is callerStark", roles.isMember(new 
SimplePrincipal("callerStark")));
              }
          }
          lm.logout();
      }
  
      public static void main(java.lang.String[] args)
      {
          System.setErr(System.out);
          TestSuite suite = new TestSuite(UsersRolesLoginModuleTest.class);
          junit.textui.TestRunner.run(suite);
      }
  
  }
  
  
  
  1.1                  jbosssx/src/main/org/jboss/test/roles.properties
  
  Index: roles.properties
  ===================================================================
  scott=Echo
  stark=Java,Coder
  stark.CallerPrincipal=callerStark
  
  starksm.Roles=ProjectUser
  starksm.CallerPrincipal=callerStarksm
  scott.Roles=ProjectUser
  scott.CallerPrincipal=callerScott
  
  
  1.1                  jbosssx/src/main/org/jboss/test/tst-policy.xml
  
  Index: tst-policy.xml
  ===================================================================
  <?xml version = "1.0" encoding = "UTF-8"?>
  <policy>
  <!-- A test application policy that creates a SimplePrincipal with
  a name of 'starksm' for testing the subject based policy permissions.
  -->
    <application-policy name = "test-domain">
      <authentication>
        <login-module code = "org.jboss.security.plugins.samples.IdentityLoginModule" 
flag = "required">
        <module-option name = "principal">starksm</module-option>
        </login-module>
      </authentication>
      <authorization>
        <grant>
          <principal code = "org.jboss.security.SimplePrincipal" name = "scott"/>
            <permission code = "org.jboss.test.security.test.NamespacePermission" name 
= "Project1" actions = "rwxd"/>
            <permission code = "org.jboss.test.security.test.NamespacePermission" name 
= "Project1/Documents/Private" actions = "rw-d"/>
        </grant>
        <grant>
            <principal code = "org.jboss.security.SimplePrincipal" name = "starksm"/>
          <permission code = "org.jboss.test.security.test.NamespacePermission" name = 
"Project1/Documents/Public" actions = "r---"/>
        </grant>
      </authorization>
    </application-policy>
  
  <!-- A application policy that specifies the SRPLoginModule + JBoss
    ClientLogin module for testing the secure authentication link.
  -->
    <application-policy name = "srp-login">
      <authentication>
        <login-module code = "org.jboss.security.srp.jaas.SRPLoginModule" flag = 
"required">
          <module-option name = "password-stacking">useFirstPass</module-option>
          <module-option name = 
"principalClassName">org.jboss.security.SimplePrincipal</module-option>
          <module-option name = "srpServerJndiName">SRPServerInterface</module-option>
          <module-option name = "debug">true</module-option>
        </login-module>
  
        <login-module code = "org.jboss.security.ClientLoginModule" flag = "required">
          <module-option name = "password-stacking">useFirstPass</module-option>
        </login-module>
      </authentication>
    </application-policy>
  
  </policy>
  
  
  
  1.1                  jbosssx/src/main/org/jboss/test/tst.policy
  
  Index: tst.policy
  ===================================================================
  grant {
        permission java.security.AllPermission;
  };
  
  
  
  
  1.1                  jbosssx/src/main/org/jboss/test/users.properties
  
  Index: users.properties
  ===================================================================
  scott=echoman
  stark=javaman
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to