1
2
3
4
5
6
7 package org.mule.module.jaas;
8
9 import org.mule.api.EncryptionStrategy;
10 import org.mule.api.ExceptionPayload;
11 import org.mule.api.MuleMessage;
12 import org.mule.api.config.MuleProperties;
13 import org.mule.module.client.MuleClient;
14 import org.mule.security.MuleCredentials;
15 import org.mule.tck.junit4.FunctionalTestCase;
16
17 import java.util.HashMap;
18 import java.util.Map;
19
20 import org.junit.Test;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertFalse;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertTrue;
26
27 public class JaasAuthenticationNoJaasConfigFileTestCase extends FunctionalTestCase
28 {
29
30 @Override
31 protected String getConfigResources()
32 {
33 return "mule-conf-with-no-jaas-config-file.xml";
34 }
35
36 @Test
37 public void testCaseGoodAuthentication() throws Exception
38 {
39 MuleClient client = new MuleClient(muleContext);
40
41 Map props = new HashMap();
42 EncryptionStrategy strategy = muleContext
43 .getSecurityManager()
44 .getEncryptionStrategy("PBE");
45 String header = MuleCredentials.createHeader("Marie.Rizzo", "dragon", "PBE", strategy);
46 props.put(MuleProperties.MULE_USER_PROPERTY, header);
47 MuleMessage m = client.send("vm://test", "Test", props);
48
49 assertNotNull(m);
50 assertTrue(m.getPayload() instanceof String);
51 assertEquals("Test Received", m.getPayloadAsString());
52 }
53
54 @Test
55 public void testCaseDifferentGoodAuthentication() throws Exception
56 {
57 MuleClient client = new MuleClient(muleContext);
58
59 Map props = new HashMap();
60 EncryptionStrategy strategy = muleContext
61 .getSecurityManager()
62 .getEncryptionStrategy("PBE");
63 String header = MuleCredentials.createHeader("anon", "anon", "PBE", strategy);
64 props.put(MuleProperties.MULE_USER_PROPERTY, header);
65 MuleMessage m = client.send("vm://test", "Test", props);
66
67 assertNotNull(m);
68 assertTrue(m.getPayload() instanceof String);
69 assertEquals("Test Received", m.getPayloadAsString());
70 }
71
72 @Test
73 public void testCaseWrongCombinationOfCorrectUsernameAndPassword() throws Exception
74 {
75 MuleClient client = new MuleClient(muleContext);
76
77 Map props = new HashMap();
78 EncryptionStrategy strategy = muleContext
79 .getSecurityManager()
80 .getEncryptionStrategy("PBE");
81 String header = MuleCredentials.createHeader("Marie.Rizzo", "anon", "PBE", strategy);
82 props.put(MuleProperties.MULE_USER_PROPERTY, header);
83 MuleMessage m = client.send("vm://test", "Test", props);
84
85 assertNotNull(m);
86 assertTrue(m.getPayload() instanceof String);
87 assertFalse(m.getPayloadAsString().equals("Test Received"));
88
89 assertExceptionPayload(m, "Authentication failed for principal Marie.Rizzo. Message payload is of type: String");
90 }
91
92 @Test
93 public void testCaseBadUserName() throws Exception
94 {
95 MuleClient client = new MuleClient(muleContext);
96 Map props = new HashMap();
97 EncryptionStrategy strategy = muleContext
98 .getSecurityManager()
99 .getEncryptionStrategy("PBE");
100 String header = MuleCredentials.createHeader("Evil", "dragon", "PBE", strategy);
101 props.put(MuleProperties.MULE_USER_PROPERTY, header);
102 MuleMessage m = client.send("vm://test", "Test", props);
103
104 assertNotNull(m);
105 assertTrue(m.getPayload() instanceof String);
106 assertFalse(m.getPayloadAsString().equals("Test Received"));
107
108 assertExceptionPayload(m, "Authentication failed for principal Evil. Message payload is of type: String");
109 }
110
111 @Test
112 public void testCaseBadPassword() throws Exception
113 {
114 MuleClient client = new MuleClient(muleContext);
115 Map props = new HashMap();
116 EncryptionStrategy strategy = muleContext
117 .getSecurityManager()
118 .getEncryptionStrategy("PBE");
119 String header = MuleCredentials.createHeader("Marie.Rizzo", "evil", "PBE", strategy);
120 props.put(MuleProperties.MULE_USER_PROPERTY, header);
121 MuleMessage m = client.send("vm://test", "Test", props);
122
123 assertNotNull(m);
124 assertTrue(m.getPayload() instanceof String);
125 assertFalse(m.getPayloadAsString().equals("Test Received"));
126
127 assertExceptionPayload(m, "Authentication failed for principal Marie.Rizzo. Message payload is of type: String");
128 }
129
130 public void assertExceptionPayload(MuleMessage message, String exceptionMessage)
131 {
132 assertNotNull(message.getExceptionPayload());
133 ExceptionPayload exceptionPayload = message.getExceptionPayload();
134 assertNotNull(exceptionPayload);
135 assertEquals(exceptionMessage, exceptionPayload.getMessage());
136 }
137 }