1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.acegisecurity.providers.cas.ticketvalidator;
17
18 import edu.yale.its.tp.cas.client.ProxyTicketValidator;
19
20 import junit.framework.TestCase;
21
22 import org.acegisecurity.AuthenticationServiceException;
23 import org.acegisecurity.BadCredentialsException;
24 import org.acegisecurity.providers.cas.TicketResponse;
25 import org.acegisecurity.ui.cas.ServiceProperties;
26
27 import java.util.Vector;
28
29
30 /***
31 * Tests {@link CasProxyTicketValidator}.
32 *
33 * @author Ben Alex
34 * @version $Id: CasProxyTicketValidatorTests.java,v 1.2 2005/11/17 00:55:50 benalex Exp $
35 */
36 public class CasProxyTicketValidatorTests extends TestCase {
37
38
39 public CasProxyTicketValidatorTests() {
40 super();
41 }
42
43 public CasProxyTicketValidatorTests(String arg0) {
44 super(arg0);
45 }
46
47
48
49 public final void setUp() throws Exception {
50 super.setUp();
51 }
52
53 public static void main(String[] args) {
54 junit.textui.TestRunner.run(CasProxyTicketValidatorTests.class);
55 }
56
57 public void testGetters() {
58 CasProxyTicketValidator tv = new CasProxyTicketValidator();
59 tv.setProxyCallbackUrl("http://my.com/webapp/casProxy/someValidator");
60 assertEquals("http://my.com/webapp/casProxy/someValidator",
61 tv.getProxyCallbackUrl());
62 }
63
64 public void testNormalOperation() {
65 ServiceProperties sp = new ServiceProperties();
66 sp.setSendRenew(true);
67 sp.setService("https://my.com/webapp//j_acegi_cas_security_check");
68
69 CasProxyTicketValidator tv = new MockCasProxyTicketValidator(true, false);
70 tv.setCasValidate("https://company.com/cas/proxyvalidate");
71 tv.setServiceProperties(sp);
72 tv.setProxyCallbackUrl("http://my.com/webapp/casProxy/someValidator");
73
74 TicketResponse response = tv.confirmTicketValid(
75 "ST-0-ER94xMJmn6pha35CQRoZ");
76
77 assertEquals("user", response.getUser());
78 }
79
80 public void testProxyTicketValidatorInternalExceptionsGracefullyHandled() {
81 CasProxyTicketValidator tv = new MockCasProxyTicketValidator(false, true);
82 tv.setCasValidate("https://company.com/cas/proxyvalidate");
83 tv.setServiceProperties(new ServiceProperties());
84 tv.setProxyCallbackUrl("http://my.com/webapp/casProxy/someValidator");
85
86 try {
87 tv.confirmTicketValid("ST-0-ER94xMJmn6pha35CQRoZ");
88 fail("Should have thrown AuthenticationServiceException");
89 } catch (AuthenticationServiceException expected) {
90 assertTrue(true);
91 }
92 }
93
94 public void testValidationFailsOkAndOperationWithoutAProxyCallbackUrl() {
95 CasProxyTicketValidator tv = new MockCasProxyTicketValidator(false,
96 false);
97 tv.setCasValidate("https://company.com/cas/proxyvalidate");
98 tv.setServiceProperties(new ServiceProperties());
99
100 try {
101 tv.confirmTicketValid("ST-0-ER94xMJmn6pha35CQRoZ");
102 fail("Should have thrown BadCredentialsExpected");
103 } catch (BadCredentialsException expected) {
104 assertTrue(true);
105 }
106 }
107
108
109
110 private class MockCasProxyTicketValidator extends CasProxyTicketValidator {
111 private boolean returnTicket;
112 private boolean throwAuthenticationServiceException;
113
114 public MockCasProxyTicketValidator(boolean returnTicket,
115 boolean throwAuthenticationServiceException) {
116 this.returnTicket = returnTicket;
117 this.throwAuthenticationServiceException = throwAuthenticationServiceException;
118 }
119
120 private MockCasProxyTicketValidator() {
121 super();
122 }
123
124 protected TicketResponse validateNow(ProxyTicketValidator pv)
125 throws AuthenticationServiceException, BadCredentialsException {
126 if (returnTicket) {
127 return new TicketResponse("user", new Vector(),
128 "PGTIOU-0-R0zlgrl4pdAQwBvJWO3vnNpevwqStbSGcq3vKB2SqSFFRnjPHt");
129 }
130
131 if (throwAuthenticationServiceException) {
132 throw new AuthenticationServiceException("As requested by mock");
133 }
134
135 throw new BadCredentialsException("As requested by mock");
136 }
137 }
138 }