blob: 1c8235253d5e73064b27b8d46659981cbf260e58 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
/*
* Copyright (c) 2016 Brocade Communications Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.aaa.shiro.filters;
import static org.junit.Assert.*;
import ch.qos.logback.classic.spi.LoggingEvent;
import java.util.List;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.junit.Test;
import org.opendaylight.aaa.shiro.TestAppender;
import org.opendaylight.aaa.shiro.filters.AuthenticationListener;
/**
* Test AuthenticationListener, which is responsible for logging Accounting events.
*
* @author Ryan Goulding (ryandgoulding@gmail.com)
*/
public class AuthenticationListenerTest {
@Test
public void testOnSuccess() throws Exception {
// sets up a successful authentication attempt
final AuthenticationListener authenticationListener = new AuthenticationListener();
final UsernamePasswordToken authenticationToken = new UsernamePasswordToken();
authenticationToken.setUsername("successfulUser1");
authenticationToken.setHost("successfulHost1");
final SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo();
// the following call produces accounting output
authenticationListener.onSuccess(authenticationToken, simpleAuthenticationInfo);
// grab the latest log output and make sure it is in line with what is expected
final List<LoggingEvent> loggingEvents = TestAppender.getCurrentInstance().getEvents();
// the latest logging event is the one we need to inspect
final int whichLoggingEvent = loggingEvents.size() - 1;
final LoggingEvent latestLoggingEvent = loggingEvents.get(whichLoggingEvent);
final String latestLogMessage = latestLoggingEvent.getMessage();
assertEquals("Successful authentication attempt by successfulUser1 from successfulHost1",
latestLogMessage);
}
@Test
public void testOnFailure() throws Exception {
// variables for an unsucessful authentication attempt
final AuthenticationListener authenticationListener = new AuthenticationListener();
final UsernamePasswordToken authenticationToken = new UsernamePasswordToken();
authenticationToken.setUsername("unsuccessfulUser1");
authenticationToken.setHost("unsuccessfulHost1");
final AuthenticationException authenticationException =
new AuthenticationException("test auth exception");
// produces unsuccessful authentication attempt output
authenticationListener.onFailure(authenticationToken, authenticationException);
// grab the latest log output and ensure it is in line with what is expected
final List<LoggingEvent> loggingEvents = TestAppender.getCurrentInstance().getEvents();
final int whichLoggingEvent = loggingEvents.size() - 1;
final LoggingEvent latestLoggingEvent = loggingEvents.get(whichLoggingEvent);
final String latestLogMessage = latestLoggingEvent.getMessage();
assertEquals("Unsuccessful authentication attempt by unsuccessfulUser1 from unsuccessfulHost1",
latestLogMessage);
}
}
|