KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > mx4j > server > MBeanPermissionTest


1 /*
2  * Copyright (C) The MX4J Contributors.
3  * All rights reserved.
4  *
5  * This software is distributed under the terms of the MX4J License version 1.0.
6  * See the terms of the MX4J License in the documentation provided with this software.
7  */

8
9 package test.mx4j.server;
10
11 import java.io.ByteArrayInputStream JavaDoc;
12 import java.io.ByteArrayOutputStream JavaDoc;
13 import java.io.ObjectInputStream JavaDoc;
14 import java.io.ObjectOutputStream JavaDoc;
15 import javax.management.MBeanPermission JavaDoc;
16
17 import test.javax.management.PermissionTestCase;
18
19 /**
20  * @version $Revision: 1.19 $
21  */

22 public class MBeanPermissionTest extends PermissionTestCase
23 {
24    public MBeanPermissionTest(String JavaDoc s)
25    {
26       super(s);
27    }
28
29    public void testInvalidMBeanPermissionBecauseInvalidName() throws Exception JavaDoc
30    {
31       try
32       {
33          new MBeanPermission JavaDoc(null, null);
34          fail("Invalid MBeanPermission");
35       }
36       catch (IllegalArgumentException JavaDoc ignored)
37       {
38       }
39
40       try
41       {
42          new MBeanPermission JavaDoc("", null);
43          fail("Invalid MBeanPermission");
44       }
45       catch (IllegalArgumentException JavaDoc ignored)
46       {
47       }
48
49       try
50       {
51          new MBeanPermission JavaDoc(" ", null);
52          fail("Invalid MBeanPermission");
53       }
54       catch (IllegalArgumentException JavaDoc ignored)
55       {
56       }
57
58       try
59       {
60          new MBeanPermission JavaDoc(" ", "*");
61          fail("Invalid MBeanPermission");
62       }
63       catch (IllegalArgumentException JavaDoc ignored)
64       {
65       }
66
67       try
68       {
69          new MBeanPermission JavaDoc("", "*");
70          fail("Invalid MBeanPermission");
71       }
72       catch (IllegalArgumentException JavaDoc ignored)
73       {
74       }
75
76       // Invalid ObjectName
77
try
78       {
79          new MBeanPermission JavaDoc("[d?k=v]", "*");
80          fail("Invalid MBeanPermission");
81       }
82       catch (IllegalArgumentException JavaDoc ignored)
83       {
84       }
85
86       try
87       {
88          new MBeanPermission JavaDoc("[*]", "*");
89          fail("Invalid MBeanPermission");
90       }
91       catch (IllegalArgumentException JavaDoc ignored)
92       {
93       }
94    }
95
96    public void testInvalidMBeanPermissionBecauseInvalidActions() throws Exception JavaDoc
97    {
98       try
99       {
100          new MBeanPermission JavaDoc("*", null);
101          fail("Invalid MBeanPermission");
102       }
103       catch (IllegalArgumentException JavaDoc ignored)
104       {
105       }
106
107       try
108       {
109          new MBeanPermission JavaDoc("com.*[d:k=v]", null);
110          fail("Invalid MBeanPermission");
111       }
112       catch (IllegalArgumentException JavaDoc ignored)
113       {
114       }
115
116       try
117       {
118          new MBeanPermission JavaDoc("com.*[d:k=v]", null);
119          fail("Invalid MBeanPermission");
120       }
121       catch (IllegalArgumentException JavaDoc ignored)
122       {
123       }
124
125       try
126       {
127          new MBeanPermission JavaDoc("com.*[d:k=v]", "");
128          fail("Invalid MBeanPermission");
129       }
130       catch (IllegalArgumentException JavaDoc ignored)
131       {
132       }
133
134       try
135       {
136          new MBeanPermission JavaDoc("com.*[d:k=v]", " ");
137          fail("Invalid MBeanPermission");
138       }
139       catch (IllegalArgumentException JavaDoc ignored)
140       {
141       }
142
143       try
144       {
145          new MBeanPermission JavaDoc("com.*[d:k=v]", " , ");
146          fail("Invalid MBeanPermission");
147       }
148       catch (IllegalArgumentException JavaDoc ignored)
149       {
150       }
151    }
152
153    public void testValidMBeanPermissionZero() throws Exception JavaDoc
154    {
155       MBeanPermission JavaDoc mbp1 = new MBeanPermission JavaDoc("*", "*");
156       MBeanPermission JavaDoc mbp2 = new MBeanPermission JavaDoc(" *", "*");
157       MBeanPermission JavaDoc mbp3 = new MBeanPermission JavaDoc(" *", "* ");
158       MBeanPermission JavaDoc mbp4 = new MBeanPermission JavaDoc("*[*:*]", "*");
159       MBeanPermission JavaDoc mbp5 = new MBeanPermission JavaDoc("*#*[*:*]", "*");
160
161       // Test equality
162
shouldBeEqual(mbp1, mbp2);
163       shouldBeEqual(mbp2, mbp3);
164       shouldBeEqual(mbp3, mbp4);
165       shouldBeEqual(mbp4, mbp5);
166    }
167
168    public void testValidMBeanPermissionOne() throws Exception JavaDoc
169    {
170       MBeanPermission JavaDoc mbp1 = new MBeanPermission JavaDoc("[d:k=v]", "invoke");
171       MBeanPermission JavaDoc mbp2 = new MBeanPermission JavaDoc("*[d:k=v]", "invoke");
172       MBeanPermission JavaDoc mbp3 = new MBeanPermission JavaDoc("*#*[d:k=v]", "invoke");
173
174       shouldBeEqual(mbp1, mbp2);
175       shouldBeEqual(mbp2, mbp3);
176    }
177
178    public void testValidMBeanPermissionTwo() throws Exception JavaDoc
179    {
180       MBeanPermission JavaDoc mbp1 = new MBeanPermission JavaDoc("com.package.MyClass", "getAttribute");
181       MBeanPermission JavaDoc mbp2 = new MBeanPermission JavaDoc("com.package.MyClass#*", "getAttribute");
182       MBeanPermission JavaDoc mbp3 = new MBeanPermission JavaDoc("com.package.MyClass#*[*:*]", "getAttribute");
183
184       shouldBeEqual(mbp1, mbp2);
185       shouldBeEqual(mbp2, mbp3);
186    }
187
188    public void testValidMBeanPermissionThree() throws Exception JavaDoc
189    {
190       MBeanPermission JavaDoc mbp1 = new MBeanPermission JavaDoc("com.package.MyClass[d:k=v]", "setAttribute");
191       MBeanPermission JavaDoc mbp2 = new MBeanPermission JavaDoc("com.package.MyClass#*[d:k=v]", "setAttribute");
192
193       shouldBeEqual(mbp1, mbp2);
194    }
195
196    public void testValidMBeanPermissionFour() throws Exception JavaDoc
197    {
198       MBeanPermission JavaDoc mbp1 = new MBeanPermission JavaDoc("#Name[d:k=v]", "isInstanceOf");
199       MBeanPermission JavaDoc mbp2 = new MBeanPermission JavaDoc("*#Name[d:k=v]", "isInstanceOf");
200
201       shouldBeEqual(mbp1, mbp2);
202    }
203
204    public void testValidMBeanPermissionFive() throws Exception JavaDoc
205    {
206       MBeanPermission JavaDoc mbp1 = new MBeanPermission JavaDoc("-", "getMBeanInfo");
207       MBeanPermission JavaDoc mbp2 = new MBeanPermission JavaDoc("-#*[*:*]", "getMBeanInfo");
208
209       shouldBeEqual(mbp1, mbp2);
210    }
211
212    public void testValidMBeanPermissionSix() throws Exception JavaDoc
213    {
214       MBeanPermission JavaDoc mbp1 = new MBeanPermission JavaDoc("-#-", "getMBeanInfo");
215       MBeanPermission JavaDoc mbp2 = new MBeanPermission JavaDoc("-#-[*:*]", "getMBeanInfo");
216
217       shouldBeEqual(mbp1, mbp2);
218    }
219
220    public void testValidMBeanPermissionSeven() throws Exception JavaDoc
221    {
222       MBeanPermission JavaDoc mbp1 = new MBeanPermission JavaDoc("-#-[-]", "getMBeanInfo");
223    }
224
225    public void testValidMBeanPermissionEight() throws Exception JavaDoc
226    {
227       MBeanPermission JavaDoc mbp1 = new MBeanPermission JavaDoc("com.package.MyClass#Attr[d:k=v]", "*");
228       MBeanPermission JavaDoc mbp2 = new MBeanPermission JavaDoc("com.package.MyClass#Attr[d:k=v]", "invoke,*");
229
230       shouldBeEqual(mbp1, mbp2);
231    }
232
233    public void testValidMBeanPermissionNine() throws Exception JavaDoc
234    {
235       new MBeanPermission JavaDoc("*[d:k=v]", "addNotificationListener, *");
236       new MBeanPermission JavaDoc("*[d:k1=v1,k2=v2]", "removeNotificationListener, *");
237       new MBeanPermission JavaDoc("mx4j.*", "addNotificationListener, removeNotificationListener");
238       new MBeanPermission JavaDoc("mx4j.Foo#*", "addNotificationListener, removeNotificationListener");
239       new MBeanPermission JavaDoc("mx4j.Foo$Inner#*", "addNotificationListener, removeNotificationListener");
240       new MBeanPermission JavaDoc("mx4j.Foo#*[*:*]", "addNotificationListener, removeNotificationListener");
241       new MBeanPermission JavaDoc("mx4j.Foo$Inner#*[*:*]", "addNotificationListener, removeNotificationListener");
242       new MBeanPermission JavaDoc("mx4j.Foo#Bar[d:k=v]", "addNotificationListener, removeNotificationListener");
243       new MBeanPermission JavaDoc("mx4j.Foo$Inner#Bar[d:k=v]", "addNotificationListener, removeNotificationListener");
244    }
245
246    public void testMBeanPermissionWildcardAlwaysImplies() throws Exception JavaDoc
247    {
248       MBeanPermission JavaDoc wild = new MBeanPermission JavaDoc("*", "*");
249       shouldImply(wild, wild);
250       shouldImply(new MBeanPermission JavaDoc("*[*:*]", "*"), wild);
251       shouldImply(wild, new MBeanPermission JavaDoc("*[*:*]", "*"));
252       shouldImply(new MBeanPermission JavaDoc("*#*[*:*]", "*"), wild);
253       shouldImply(wild, new MBeanPermission JavaDoc("*#*[*:*]", "*"));
254
255       implies(wild, new MBeanPermission JavaDoc("com.*", "*"));
256       shouldImply(wild, new MBeanPermission JavaDoc("com.package.MyClass", "*"));
257       shouldImply(wild, new MBeanPermission JavaDoc("com.package.MyClass#Attribute", "*"));
258       shouldImply(wild, new MBeanPermission JavaDoc("com.package.MyClass#Attribute[d:k=v]", "*"));
259       shouldImply(wild, new MBeanPermission JavaDoc("com.package.MyClass#Attribute[d:k=v]", "getObjectInstance"));
260       shouldImply(wild, new MBeanPermission JavaDoc("-#-[-]", "*"));
261    }
262
263    public void testMBeanPermissionNilCardIsAlwaysImplied() throws Exception JavaDoc
264    {
265       String JavaDoc action = "queryNames";
266       MBeanPermission JavaDoc nil = new MBeanPermission JavaDoc("-#-[-]", action);
267
268       shouldImply(nil, nil);
269       shouldImply(new MBeanPermission JavaDoc("com.package.MyClass#Attr[d:k=v]", action), nil);
270    }
271
272    public void testMBeanPermissionQueryMBeansImpliesQueryNames() throws Exception JavaDoc
273    {
274       shouldImply(new MBeanPermission JavaDoc("*", "queryMBeans"), new MBeanPermission JavaDoc("*", "queryNames"));
275       shouldNotImply(new MBeanPermission JavaDoc("*", "queryMBeans"), new MBeanPermission JavaDoc("*", "queryNames, invoke"));
276    }
277
278    public void testMBeanPermissionShuffledActionsAreEquals() throws Exception JavaDoc
279    {
280       MBeanPermission JavaDoc mbp1 = new MBeanPermission JavaDoc("*", "addNotificationListener, removeNotificationListener");
281       MBeanPermission JavaDoc mbp2 = new MBeanPermission JavaDoc("*", "removeNotificationListener, addNotificationListener");
282
283       shouldBeEqual(mbp1, mbp2);
284    }
285
286    public void testMBeanPermissionImpliesOne() throws Exception JavaDoc
287    {
288       MBeanPermission JavaDoc implied = new MBeanPermission JavaDoc("mx4j.Foo#Bar[domain:k1=v1,k2=v2]", "invoke");
289       MBeanPermission JavaDoc all = new MBeanPermission JavaDoc("*", "*");
290
291       shouldImply(implied, implied);
292
293       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[domain:k2=v2,k1=v1]", "invoke"), implied);
294       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[domain:k1=v1,k2=v2]", "invoke,getAttribute"), implied);
295       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[domain:k1=v1,k2=v2]", "setAttribute,invoke"), implied);
296       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[domain:k1=v1,k2=v2]", "invoke,*"), implied);
297       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[domain:k1=v1,k2=v2]", "*"), implied);
298
299       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[domain:k1=v1,*]", "invoke"), implied);
300       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[domain:k2=v2,*]", "invoke"), implied);
301       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[domain:*]", "invoke"), implied);
302       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[dom?in:k1=v1,k2=v2]", "invoke"), implied);
303       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[do*in:k1=v1,k2=v2]", "invoke"), implied);
304       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[*:k1=v1,k2=v2]", "invoke"), implied);
305       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[*:*]", "invoke"), implied);
306       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar", "invoke"), implied);
307
308       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar*[domain:k1=v1,k2=v2]", "invoke"), implied);
309       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#B*[domain:k1=v1,k2=v2]", "invoke"), implied);
310       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#*[domain:k1=v1,k2=v2]", "invoke"), implied);
311       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo[domain:k1=v1,k2=v2]", "invoke"), implied);
312       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar*", "invoke"), implied);
313       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#B*", "invoke"), implied);
314       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo#*", "invoke"), implied);
315       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo", "invoke"), implied);
316
317       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo*#Bar[domain:k1=v1,k2=v2]", "invoke"), implied);
318       shouldImply(new MBeanPermission JavaDoc("mx4j.*#Bar[domain:k1=v1,k2=v2]", "invoke"), implied);
319       shouldImply(new MBeanPermission JavaDoc("*#Bar[domain:k1=v1,k2=v2]", "invoke"), implied);
320       shouldImply(new MBeanPermission JavaDoc("#Bar[domain:k1=v1,k2=v2]", "invoke"), implied);
321       shouldImply(new MBeanPermission JavaDoc("mx4j.*#Bar", "invoke"), implied);
322       shouldImply(new MBeanPermission JavaDoc("*#Bar", "invoke"), implied);
323       shouldImply(new MBeanPermission JavaDoc("#Bar", "invoke"), implied);
324       shouldImply(new MBeanPermission JavaDoc("mx4j.*", "invoke"), implied);
325       shouldImply(new MBeanPermission JavaDoc("*", "invoke"), implied);
326
327       shouldImply(new MBeanPermission JavaDoc("mx4j.Foo*#*[domain:k1=v1,k2=v2]", "invoke"), implied);
328       shouldImply(new MBeanPermission JavaDoc("[domain:k1=v1,k2=v2]", "invoke"), implied);
329
330       shouldImply(all, implied);
331
332       shouldImply(new MBeanPermission JavaDoc("[]", "*"), all);
333       shouldImply(implied, new MBeanPermission JavaDoc(null, null, null, "invoke"));
334    }
335
336    public void testMBeanPermissionNotImpliesOne() throws Exception JavaDoc
337    {
338       MBeanPermission JavaDoc notImplied = new MBeanPermission JavaDoc("mx4j.Foo#Bar[d:k=v]", "invoke, getObjectInstance");
339
340       // Different actions
341
shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[d:k=v]", "getAttribute"), notImplied);
342       shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[d:k=v]", "getAttribute,setAttribute"), notImplied);
343       shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[d:k=v]", "invoke,setAttribute"), notImplied);
344       shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[d:k=v]", "setAttribute,getObjectInstance"), notImplied);
345       shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[d:k=v]", "getObjectInstance,getAttribute"), notImplied);
346
347       // Different objectname
348
shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[d:k=v1]", "invoke, getObjectInstance"), notImplied);
349       shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[d:k=v,k1=v1]", "invoke, getObjectInstance"), notImplied);
350       shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo#Bar[:k=v]", "invoke, getObjectInstance"), notImplied);
351
352       // Different attribute
353
shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo#Baz[d:k=v]", "invoke, getObjectInstance"), notImplied);
354
355       // Different class
356
shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo.Baz#Bar[d:k=v]", "invoke, getObjectInstance"), notImplied);
357       shouldNotImply(new MBeanPermission JavaDoc("mx4j.Foo$Inner#Bar[d:k=v]", "invoke, getObjectInstance"), notImplied);
358       shouldNotImply(new MBeanPermission JavaDoc("dummy.Foo#Bar[d:k=v]", "invoke, getObjectInstance"), notImplied);
359    }
360
361    public void testMBeanPermissionSerialization() throws Exception JavaDoc
362    {
363       MBeanPermission JavaDoc permission = new MBeanPermission JavaDoc("mx4j.Foo#Bar[domain:key=value]", "invoke");
364
365       ByteArrayOutputStream JavaDoc baos = new ByteArrayOutputStream JavaDoc();
366       ObjectOutputStream JavaDoc oos = new ObjectOutputStream JavaDoc(baos);
367       oos.writeObject(permission);
368       oos.close();
369
370       ByteArrayInputStream JavaDoc bais = new ByteArrayInputStream JavaDoc(baos.toByteArray());
371       ObjectInputStream JavaDoc ois = new ObjectInputStream JavaDoc(bais);
372       MBeanPermission JavaDoc deserialized = (MBeanPermission JavaDoc)ois.readObject();
373       ois.close();
374
375       if (!(deserialized.equals(permission))) fail("Serialization/Deserialization failed");
376    }
377
378    private void implies(MBeanPermission JavaDoc p1, MBeanPermission JavaDoc p2)
379    {
380       if (!imply(p1, p2)) fail("Permission " + p1 + " should imply Permission " + p2);
381    }
382 }
383
Popular Tags