m_engine,
Users.ALICE,
new Principal[] { it, engineering, admin } );
// Create two groups: Alice should be part of group Bar, but not Foo
Group fooGroup = m_groupMgr.parseGroup( "Foo", "", true );
Group barGroup = m_groupMgr.parseGroup( "Bar", "", true );
barGroup.add( alice );
m_groupMgr.setGroup( m_session, fooGroup );
m_groupMgr.setGroup( m_session, barGroup );
// Test user principal posession: user principals of different
// types should still be "the same" if their names are equal
assertTrue( "Alice has Alice", m_auth.hasRoleOrPrincipal( session, new WikiPrincipal( Users.ALICE ) ) );
assertTrue( "Alice has Alice", m_auth.hasRoleOrPrincipal( session, new TestPrincipal( Users.ALICE ) ) );
assertFalse( "Alice not has Bob", m_auth.hasRoleOrPrincipal( session, new WikiPrincipal( Users.BOB ) ) );
assertFalse( "Alice not has Bob", m_auth.hasRoleOrPrincipal( session, new TestPrincipal( Users.BOB ) ) );
// Built-in role membership
assertTrue( "Alice in ALL", m_auth.hasRoleOrPrincipal( session, Role.ALL ) );
assertFalse( "Alice not in ANONYMOUS", m_auth.hasRoleOrPrincipal( session, Role.ANONYMOUS ) );
assertFalse( "Alice not in ASSERTED", m_auth.hasRoleOrPrincipal( session, Role.ASSERTED ) );
assertTrue( "Alice in AUTHENTICATED", m_auth.hasRoleOrPrincipal( session, Role.AUTHENTICATED ) );
// Custom roles
assertTrue( "Alice in IT", m_auth.hasRoleOrPrincipal( session, it ) );
assertTrue( "Alice in Engineering", m_auth.hasRoleOrPrincipal( session, engineering ) );
assertFalse( "Alice not in Finance", m_auth.hasRoleOrPrincipal( session, finance ) );
// Group memberships
assertFalse( "Alice not in Foo", m_auth.hasRoleOrPrincipal( session, fooGroup.getPrincipal() ) );
assertTrue( "Alice in Bar", m_auth.hasRoleOrPrincipal( session, barGroup.getPrincipal() ) );
// Cleanup
m_groupMgr.removeGroup( "Foo" );
m_groupMgr.removeGroup( "Bar" );
}