Example usage for javax.security.auth.spi LoginModule logout

List of usage examples for javax.security.auth.spi LoginModule logout

Introduction

In this page you can find the example usage for javax.security.auth.spi LoginModule logout.

Prototype

boolean logout() throws LoginException;

Source Link

Document

Method which logs out a Subject .

Usage

From source file:com.fiveamsolutions.nci.commons.authentication.LoginModuleTest.java

@Test
public void testIt() throws Exception {
    String un = "user";
    String pw = "Password1";
    LoginModule module = new CommonLoginModule();
    Map<String, ?> options = new HashMap<String, Object>();
    Map<String, ?> sharedState = new HashMap<String, Object>();
    Subject subject = new Subject();
    CallbackHandler cbh = new MockCallbackHandler(true);

    module.initialize(subject, cbh, sharedState, options);

    try {// ww  w  .jav  a  2  s.  c o  m
        module.login();
        fail();
    } catch (LoginException e) {
        // expected
    }
    assertTrue(sharedState.isEmpty());
    assertTrue(module.abort());

    cbh = new MockCallbackHandler(false);
    module.initialize(subject, cbh, sharedState, options);

    try {
        module.login();
        fail();
    } catch (LoginException e) {
        // expected
    }
    assertTrue(sharedState.isEmpty());
    assertTrue(module.abort());

    cbh = new MockCallbackHandler(un, "pass".toCharArray());
    module.initialize(subject, cbh, sharedState, options);

    try {
        module.login();
        fail();
    } catch (FailedLoginException e) {
        // expected
    }
    assertTrue(sharedState.isEmpty());
    assertTrue(module.abort());

    createUser(un, pw);
    try {
        module.login();
        fail();
    } catch (FailedLoginException e) {
        // expected
    }
    assertTrue(sharedState.isEmpty());
    assertTrue(module.abort());

    cbh = new MockCallbackHandler(un.toUpperCase(), pw.toCharArray());
    module.initialize(subject, cbh, sharedState, options);

    assertTrue(module.login());
    assertTrue(!sharedState.isEmpty());
    assertEquals(un, sharedState.get("javax.security.auth.login.name"));
    assertEquals(pw, new String((char[]) sharedState.get("javax.security.auth.login.password")));
    assertTrue(subject.getPrincipals().isEmpty());

    assertTrue(module.commit());
    assertTrue(!subject.getPrincipals().isEmpty());
    assertEquals(un, subject.getPrincipals().iterator().next().getName());

    assertTrue(module.logout());
    assertTrue(subject.getPrincipals().isEmpty());
}