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 package fr.paris.lutece.portal.web.features;
35
36 import java.math.BigInteger;
37 import java.security.SecureRandom;
38 import java.util.Random;
39
40 import org.junit.Test;
41 import org.springframework.mock.web.MockHttpServletRequest;
42
43 import fr.paris.lutece.portal.business.right.FeatureGroup;
44 import fr.paris.lutece.portal.business.right.FeatureGroupHome;
45 import fr.paris.lutece.portal.business.right.Right;
46 import fr.paris.lutece.portal.business.right.RightHome;
47 import fr.paris.lutece.portal.business.user.AdminUser;
48 import fr.paris.lutece.portal.service.admin.AccessDeniedException;
49 import fr.paris.lutece.portal.service.admin.PasswordResetException;
50 import fr.paris.lutece.portal.service.message.AdminMessage;
51 import fr.paris.lutece.portal.service.message.AdminMessageService;
52 import fr.paris.lutece.portal.service.security.SecurityTokenService;
53 import fr.paris.lutece.test.LuteceTestCase;
54 import fr.paris.lutece.test.Utils;
55
56 public class ExternalFeaturesJspBeanTest extends LuteceTestCase
57 {
58
59 private static final String PARAMETER_ID_EXTERNAL_FEAUTRE = "external_feature_id";
60 private static final String TEST_EXTERNAL_FEATURE_ID = "CORE_TEST";
61
62
63 private static final String RIGHT_ID = "CORE_TEST";
64 private static final String NAMEKEY = "nameKeyTest";
65 private static final String DESCRIPTIONKEY = "descriptionKeyTest";
66 private static final int LEVEL = 0;
67 private static final String URL = "urlTest";
68 private static final String PLUGINNAME = "pluginNameTest";
69 private static final String FEATUREGROUP = "featureGroupTest";
70 private static final String ICONURL = "iconUrlTest";
71 private static final boolean IS_EXTERNAL_FEATURE = true;
72 private Right _right;
73 private FeatureGroup _featureGroup;
74
75 @Override
76 protected void setUp( ) throws Exception
77 {
78 super.setUp( );
79 _right = new Right( );
80 _right.setId( RIGHT_ID );
81 _right.setNameKey( NAMEKEY );
82 _right.setDescriptionKey( DESCRIPTIONKEY );
83 _right.setLevel( LEVEL );
84 _right.setUrl( URL );
85 _right.setPluginName( PLUGINNAME );
86 _right.setFeatureGroup( FEATUREGROUP );
87 _right.setIconUrl( ICONURL );
88 _right.setExternalFeature( IS_EXTERNAL_FEATURE );
89 RightHome.create( _right );
90
91 _featureGroup = new FeatureGroup( );
92 _featureGroup.setId( FEATUREGROUP );
93 _featureGroup.setLabelKey( FEATUREGROUP );
94 _featureGroup.setDescriptionKey( FEATUREGROUP );
95 FeatureGroupHome.create( _featureGroup );
96 }
97
98 @Override
99 protected void tearDown( ) throws Exception
100 {
101 RightHome.remove( RIGHT_ID );
102 FeatureGroupHome.remove( FEATUREGROUP );
103 super.tearDown( );
104 }
105
106
107
108
109 @Test
110 public void testGetCreateExternalFeature( ) throws AccessDeniedException
111 {
112 MockHttpServletRequest request = new MockHttpServletRequest( );
113 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
114
115 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
116 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
117 assertNotNull( instance.getCreateExternalFeature( request ) );
118 }
119
120
121
122
123 @Test
124 public void testGetModifyExternalFeature( ) throws AccessDeniedException
125 {
126 MockHttpServletRequest request = new MockHttpServletRequest( );
127 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
128 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
129
130 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
131 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
132 assertNotNull( instance.getModifyExternalFeature( request ) );
133 }
134
135
136
137
138
139
140 @Test
141 public void testDoModifyExternalFeature( ) throws AccessDeniedException
142 {
143 MockHttpServletRequest request = new MockHttpServletRequest( );
144 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
145 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
146
147 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
148 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
149 String strRandom = getRandomName( );
150 request.setParameter( "id", _right.getId( ) );
151 request.setParameter( "nameKey", strRandom );
152 request.setParameter( "descriptionKey", strRandom );
153 request.setParameter( "level_id", "0" );
154 request.setParameter( "url", strRandom );
155 request.setParameter( "pluginName", strRandom );
156 request.setParameter( "feature_group_id", FeatureGroupHome.getFeatureGroupsList( ).get( 0 ).getId( ) );
157 request.setParameter( "iconUrl", strRandom );
158 request.setParameter( "externalFeature", "false" );
159 request.setParameter( "documentationUrl", strRandom );
160
161 instance.getModifyExternalFeature( request );
162 request.setParameter( SecurityTokenService.PARAMETER_TOKEN,
163 SecurityTokenService.getInstance( ).getToken( request, "admin/features/modify_external_feature.html" ) );
164 instance.doModifyExternalFeature( request );
165
166 Right right = RightHome.findByPrimaryKey( _right.getId( ) );
167 assertNotNull( right );
168 assertEquals( strRandom, right.getNameKey( ) );
169 assertEquals( strRandom, right.getDescriptionKey( ) );
170 assertEquals( 0, right.getLevel( ) );
171 assertEquals( strRandom, right.getUrl( ) );
172 assertEquals( strRandom, right.getPluginName( ) );
173 assertEquals( FeatureGroupHome.getFeatureGroupsList( ).get( 0 ).getId( ), right.getFeatureGroup( ) );
174 assertEquals( strRandom, right.getIconUrl( ) );
175 assertTrue( right.isExternalFeature( ) );
176 assertEquals( strRandom, right.getDocumentationUrl( ) );
177 }
178
179 public void testDoModifyExternalFeatureInvalidToken( ) throws AccessDeniedException
180 {
181 MockHttpServletRequest request = new MockHttpServletRequest( );
182 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
183 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
184
185 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
186 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
187 String strRandom = getRandomName( );
188 request.setParameter( "id", _right.getId( ) );
189 request.setParameter( "nameKey", strRandom );
190 request.setParameter( "descriptionKey", strRandom );
191 request.setParameter( "level_id", "0" );
192 request.setParameter( "url", strRandom );
193 request.setParameter( "pluginName", strRandom );
194 request.setParameter( "feature_group_id", FeatureGroupHome.getFeatureGroupsList( ).get( 0 ).getId( ) );
195 request.setParameter( "iconUrl", strRandom );
196 request.setParameter( "externalFeature", "false" );
197 request.setParameter( "documentationUrl", strRandom );
198
199 instance.getModifyExternalFeature( request );
200 request.setParameter( SecurityTokenService.PARAMETER_TOKEN,
201 SecurityTokenService.getInstance( ).getToken( request, "admin/features/modify_external_feature.html" ) + "b" );
202 try
203 {
204 instance.doModifyExternalFeature( request );
205 fail( "Should have thrown" );
206 }
207 catch( AccessDeniedException e )
208 {
209 Right right = RightHome.findByPrimaryKey( _right.getId( ) );
210 assertNotNull( right );
211 assertEquals( _right.getNameKey( ), right.getNameKey( ) );
212 assertEquals( _right.getDescriptionKey( ), right.getDescriptionKey( ) );
213 assertEquals( _right.getLevel( ), right.getLevel( ) );
214 assertEquals( _right.getUrl( ), right.getUrl( ) );
215 assertEquals( _right.getPluginName( ), right.getPluginName( ) );
216 assertEquals( _right.getFeatureGroup( ), right.getFeatureGroup( ) );
217 assertEquals( _right.getIconUrl( ), right.getIconUrl( ) );
218 assertTrue( right.isExternalFeature( ) );
219 assertEquals( _right.getDocumentationUrl( ), right.getDocumentationUrl( ) );
220 }
221 }
222
223 public void testDoModifyExternalFeatureNoToken( ) throws AccessDeniedException
224 {
225 MockHttpServletRequest request = new MockHttpServletRequest( );
226 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
227 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
228
229 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
230 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
231 String strRandom = getRandomName( );
232 request.setParameter( "id", _right.getId( ) );
233 request.setParameter( "nameKey", strRandom );
234 request.setParameter( "descriptionKey", strRandom );
235 request.setParameter( "level_id", "0" );
236 request.setParameter( "url", strRandom );
237 request.setParameter( "pluginName", strRandom );
238 request.setParameter( "feature_group_id", FeatureGroupHome.getFeatureGroupsList( ).get( 0 ).getId( ) );
239 request.setParameter( "iconUrl", strRandom );
240 request.setParameter( "externalFeature", "false" );
241 request.setParameter( "documentationUrl", strRandom );
242
243 instance.getModifyExternalFeature( request );
244
245 try
246 {
247 instance.doModifyExternalFeature( request );
248 fail( "Should have thrown" );
249 }
250 catch( AccessDeniedException e )
251 {
252 Right right = RightHome.findByPrimaryKey( _right.getId( ) );
253 assertNotNull( right );
254 assertEquals( _right.getNameKey( ), right.getNameKey( ) );
255 assertEquals( _right.getDescriptionKey( ), right.getDescriptionKey( ) );
256 assertEquals( _right.getLevel( ), right.getLevel( ) );
257 assertEquals( _right.getUrl( ), right.getUrl( ) );
258 assertEquals( _right.getPluginName( ), right.getPluginName( ) );
259 assertEquals( _right.getFeatureGroup( ), right.getFeatureGroup( ) );
260 assertEquals( _right.getIconUrl( ), right.getIconUrl( ) );
261 assertTrue( right.isExternalFeature( ) );
262 assertEquals( _right.getDocumentationUrl( ), right.getDocumentationUrl( ) );
263 }
264 }
265
266
267
268
269
270
271
272 @Test
273 public void testDoCreateExternalFeature( ) throws PasswordResetException, AccessDeniedException
274 {
275 MockHttpServletRequest request = new MockHttpServletRequest( );
276 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
277 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
278
279 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
280 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
281 String strRandom = getRandomName( );
282 request.setParameter( "id", strRandom );
283 request.setParameter( "nameKey", strRandom );
284 request.setParameter( "descriptionKey", strRandom );
285 request.setParameter( "level_id", "0" );
286 request.setParameter( "url", strRandom );
287 request.setParameter( "pluginName", strRandom );
288 request.setParameter( "feature_group_id", FeatureGroupHome.getFeatureGroupsList( ).get( 0 ).getId( ) );
289 request.setParameter( "iconUrl", strRandom );
290 request.setParameter( "externalFeature", "false" );
291 request.setParameter( "documentationUrl", strRandom );
292 request.setParameter( SecurityTokenService.PARAMETER_TOKEN,
293 SecurityTokenService.getInstance( ).getToken( request, "admin/features/create_external_feature.html" ) );
294
295 instance.doCreateExternalFeature( request );
296
297 try
298 {
299 Right right = RightHome.findByPrimaryKey( strRandom );
300 assertNotNull( right );
301 assertEquals( strRandom, right.getNameKey( ) );
302 assertEquals( strRandom, right.getDescriptionKey( ) );
303 assertEquals( 0, right.getLevel( ) );
304 assertEquals( strRandom, right.getUrl( ) );
305 assertEquals( strRandom, right.getPluginName( ) );
306 assertEquals( FeatureGroupHome.getFeatureGroupsList( ).get( 0 ).getId( ), right.getFeatureGroup( ) );
307 assertEquals( strRandom, right.getIconUrl( ) );
308 assertTrue( right.isExternalFeature( ) );
309 assertEquals( strRandom, right.getDocumentationUrl( ) );
310 }
311 finally
312 {
313 RightHome.remove( strRandom );
314 }
315 }
316
317 private String getRandomName( )
318 {
319 Random rand = new SecureRandom( );
320 BigInteger bigInt = new BigInteger( 128, rand );
321 return "junit" + bigInt.toString( 36 );
322 }
323
324 public void testDoCreateExternalFeatureInvalidToken( ) throws PasswordResetException, AccessDeniedException
325 {
326 MockHttpServletRequest request = new MockHttpServletRequest( );
327 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
328 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
329
330 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
331 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
332 String strRandom = getRandomName( );
333 request.setParameter( "id", strRandom );
334 request.setParameter( "nameKey", strRandom );
335 request.setParameter( "descriptionKey", strRandom );
336 request.setParameter( "level_id", "0" );
337 request.setParameter( "url", strRandom );
338 request.setParameter( "pluginName", strRandom );
339 request.setParameter( "feature_group_id", FeatureGroupHome.getFeatureGroupsList( ).get( 0 ).getId( ) );
340 request.setParameter( "iconUrl", strRandom );
341 request.setParameter( "externalFeature", "false" );
342 request.setParameter( "documentationUrl", strRandom );
343 request.setParameter( SecurityTokenService.PARAMETER_TOKEN,
344 SecurityTokenService.getInstance( ).getToken( request, "admin/features/create_external_feature.html" ) + "b" );
345
346 try
347 {
348 instance.doCreateExternalFeature( request );
349 fail( "Should have thrown" );
350 }
351 catch( AccessDeniedException e )
352 {
353 Right right = RightHome.findByPrimaryKey( strRandom );
354 assertNull( right );
355 }
356 finally
357 {
358 RightHome.remove( strRandom );
359 }
360 }
361
362 public void testDoCreateExternalFeatureNoToken( ) throws PasswordResetException, AccessDeniedException
363 {
364 MockHttpServletRequest request = new MockHttpServletRequest( );
365 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
366 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
367
368 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
369 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
370 String strRandom = getRandomName( );
371 request.setParameter( "id", strRandom );
372 request.setParameter( "nameKey", strRandom );
373 request.setParameter( "descriptionKey", strRandom );
374 request.setParameter( "level_id", "0" );
375 request.setParameter( "url", strRandom );
376 request.setParameter( "pluginName", strRandom );
377 request.setParameter( "feature_group_id", FeatureGroupHome.getFeatureGroupsList( ).get( 0 ).getId( ) );
378 request.setParameter( "iconUrl", strRandom );
379 request.setParameter( "externalFeature", "false" );
380 request.setParameter( "documentationUrl", strRandom );
381
382 try
383 {
384 instance.doCreateExternalFeature( request );
385 fail( "Should have thrown" );
386 }
387 catch( AccessDeniedException e )
388 {
389 Right right = RightHome.findByPrimaryKey( strRandom );
390 assertNull( right );
391 }
392 finally
393 {
394 RightHome.remove( strRandom );
395 }
396 }
397
398
399
400
401 @Test
402 public void testGetRemoveExternalFeature( ) throws AccessDeniedException
403 {
404 MockHttpServletRequest request = new MockHttpServletRequest( );
405 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
406 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
407
408 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
409 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
410 instance.getRemoveExternalFeature( request );
411 AdminMessage message = AdminMessageService.getMessage( request );
412 assertNotNull( message );
413 assertTrue( message.getRequestParameters( ).containsKey( SecurityTokenService.PARAMETER_TOKEN ) );
414 }
415
416
417
418
419
420
421
422 @Test
423 public void testDoRemoveExternalFeature( ) throws PasswordResetException, AccessDeniedException
424 {
425 MockHttpServletRequest request = new MockHttpServletRequest( );
426 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
427 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
428
429 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
430 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
431 instance.getRemoveExternalFeature( request );
432 request.setParameter( SecurityTokenService.PARAMETER_TOKEN,
433 SecurityTokenService.getInstance( ).getToken( request, "jsp/admin/features/DoRemoveExternalFeature.jsp" ) );
434 instance.doRemoveExternalFeature( request );
435
436 Right right = RightHome.findByPrimaryKey( TEST_EXTERNAL_FEATURE_ID );
437 assertNull( right );
438 }
439
440 public void testDoRemoveExternalFeatureInvalidToken( ) throws PasswordResetException, AccessDeniedException
441 {
442 MockHttpServletRequest request = new MockHttpServletRequest( );
443 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
444 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
445
446 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
447 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
448 instance.getRemoveExternalFeature( request );
449 request.setParameter( SecurityTokenService.PARAMETER_TOKEN,
450 SecurityTokenService.getInstance( ).getToken( request, "jsp/admin/features/DoRemoveExternalFeature.jsp" ) + "b" );
451 try
452 {
453 instance.doRemoveExternalFeature( request );
454 fail( "Should have thrown" );
455 }
456 catch( AccessDeniedException e )
457 {
458 Right right = RightHome.findByPrimaryKey( TEST_EXTERNAL_FEATURE_ID );
459 assertNotNull( right );
460 }
461 }
462
463 public void testDoRemoveExternalFeatureNoToken( ) throws PasswordResetException, AccessDeniedException
464 {
465 MockHttpServletRequest request = new MockHttpServletRequest( );
466 request.addParameter( PARAMETER_ID_EXTERNAL_FEAUTRE, TEST_EXTERNAL_FEATURE_ID );
467 Utils.registerAdminUserWithRigth( request, new AdminUser( ), ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
468
469 ExternalFeaturesJspBean instance = new ExternalFeaturesJspBean( );
470 instance.init( request, ExternalFeaturesJspBean.RIGHT_EXTERNAL_FEATURES_MANAGEMENT );
471 instance.getRemoveExternalFeature( request );
472
473 try
474 {
475 instance.doRemoveExternalFeature( request );
476 fail( "Should have thrown" );
477 }
478 catch( AccessDeniedException e )
479 {
480 Right right = RightHome.findByPrimaryKey( TEST_EXTERNAL_FEATURE_ID );
481 assertNotNull( right );
482 }
483 }
484 }