1 package samples.annotations;
2
3 import junit.framework.TestCase;
4 import org.acegisecurity.AccessDeniedException;
5 import org.acegisecurity.GrantedAuthority;
6 import org.acegisecurity.GrantedAuthorityImpl;
7 import org.acegisecurity.context.SecurityContextHolder;
8 import org.acegisecurity.context.SecurityContextImpl;
9 import org.acegisecurity.providers.TestingAuthenticationToken;
10
11 import org.springframework.context.support.ClassPathXmlApplicationContext;
12
13 import sample.annotations.BankService;
14
15
16 /***
17 * Tests security objects.
18 *
19 * @author Ben Alex
20 * @version $Id: BankTests.java,v 1.2 2005/11/17 00:56:47 benalex Exp $
21 */
22 public class BankTests extends TestCase {
23
24
25 private BankService service;
26 private ClassPathXmlApplicationContext ctx;
27
28
29
30 public BankTests() {
31 super();
32 }
33
34 public BankTests(String arg0) {
35 super(arg0);
36 }
37
38
39
40 public final void setUp() throws Exception {
41 super.setUp();
42 ctx = new ClassPathXmlApplicationContext("applicationContext-annotations.xml");
43 service = (BankService) ctx.getBean("bankService");
44 }
45
46 public static void main(String[] args) {
47 junit.textui.TestRunner.run(BankTests.class);
48 }
49
50 public void testDeniedAccess() throws Exception {
51 createSecureContext();
52
53 try {
54 service.balance("1");
55 fail("Should have thrown AccessDeniedException");
56 } catch (AccessDeniedException expected) {
57 assertTrue(true);
58 }
59
60 destroySecureContext();
61 }
62
63 public void testListAccounts() throws Exception {
64 createSecureContext();
65 service.listAccounts();
66 destroySecureContext();
67 }
68
69 private static void createSecureContext() {
70 TestingAuthenticationToken auth = new TestingAuthenticationToken("test",
71 "test",
72 new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_TELLER"), new GrantedAuthorityImpl(
73 "ROLE_PERMISSION_LIST")});
74
75 SecurityContextHolder.getContext().setAuthentication(auth);
76 }
77
78 private static void destroySecureContext() {
79 SecurityContextHolder.setContext(new SecurityContextImpl());
80 }
81 }
82