Lifecycle

Run
How to run the sample
The source code for this sample can be found in the javaee7-samples GitHub repository. The first thing we need to do is to get the source by downloading the repository and then go into the samples folder:
git clone git://github.com/javaee-samples/javaee7-samples.git
cd javaee7-samples/jaspic/lifecycle/
Now we are ready to start testing. You can run all the tests in this sample by executing:
mvn test
Or you can run individual tests by executing one of the following:
mvn test -Dtest=AuthModuleMethodInvocationTest

AuthModuleMethodInvocationTest

This tests that the two main methods of a SAM, {@link ServerAuthModule#validateRequest} and {@link ServerAuthModule#secureResponse} are called at the right time, which is resp. before and after the resource (e.g. a Servlet) is invoked.

Missing a description for the deployment. Add some javadoc to the @Deployment method. Show me how!
@Deployment(testable = false)
public static WebArchive createDeployment() {
    return defaultArchive();
}

Test that the main SAM methods are called and are called in the correct order.

The rule seems simple: <ul> <li>First call validateRequest() in the SAM. <li>Then invoke the requested resource (e.g. a Servlet or JSP page) <li>Finally call secureResponse() in the SAM </ul>

@Test
public void testBasicSAMMethodsCalled() throws IOException, SAXException {

    String response = getFromServerPath("protected/servlet");


    // First test if individual methods are called
    assertTrue("SAM method validateRequest not called, but should have been.",
            response.contains("validateRequest invoked"));
    assertTrue("Resource (Servlet) not invoked, but should have been.", response.contains("Resource invoked"));

    // The previous two methods are rare to not be called, but secureResponse is more likely to fail. Seemingly it's hard
    // to understand what this method should do exactly.
    assertTrue("SAM method secureResponse not called, but should have been.",
            response.contains("secureResponse invoked"));

    // Finally the order should be correct. More than a few implementations call secureResponse before the resource is
    // invoked.
    assertTrue("SAM methods called in wrong order",
            response.contains("validateRequest invoked\nResource invoked\nsecureResponse invoked\n"));
}

Test that the SAM’s cleanSubject method is called following a call to {@link HttpServletRequest#logout()}. <p> Although occasionally a JASPIC 1.0 implementation indeed does this, it’s only mandated that this happens in JASPIC 1.1

@Test
public void testLogout() throws IOException, SAXException {

    // Note that we don't explicitly log-in; the test SAM uses for this test does that automatically before the resource
    // (servlet)
    // is invoked. Once we reach the Servlet we should be logged-in and can proceed to logout.
    String response = getFromServerPath("protected/servlet?doLogout");

    assertTrue("SAM method cleanSubject not called, but should have been.",
            response.contains("cleanSubject invoked"));
}

Share the Knowledge

Find this sample useful? Share on

There's a lot more about JavaEE to cover. If you're ready to learn more, check out the other available samples.

Help Improve

Find a bug in the sample? Something missing? You can fix it by editing the source, making the correction and sending a pull request. Or report the problem to the issue tracker

Recent Changelog

  • Jul 15, 2014: Removed header license. the licensing is now referenced in the license file in the root of the project by Roberto Cortez
  • Jan 11, 2014: Replaced httpunit by htmlunit, added convenience method for getting raw by arjan tijms
  • Jan 07, 2014: Add jboss-web.xml to web deployments by Stefan Guilhen
  • Dec 10, 2013: Port of jaspic tests from by arjan tijms
How to help improve this sample
The source code for this sample can be found in the javaee7-samples GitHub repository. The first thing you need to do is to get the source by downloading the repository and then go into the samples folder:
git clone git://github.com/javaee-samples/javaee7-samples.git
cd javaee7-samples/jaspic/lifecycle/

Do the changes as you see fit and send a pull request!

Good Luck!