| This unit test is for conflict detection and resolution among role |
| mapping files. See https://glassfish.dev.java.net/issues/show_bug.cgi?id=2475. |
| |
| The application has a top-level mapping file and three submodules |
| with their own mapping files. One module is a web module (used to |
| receive client requests) and the other two are ejb modules. The ejb |
| modules are only called indirectly in the initial version, but are |
| needed to have more role mapping files. The tests need to test |
| conflicts between mappings both submodule vs submodule and submodule |
| vs top level. Conflicts are either extra mappings or fewer mappings |
| to a role, and are tested with groups and principals. |
| |
| The tests are done by accessing the web module with addresses: |
| http://host:port/multiRoleMapping/role1 |
| http://host:port/multiRoleMapping/role2 |
| http://host:port/multiRoleMapping/role3 |
| ...etc., where only a user in role1 can access the role1 url, role2 can |
| access ther role2 url, etc. |
| |
| Using rX for roles, pX for principals, and gX for groups (a user in rXgY |
| is "rXgYuser")), the mappings are below. The uses of the roles: |
| |
| r1: Test that top level overrides others with principals. |
| r2: Test that top level overrides others with principals and groups. |
| r3: Test that top level is used. No mappings in submodules. |
| r4: Test that role is mapped properly when the same in all submodules. |
| r5: Test conflict with different number of mappings. |
| r6: Test conflict with different mappings, same number. |
| r7: Test no conflict when one submodule doesn't map. |
| |
| The top level mapping includes: |
| r1: r1p1, r1p2 |
| r2: r2p1, r2g1, r2g2 |
| r3: r3p1, r3g1 (not included in submodules) |
| |
| Module1 (ejb1): |
| r1: r1p1 (valid, but fewer than in top level) |
| r2: r2p2, r2g3 (principal and group that will not be mapped) |
| r3: (none) |
| r4: r4p1, r4g1 |
| r5: r5p1, r5g1 |
| r6: r6p1, r6p2 |
| r7: r7p1, r7p2 |
| |
| Module2 (ejb2): |
| r1: r1p1, r1p2 (same as top level) |
| r2: r2g1, r2g2 (both valid, but fewer than top level) |
| r3: (none) |
| r4: r4p1, r4g1 |
| r5: r5p1, r5p2, r5g1 (r5p2 is extra) |
| r6: r6p1, r6g1 |
| r7: (none -- absence of mapping is NOT a conflict) |
| |
| Module3 (web): |
| r1: r1p1, r1p2, r1p3 (r1p3 will not be mapped) |
| r2: r2p2, r2g1 (both valid, but fewer than top level) |
| r3: (none) |
| r4: r4p1, r4g1 |
| r5: r5p1 (one fewer) |
| r6: r6p1, r6g1 |
| r7: r7p1, r7p2 |
| |
| Since the top-level mapping overrides other mappings, mapped and unmapped |
| (for negative test) users for roles 1 through 3 are: |
| |
| r1 mapped: r1p1, r1p2 |
| r1 not mapped: r1p3, r2p1, r1g1user |
| |
| r2 mapped: r2p1, r2g1user, r2g2user |
| r2 not mapped: r2p2, r2g3user, r1p1 |
| |
| r3 mapped: r3p1, r3g1 |
| r3 not mapped: r3p2 (not much tested here since no conflict) |
| |
| For conflicts that do not involve the top-level file, the role is |
| not mapped at all. Role 4 is mapped the same in all modules, so |
| it is the only one mapped at all. The roles: |
| |
| r4 mapped: r4p1, r4g1user |
| r5 tested: r5p1, r5p2, r5g1user |
| r6 tested: r6p1, r6p2, r6g1user |
| r7 mapped: r7p1, r7p2 |
| |
| So, total set of users/groups to add to realm (rXpY is in 'dummy' |
| group, rXgYuser is in 'rXgY' group): |
| r1p1, r1p2, r1p3, r1g1user |
| r2p1, r2p2, r2g1user, r2g2user, r2g3user |
| r3p1, r3p2, r3g1user |
| r4p1, r4g1user |
| r5p1, r5p2, r5g1user |
| r6p1, r6g1user |
| r7p1, r7p2 |
| |