1 16 package org.apache.pluto.portalImpl.portlet.test; 17 18 import java.io.IOException ; 19 import java.util.Enumeration ; 20 import java.util.Map ; 21 22 import javax.portlet.PortletPreferences; 23 import javax.portlet.PortletRequest; 24 import javax.portlet.ReadOnlyException; 25 import javax.portlet.ValidatorException; 26 27 30 public class SimplePreferenceTest 31 extends ActionAbstractReflectivePortletTest 32 implements ActionTest { 33 34 private static final String BOGUS_KEY = "org.apache.pluto.testsuite.BOGUS_KEY"; 35 36 public String getTestSuiteName() { 37 return "Simple Preferences Test"; 38 } 39 40 protected TestResult checkGetEmptyPreference(PortletRequest req) { 41 TestResult res = new TestResult(); 42 res.setName("Get Empty Preference Test"); 43 res.setDesc("Ensure proper default is returned when a non-existing preference is requested."); 44 PortletPreferences preferences = req.getPreferences(); 45 String preference = preferences.getValue("nonexistence!", "Default"); 46 if(preference.equals("Default")) { 47 res.setReturnCode(TestResult.PASSED); 48 } 49 else { 50 res.setReturnCode(TestResult.FAILED); 51 res.setResults("Preferences value was '"+preference+"' expected 'permanent'."); 52 } 53 return res; 54 } 55 56 protected TestResult checkGetEmptyPreferences(PortletRequest req) { 57 TestResult res = new TestResult(); 58 res.setName("Get Empty Preferences Test"); 59 res.setDesc("Ensure proper defaults are returned when a non-existent preference set is requested."); 60 PortletPreferences preferences = req.getPreferences(); 61 String [] preference = preferences.getValues("nonexistence!", new String [] {"Default"}); 62 if(preference.length == 1 && preference[0].equals("Default")) { 63 res.setReturnCode(TestResult.PASSED); 64 } 65 else { 66 res.setReturnCode(TestResult.FAILED); 67 res.setResults("Preferences value was '"+preference[0]+"' expected 'permanent'."); 68 } 69 return res; 70 } 71 72 73 protected TestResult checkGetPreferences(PortletRequest req) { 74 TestResult res = new TestResult(); 75 res.setName("Get Preference Test"); 76 res.setDesc("Tests that preferences defined in the deployment descriptor may be retrieved."); 77 PortletPreferences preferences = req.getPreferences(); 78 String preference = preferences.getValue("dummyName", "defaultValue"); 79 if(preference.equals("dummyValue")) { 80 res.setReturnCode(TestResult.PASSED); 81 } 82 else { 83 res.setReturnCode(TestResult.FAILED); 84 res.setResults("Preferences value was '"+preference+"' expected 'dummyValue'."); 85 } 86 return res; 87 } 88 89 protected TestResult checkSetPreference(PortletRequest req) { 90 TestResult res = new TestResult(); 91 res.setName("Set Preference Test"); 92 res.setDesc("Ensure a single preference can be set"); 93 94 PortletPreferences preferences = req.getPreferences(); 95 try { 96 preferences.setValue("TEST", "TEST_VALUE"); 97 } 98 catch(ReadOnlyException roe) { 99 res.setReturnCode(TestResult.FAILED); 100 res.setResults(roe.getMessage()); 101 return res; 102 } 103 104 String preference = preferences.getValue("TEST", "Error!"); 105 if(preference.equals("TEST_VALUE")) { 106 res.setReturnCode(TestResult.PASSED); 107 } 108 else { 109 res.setReturnCode(TestResult.FAILED); 110 res.setResults("Preferences value was '"+preference+"' expected 'permanent'."); 111 } 112 return res; 113 } 114 115 protected TestResult checkSetPreferences(PortletRequest req) { 116 TestResult res = new TestResult(); 117 res.setName("Set Preferences Test"); 118 res.setDesc("Ensure preferences can be set."); 119 120 PortletPreferences preferences = req.getPreferences(); 121 try { 122 preferences.setValues("TEST", new String [] {"TEST_VALUE", "ANOTHER"}); 123 } 124 catch(ReadOnlyException roe) { 125 res.setReturnCode(TestResult.FAILED); 126 res.setResults(roe.getMessage()); 127 return res; 128 } 129 130 String [] preference = preferences.getValues("TEST", new String [] { "Error!" }); 131 if(preference.length == 2 && preference[0].equals("TEST_VALUE") && 132 preference[1].equals("ANOTHER")) { 133 res.setReturnCode(TestResult.PASSED); 134 } 135 else { 136 res.setReturnCode(TestResult.FAILED); 137 res.setResults("Preferences value was '"+preference+"' expected 'permanent'."); 138 } 139 return res; 140 } 141 142 protected TestResult checkSetPreferencesReturnsFirst(PortletRequest req) { 143 TestResult res = new TestResult(); 144 res.setName("Set Preferences Test"); 145 res.setDesc("Ensure preferences can be set."); 146 147 PortletPreferences preferences = req.getPreferences(); 148 try { 149 preferences.setValues("TEST", new String [] {"TEST_VALUE", "ANOTHER"}); 150 } 151 catch(ReadOnlyException roe) { 152 res.setReturnCode(TestResult.FAILED); 153 res.setResults(roe.getMessage()); 154 return res; 155 } 156 157 String preference = preferences.getValue("TEST", "Error!"); 158 if(preference.equals("TEST_VALUE")) { 159 res.setReturnCode(TestResult.PASSED); 160 } 161 else { 162 res.setReturnCode(TestResult.FAILED); 163 res.setResults("Preferences value was '"+preference+"' expected 'permanent'."); 164 } 165 return res; 166 } 167 168 protected TestResult checkPreferenceValidator(PortletRequest req) { 169 TestResult res = new TestResult(); 170 res.setName("Preference Validator Test"); 171 res.setDesc("Check to make sure that the validator catches invalid preferences."); 172 173 PortletPreferences preferences = req.getPreferences(); 174 boolean exceptionThrown = false; 175 try { 176 preferences.setValue("VALIDATION_TEST_KEY", " Spaces removed by trim "); 177 preferences.store(); 178 } 179 catch (ReadOnlyException roe) { 180 181 } 182 catch (ValidatorException e) { 183 exceptionThrown = true; 184 try { preferences.reset("VALIDATION_TEST_KEY"); }catch(Throwable t) {} 185 } 186 catch (IOException io) { 187 188 } 189 190 if(exceptionThrown) { 191 res.setReturnCode(TestResult.PASSED); 192 } 193 else { 194 res.setReturnCode(TestResult.FAILED); 195 res.setResults("Illegal value not caught by validator."); 196 } 197 return res; 198 } 199 200 protected TestResult checkStorePreferences(PortletRequest req) { 201 TestResult res = new TestResult(); 202 res.setName("Preference Store Test"); 203 res.setDesc("Ensure storage works."); 204 205 PortletPreferences preferences = req.getPreferences(); 206 boolean setOccured = false; 207 boolean storeOccured = false; 208 try { 209 preferences.setValue("dummyName", "notTheOriginal"); 210 String pref = preferences.getValue("dummyName", "Default"); 211 if("notTheOriginal".equals(pref)) { 212 setOccured = true; 213 } 214 215 preferences.store(); 216 if("notTheOriginal".equals(preferences.getValue("dummyName", "Default"))) { 217 storeOccured = true; 218 } 219 220 preferences.reset("dummyName"); 221 } 222 catch(ReadOnlyException roe) { 223 224 } 225 catch(ValidatorException ve) { 226 227 } 228 catch(IOException io) { 229 230 } 231 232 if(setOccured && storeOccured) { 233 res.setReturnCode(TestResult.PASSED); 234 } 235 else if (!setOccured) { 236 res.setReturnCode(TestResult.WARNING); 237 res.setResults("A function upon which the reset test depends failed to execute as expected. Check the other test results in this test suite."); 238 } 239 else { 240 res.setReturnCode(TestResult.FAILED); 241 res.setResults("Preferences not successfully stored."); 242 } 243 return res; 244 } 245 246 protected TestResult checkResetPreferences(PortletRequest req) { 247 TestResult res = new TestResult(); 248 res.setName("Reset Preference Test"); 249 res.setDesc("Tests that preferences are properly reset."); 250 PortletPreferences preferences = req.getPreferences(); 251 boolean setOccured = false; 252 boolean storeOccured = false; 253 boolean resetOccured = false; 254 try { 255 preferences.setValue("dummyName", "notTheOriginal"); 256 String pref = preferences.getValue("dummyName", "Default"); 257 if("notTheOriginal".equals(pref)) { 258 setOccured = true; 259 } 260 261 preferences.store(); 262 if("notTheOriginal".equals(preferences.getValue("dummyName", "Default"))) { 263 storeOccured = true; 264 } 265 266 preferences.reset("dummyName"); 267 268 String preference = preferences.getValue("dummyName", "defaultValue"); 269 if(preference.equals("dummyValue")) { 270 resetOccured = true; 271 } 272 } 273 catch(ReadOnlyException roe) { 274 roe.printStackTrace(); 275 } 276 catch(ValidatorException ve) { 277 ve.printStackTrace(); 278 } 279 catch(IOException io) { 280 io.printStackTrace(); 281 } 282 283 if(setOccured && storeOccured && resetOccured) { 284 res.setReturnCode(TestResult.PASSED); 285 } 286 else if(!setOccured || !storeOccured) { 287 res.setReturnCode(TestResult.WARNING); 288 res.setResults("A function upon which the reset test depends failed to execute as expected. Check the other test results in this test suite."); 289 } 290 else { 291 res.setReturnCode(TestResult.FAILED); 292 res.setResults("Preferences value was not successfully reset after store"); 293 } 294 295 return res; 296 } 297 298 protected TestResult checkResetToNullPreferences(PortletRequest req) { 299 TestResult res = new TestResult(); 300 res.setName("Reset to Null Preference Test"); 301 res.setDesc("Tests that preferences are properly reset when originally null."); 302 PortletPreferences preferences = req.getPreferences(); 303 boolean setOccured = false; 304 boolean storeOccured = false; 305 boolean resetOccured = false; 306 try { 307 preferences.setValue(BOGUS_KEY, "notTheOriginal"); 308 String pref = preferences.getValue(BOGUS_KEY, "Default"); 309 if("notTheOriginal".equals(pref)) { 310 setOccured = true; 311 } 312 313 preferences.store(); 314 if("notTheOriginal".equals(preferences.getValue(BOGUS_KEY, "Default"))) { 315 storeOccured = true; 316 } 317 318 preferences.reset(BOGUS_KEY); 319 320 String preference = preferences.getValue(BOGUS_KEY, "defaultValue"); 321 if("defaultValue".equals(preference)) { 322 resetOccured = true; 323 } 324 } 325 catch(ReadOnlyException roe) { 326 roe.printStackTrace(); 327 } 328 catch(ValidatorException ve) { 329 ve.printStackTrace(); 330 } 331 catch(IOException io) { 332 io.printStackTrace(); 333 } 334 335 if(setOccured && storeOccured && resetOccured) { 336 res.setReturnCode(TestResult.PASSED); 337 } 338 else if(!setOccured || !storeOccured) { 339 res.setReturnCode(TestResult.WARNING); 340 res.setResults("A function upon which the reset test depends failed to execute as expected. Check the other test results in this test suite."); 341 } 342 else { 343 res.setReturnCode(TestResult.FAILED); 344 res.setResults("Preferences value was not successfully reset after store."); 345 } 346 return res; 347 } 348 349 protected TestResult checkReadOnlyPreferences(PortletRequest req) { 350 TestResult res = new TestResult(); 351 res.setName("Preference Read Only Test"); 352 res.setDesc("Check to make sure that read only preferences may not be set."); 353 354 PortletPreferences preferences = req.getPreferences(); 355 boolean exceptionThrown = false; 356 try { 357 preferences.setValue("readonly", "written"); 358 } 359 catch (ReadOnlyException roe) { 360 exceptionThrown = true; 361 } 362 363 if(exceptionThrown) { 364 res.setReturnCode(TestResult.PASSED); 365 } 366 else { 367 res.setReturnCode(TestResult.FAILED); 368 res.setResults("Read Only Preference was written."); 369 } 370 371 return res; 372 } 373 374 protected TestResult checkGetPreferenceMap(PortletRequest req) { 375 TestResult res = checkGetPreferenceNames(req); 376 res.setName("Preference Map Test."); 377 res.setDesc("Ensure returned map is valid"); 378 return res; 379 } 380 381 protected TestResult checkGetPreferenceNames(PortletRequest req) { 382 TestResult res = new TestResult(); 383 res.setName("Preference Names Enumeration Test."); 384 res.setDesc("Ensure returned enumeration is valid"); 385 386 PortletPreferences prefs = req.getPreferences(); 387 Map map = prefs.getMap(); 388 Enumeration enumerator= prefs.getNames(); 389 boolean hasAll = true; 390 while(enumerator.hasMoreElements()) { 391 if(!map.containsKey(enumerator.nextElement())) { 392 hasAll = false; 393 break; 394 } 395 } 396 397 if(hasAll) { 398 res.setReturnCode(TestResult.PASSED); 399 } 400 else { 401 res.setReturnCode(TestResult.FAILED); 402 res.setResults("All names not found as preferences."); 403 } 404 return res; 405 } 406 407 408 } 409 | Popular Tags |