public void testMultipleLoginDomains() throws Exception {
JaasLoginModuleConfiguration m1 = new JaasLoginModuleConfiguration(MockLoginModule.class.getName(), LoginModuleControlFlag.REQUIRED, new HashMap(), true, "D1", true, MockLoginModule.class.getClassLoader());
JaasLoginModuleConfiguration m2 = new JaasLoginModuleConfiguration(MockLoginModule.class.getName(), LoginModuleControlFlag.REQUIRED, new HashMap(), true, "D2", true, MockLoginModule.class.getClassLoader());
JaasLoginModuleConfiguration m3 = new JaasLoginModuleConfiguration(AnotherMockLoginModule.class.getName(), LoginModuleControlFlag.REQUIRED, new HashMap(), false, "D3", false, AnotherMockLoginModule.class.getClassLoader());
JaasLoginModuleConfiguration m4 = new JaasLoginModuleConfiguration(AnotherMockLoginModule.class.getName(), LoginModuleControlFlag.REQUIRED, new HashMap(), false, "D4", true, AnotherMockLoginModule.class.getClassLoader());
JaasSecuritySession c = new JaasSecuritySession("realm", new JaasLoginModuleConfiguration[]{m1, m2, m3, m4}, new HashMap(), this.getClass().getClassLoader());
Subject s = c.getSubject();
c.getLoginModule(0).initialize(s, null, null, null);
c.getLoginModule(1).initialize(s, null, null, null);
c.getLoginModule(2).initialize(s, null, null, null);
c.getLoginModule(3).initialize(s, null, null, null);
c.getLoginModule(0).login();
c.getLoginModule(1).login();
c.getLoginModule(2).login();
c.getLoginModule(3).login();
c.getLoginModule(0).commit();
assertEquals("Subject should have three principals", 3, s.getPrincipals().size());
assertEquals("server-side subject should have one realm principal", 1, s.getPrincipals(RealmPrincipal.class).size());
assertEquals("server-side subject should have one domain principal", 1, s.getPrincipals(DomainPrincipal.class).size());
c.getLoginModule(1).commit();
assertEquals("Subject should now have five principals", 5, s.getPrincipals().size());
c.getLoginModule(2).commit();
assertEquals("Subject should now have five principals", 6, s.getPrincipals().size());
c.getLoginModule(3).commit();
assertEquals("Subject should now have five principals", 8, s.getPrincipals().size());
}