Jaxrs security declarative

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/jaxrs/jaxrs-security-declarative/
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=MyResourceTest

MyResourceTest

Missing a description for the story. Add some javadoc to the TestClass. Show me how!
Missing a description for the deployment. Add some javadoc to the @Deployment method. Show me how!
@Deployment(testable = false)
public static WebArchive createDeployment() {
    return ShrinkWrap.create(WebArchive.class)
            .addAsWebInfResource((new File(WEBAPP_SRC + "/WEB-INF", "web.xml")))
            .addClasses(MyApplication.class, MyResource.class);
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@Test
public void testGetWithCorrectCredentials() throws IOException, SAXException {
    WebConversation conv = new WebConversation();
    conv.setAuthentication("file", "u1", "p1");
    GetMethodWebRequest getRequest = new GetMethodWebRequest(base + "/webresources/myresource");
    WebResponse response = null;
    try {
        response = conv.getResponse(getRequest);
    } catch (AuthorizationRequiredException e) {
        fail(e.getMessage());
    }
    assertNotNull(response);
    assertTrue(response.getText().contains("get"));
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@Test
public void testGetSubResourceWithCorrectCredentials() throws IOException, SAXException {
    WebConversation conv = new WebConversation();
    conv.setAuthentication("file", "u1", "p1");
    GetMethodWebRequest getRequest = new GetMethodWebRequest(base + "/webresources/myresource/1");
    WebResponse response = null;
    try {
        response = conv.getResponse(getRequest);
    } catch (AuthorizationRequiredException e) {
        fail(e.getMessage());
    }
    assertNotNull(response);
    assertTrue(response.getText().contains("get1"));
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@Test
public void testGetWithIncorrectCredentials() throws IOException, SAXException {
    WebConversation conv = new WebConversation();
    conv.setAuthentication("file", "random", "random");
    GetMethodWebRequest getRequest = new GetMethodWebRequest(base + "/webresources/myresource");
    try {
        WebResponse response = conv.getResponse(getRequest);
    } catch (AuthorizationRequiredException e) {
        assertNotNull(e);
        return;
    }
    fail("GET can be called with incorrect credentials");
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@Test
public void testPost() throws IOException, SAXException {
    WebConversation conv = new WebConversation();
    conv.setAuthentication("file", "u1", "p1");
    PostMethodWebRequest postRequest = new PostMethodWebRequest(base + "/webresources/myresource");
    try {
        WebResponse response = conv.getResponse(postRequest);
    } catch (HttpException e) {
        assertNotNull(e);
        assertEquals(403, e.getResponseCode());
        return;
    }
    fail("POST is not authorized and can still be called");
}
Missing a description for the test scenario. Add some javadoc to the @Test method. Show me how!
@Test
public void testPut() throws IOException, SAXException {
    WebConversation conv = new WebConversation();
    conv.setAuthentication("file", "u1", "p1");
    byte[] bytes = new byte[8];
    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    PutMethodWebRequest putRequest = new PutMethodWebRequest(base + "/webresources/myresource", bais, "text/plain");
    try {
        WebResponse response = conv.getResponse(putRequest);
    } catch (HttpException e) {
        assertNotNull(e);
        assertEquals(403, e.getResponseCode());
        return;
    }
    fail("PUT is not authorized and can still be called");
}

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
  • Dec 12, 2013: Adding a new sample/test for jax-rs basic authentication security by arun-gupta
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/jaxrs/jaxrs-security-declarative/

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

Good Luck!