Enterprise Java Development@TOPIC@
The end-to-end scenario will test your end-to-end application in a "happy path" scenario. Any white-box or black-box testing of alternate and error paths would be appropriate to put in the separate unit and IT test cases.
Provide JUnit IT tests that verify the EJB functionality of eLeague accessed through its remote interface using new access control restrictions. The test should demonstrate that authentication and access control is in place for this EAR-based deployed application, the authenticated identity of the caller can be accessed by the server-side code, and status of the call is properly conveyed to the caller. For both RMI and JAX-RS, there should be:
An example successful call of an access controlled resource using an authorized user properly authenticated and verified to be the correct value.
An example unsuccessful call (using the same call as above) of an access controlled resource using an unauthorized user
Proper indication to the caller that the caller was or was not authorized to make the call (e.g., exception thrown or status returned)
Provide JUnit IT tests that verify the EJB functionality of eClub using its new access control restrictions and ability to authenticate (if necessary) with eLeague. The test should demonstrate that authentication and access control is in place for this WAR-based deployed application. This is similar to above -- except must be demonstrated with eClub.
Provide a JUnit IT tests that demonstrates the functionality of the JavaEE interceptor/validator. This should include:
An example successful call using a valid DTO instance successfully validated by the interceptor/validator code.
An example unsuccessful call (using the same call as above) using an invalid DTO instance rejected by the interceptor/validator code. Validation must be performed with the Validation API, must be done within an Interceptor, and cannot be performed within the core Java logic within the called EJB.
An example of the caller receiving an indication of whether the call was rejected for security or validation reasons.
Implement the scripted use case below as an automated JUnit test and a selected portion manually accessed through the Web UI. The JUnit test/module must be delivered in a state that can be executed in a debugger -- whether directly within Eclipse (ideally) or using a remote debugging session to a Maven command-line build.
Since this end-to-end test spans both applications the most likely place to host is within eClub.
The applications deploy and/or started
eLeagueEJB sets a timer for schedule reminders
eClubEJB subscribes to pending contest events.
An eleague-admin (admin1) resets all eLeague tables (using the LeagueTestUtilEJB)
An eleague-admin (admin1) populates the eLeague tables (using the LeagueIngestor)
An eclub-admin (admin1) resets the eClub tables (using the ClubTestUtilEJB)
An eclub-admin (admin1) populates the eClub tables (using the ClubTestUtilEJB) if anything necessary.
The league coordinator(lmtucker) creates a Club in eLeague (using the LeagueMgmtEJB). League coordinator assigns the club representative (whoever you call them) to have the login of "user2" to match a login pre-defined in your Wildfly Server. This login has multiple roles assigned spanning both applications.
The eleague-clubcoord (user2) adds Venue for Club in eLeague (using ClubMgmtEJB). The "user2" login has been pre-defined to have the role "eclub-coord".
An eclub-member (user3) creates Parent in eClub (using MemberMgmtEJB). "user3" is a login pre-defined in your Wildfly Server with the role "eclub-member".
An eclub-member (user3) creates Player in eClub (using MemberMgmtEJB) for their child
An eclub-member (user3) adds a Coach role in eClub (using MemberMgmtEJB) to their identity
The eclub-coord (user2) creates a Team in eClub (using OrgMgmtEJB)
The eclub-coord(user2) assigns Players to a Team in eClub (using OrgMgmtEJB)
The eclub-coord(user2) assigns Coach to a Team in eClub (using OrgMgmtEJB)
The eclub-coord(user2) assigns Manager to a Team in eClub (using OrgMgmtEJB)
An eclub-member(user3) views their team roster in eClub (using OrgMgmtEJB)
An eleague-clubcoord (user2) adds a Team for Club in eLeague (using ClubMgmtEJB)
An eleague-clubcoord (user2) adds a contact for a Team eLeague (using ClubMgmtEJB)
An eleague-clubcoord (user2) assigns a Team to an existing Division eLeague (using ClubMgmtEJB; division=U13-A, refid="Division-845")
The eleague-coord (lmtucker) schedules a Season eLeague (using ContestMgmtEJB)
eLeague (eleague-sys) (thru ContestMgmtEJB) publishes schedule events to Schedule Topic
eClub (eclub-sys) (using LeagueListenerMDB) receives messages related to unfinished contests. It obtains the e-mail addresses for members associated with the team referenced in the message. It logs the message and e-mail addresses.
anonymous users views Team Schedule in eClub (using OrgMgmtEJB). eClub (eclub-sys) contacts eLeague (using LeagueMgmtEJB) for team season associated with eClub's team.
EJB Timer fires a callback in eLeague (using ContestMgmtEJB (eleague-sys))
eLeague (eleague-sys) (using ContestMgmtEJB) publishes reminder messages to the Schedule Topic (and received in eClub using LeagueListenerMDB).
The eleague-coord (jtflynn) (for division=U13-A, refid="Division-845") reports a Score in eLeague involving our club team (using ContestMgmtEJB)
anonymous user views Division Standings in eLeague (using LeagueMgmtEJB)