@Test
    void notifyFailureAfterDoAuthenticateThrowsNonAuthenticationException() {
        assertThrows(AuthenticationException.class, () -> {
            abstractAuthenticator = new AbstractAuthenticator() {
                protected AuthenticationInfo doAuthenticate(AuthenticationToken token) throws AuthenticationException {
                    throw new IllegalArgumentException("not an AuthenticationException subclass");
                }
            };
            AuthenticationToken token = newToken();
            abstractAuthenticator.authenticate(token);
        });
    }
Ensures a non-null <tt>Subject</tt> instance is returned from the authenticate() method after a valid
authentication attempt (i.e. the subclass's doAuthenticate implementation returns a valid, non-null
AuthenticationInfo object).
core/src/test/java/org/apache/shiro/authc/AbstractAuthenticatorTest.java