1 /* CodebasesAttsNoDialogsTest1.java 2 Copyright (C) 2013 Red Hat, Inc. 3 4 This file is part of IcedTea. 5 6 IcedTea is free software; you can redistribute it and/or 7 modify it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, version 2. 9 10 IcedTea is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with IcedTea; see the file COPYING. If not, write to 17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 18 02110-1301 USA. 19 20 Linking this library statically or dynamically with other modules is 21 making a combined work based on this library. Thus, the terms and 22 conditions of the GNU General Public License cover the whole 23 combination. 24 25 As a special exception, the copyright holders of this library give you 26 permission to link this library with independent modules to produce an 27 executable, regardless of the license terms of these independent 28 modules, and to copy and distribute the resulting executable under 29 terms of your choice, provided that you also meet, for each linked 30 independent module, the terms and conditions of the license of that 31 module. An independent module is a module which is not derived from 32 or based on this library. If you modify this library, you may extend 33 this exception to your version of the library, but you are not 34 obligated to do so. If you do not wish to do so, delete this 35 exception statement from your version. 36 */ 37 38 import java.io.File; 39 import java.io.FileNotFoundException; 40 import java.io.FileOutputStream; 41 import java.io.IOException; 42 import java.io.InputStream; 43 import java.io.OutputStream; 44 import java.net.URL; 45 import java.util.AbstractMap; 46 import java.util.Arrays; 47 import java.util.Enumeration; 48 import java.util.List; 49 import java.util.zip.ZipEntry; 50 import java.util.zip.ZipFile; 51 import java.util.zip.ZipOutputStream; 52 import net.sourceforge.jnlp.OptionsDefinitions; 53 import net.sourceforge.jnlp.ProcessResult; 54 import net.sourceforge.jnlp.ServerAccess; 55 import net.sourceforge.jnlp.ServerLauncher; 56 import net.sourceforge.jnlp.annotations.Bug; 57 import net.sourceforge.jnlp.annotations.NeedsDisplay; 58 import net.sourceforge.jnlp.annotations.TestInBrowsers; 59 import net.sourceforge.jnlp.browsertesting.BrowserTest; 60 import net.sourceforge.jnlp.browsertesting.Browsers; 61 import net.sourceforge.jnlp.closinglisteners.AutoErrorClosingListener; 62 import net.sourceforge.jnlp.closinglisteners.AutoOkClosingListener; 63 import net.sourceforge.jnlp.config.DeploymentConfiguration; 64 import net.sourceforge.jnlp.runtime.ManifestAttributesChecker; 65 import net.sourceforge.jnlp.security.appletextendedsecurity.AppletSecurityLevel; 66 import net.sourceforge.jnlp.tools.DeploymentPropertiesModifier; 67 import net.sourceforge.jnlp.util.FileUtils; 68 import org.junit.AfterClass; 69 70 import org.junit.Assert; 71 import org.junit.BeforeClass; 72 import org.junit.Test; 73 74 /** 75 * 76 * null, empty, none, wrong, correct jnlp x html different codebases. 77 * 78 * no dialogs should be appeared. Second testsuite with ALL dialogs (head only) 79 * 80 * 81 */ 82 public class CodebasesAttsNoDialogsTest1 extends BrowserTest { 83 84 public static final String appletCloseString = AutoOkClosingListener.MAGICAL_OK_CLOSING_STRING; 85 public static final String[] JAVAWS_HTML_ARRAY = new String[]{OptionsDefinitions.OPTIONS.HTML.option}; 86 public static final List<String> JAVAWS_HTML_LIST = Arrays.asList(JAVAWS_HTML_ARRAY); 87 88 public static final String JNLPAPP = "CodebasesAttsApp.jnlp"; 89 public static final String JNLPAPPLET = "CodebasesAttsApplet.jnlp"; 90 public static final String HTML = "CodebasesAtts.html"; 91 public static final String HTMLHREF = "CodebasesAttsJnlpHref.html"; 92 public static final String CodebasesAtts = "CodebasesAtts"; 93 94 private static ServerLauncher emptyServer; 95 private static ServerLauncher secondValidServer; 96 private static DeploymentPropertiesModifier.MultipleDeploymentPropertiesModifier ensuredDP; 97 98 public static final String[] files = new String[]{"CodebasesAttsApp.jnlp", "CodebasesAtts.html", "CodebasesAttsApplet.jnlp", "CodebasesAttsJnlpHref.html"}; 99 100 @BeforeClass initSecondaryServers()101 public static void initSecondaryServers() throws IOException { 102 emptyServer = ServerAccess.getIndependentInstanceOnTmpDir(); 103 secondValidServer = ServerAccess.getIndependentInstanceOnTmpDir(); 104 } 105 106 @AfterClass stopSecondaryServers()107 public static void stopSecondaryServers() throws IOException { 108 emptyServer.stop(); 109 secondValidServer.stop(); 110 } 111 112 @BeforeClass setProperties()113 public static void setProperties() throws IOException { 114 ensuredDP = new DeploymentPropertiesModifier.MultipleDeploymentPropertiesModifier( 115 new AbstractMap.SimpleEntry(DeploymentConfiguration.KEY_ENABLE_MANIFEST_ATTRIBUTES_CHECK, ManifestAttributesChecker.MANIFEST_ATTRIBUTES_CHECK.NONE.name()), 116 new AbstractMap.SimpleEntry(DeploymentConfiguration.KEY_SECURITY_LEVEL, AppletSecurityLevel.ALLOW_UNSIGNED.name()) 117 ); 118 ensuredDP.setProperties(); 119 } 120 121 @AfterClass resetProperties()122 public static void resetProperties() throws IOException { 123 ensuredDP.restoreProperties(); 124 } 125 126 //jnlp app 127 @NeedsDisplay 128 @Test codebasesAttsTestWorksJnlp1_dot()129 public void codebasesAttsTestWorksJnlp1_dot() throws Exception { 130 prepare("\".\""); 131 ProcessResult pr = server.executeJavaws(JNLPAPP, new AutoOkClosingListener(), new AutoErrorClosingListener()); 132 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 133 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 134 Assert.assertTrue(pr.stdout.contains("id: 1")); 135 Assert.assertTrue(pr.stdout.contains("BID0")); 136 } 137 138 @NeedsDisplay 139 @Test codebasesAttsTestWorksJnlp1_empty()140 public void codebasesAttsTestWorksJnlp1_empty() throws Exception { 141 prepare("\"\""); 142 ProcessResult pr = server.executeJavaws(JNLPAPP, new AutoOkClosingListener(), new AutoErrorClosingListener()); 143 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 144 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 145 Assert.assertTrue(pr.stdout.contains("id: 1")); 146 Assert.assertTrue(pr.stdout.contains("BID0")); 147 } 148 149 @NeedsDisplay 150 @Test codebasesAttsTestWorksJnlp1_space()151 public void codebasesAttsTestWorksJnlp1_space() throws Exception { 152 prepare("\" \""); 153 ProcessResult pr = server.executeJavaws(JNLPAPP, new AutoOkClosingListener(), new AutoErrorClosingListener()); 154 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 155 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 156 Assert.assertTrue(pr.stdout.contains("id: 1")); 157 Assert.assertTrue(pr.stdout.contains("BID0")); 158 } 159 160 @NeedsDisplay 161 @Test codebasesAttsTestWorksJnlp1_spaces()162 public void codebasesAttsTestWorksJnlp1_spaces() throws Exception { 163 prepare("\" \""); 164 ProcessResult pr = server.executeJavaws(JNLPAPP, new AutoOkClosingListener(), new AutoErrorClosingListener()); 165 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 166 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 167 Assert.assertTrue(pr.stdout.contains("id: 1")); 168 Assert.assertTrue(pr.stdout.contains("BID0")); 169 } 170 171 @NeedsDisplay 172 @Test 173 @Bug(id = "PR2489") codebasesAttsTestWorksJnlp1_null()174 public void codebasesAttsTestWorksJnlp1_null() throws Exception { 175 prepare(null); 176 ProcessResult pr = server.executeJavaws(JNLPAPP, new AutoOkClosingListener(), new AutoErrorClosingListener()); 177 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 178 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 179 Assert.assertTrue(pr.stdout.contains("id: 1")); 180 Assert.assertTrue(pr.stdout.contains("BID0")); 181 } 182 183 @NeedsDisplay 184 @Test codebasesAttsTestWorksJnlp1_value()185 public void codebasesAttsTestWorksJnlp1_value() throws Exception { 186 prepare(server.getUrl().toString()); 187 ProcessResult pr = server.executeJavaws(JNLPAPP, new AutoOkClosingListener(), new AutoErrorClosingListener()); 188 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 189 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 190 Assert.assertTrue(pr.stdout.contains("id: 1")); 191 Assert.assertTrue(pr.stdout.contains("BID0")); 192 } 193 194 @NeedsDisplay 195 @Test 196 //all three are valid, but on l one bug is supported nows 197 @Bug(id = "http://icedtea.classpath.org/hg/icedtea-web/rev/22b7becd48a7") 198 //@Bug(id = "http://icedtea.classpath.org/hg/release/icedtea-web-1.6/rev/0d9faf51357d") 199 //@Bug(id = "http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2016-January/034446.html") codebasesAttsTestWorksJnlp1_value2()200 public void codebasesAttsTestWorksJnlp1_value2() throws Exception { 201 prepare(secondValidServer.getUrl().toString()); 202 ProcessResult pr = server.executeJavaws(JNLPAPP, new AutoOkClosingListener(), new AutoErrorClosingListener()); 203 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 204 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 205 Assert.assertTrue(pr.stdout.contains("id: 1")); //param comes from original jnlp, this will be visible on jnlp_href 206 Assert.assertTrue(pr.stdout.contains("BID2")); 207 } 208 209 @NeedsDisplay 210 @Test codebasesAttsTestWorksJnlp1_value3()211 public void codebasesAttsTestWorksJnlp1_value3() throws Exception { 212 prepare(secondValidServer.getUrl().toString()); 213 ProcessResult pr = server.executeJavawsUponUrl(null, new URL(secondValidServer.getUrl().toString() + "/" + JNLPAPP), new AutoOkClosingListener(), new AutoErrorClosingListener()); 214 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 215 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 216 Assert.assertTrue(pr.stdout.contains("id: 2")); 217 Assert.assertTrue(pr.stdout.contains("BID2")); 218 } 219 220 //value3 and 4 tests ar emoreover testing taht our three servers are working as expected. 221 @NeedsDisplay 222 @Test 223 //all three are valid, but on l one bug is supported now 224 @Bug(id = "http://icedtea.classpath.org/hg/release/icedtea-web-1.6/rev/0d9faf51357d") 225 //@Bug(id = "http://icedtea.classpath.org/hg/icedtea-web/rev/22b7becd48a7") 226 //@Bug(id = "http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2016-January/034446.html") codebasesAttsTestWorksJnlp1_value4()227 public void codebasesAttsTestWorksJnlp1_value4() throws Exception { 228 prepare(server.getUrl().toString()); 229 ProcessResult pr = server.executeJavawsUponUrl(null, new URL(secondValidServer.getUrl().toString() + "/" + JNLPAPP), new AutoOkClosingListener(), new AutoErrorClosingListener()); 230 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 231 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 232 Assert.assertTrue(pr.stdout.contains("id: 2")); //param comes from original jnlp, this will be visible on jnlp_href 233 Assert.assertTrue(pr.stdout.contains("BID0")); 234 } 235 236 //jnlp applet 237 @NeedsDisplay 238 @Test codebasesAttsTestWorksJnlp2_dot()239 public void codebasesAttsTestWorksJnlp2_dot() throws Exception { 240 prepare("\".\""); 241 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), new AutoErrorClosingListener()); 242 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 243 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 244 Assert.assertTrue(pr.stdout.contains("id: 1")); 245 Assert.assertTrue(pr.stdout.contains("BID0")); 246 } 247 248 @NeedsDisplay 249 @Test codebasesAttsTestWorksJnlp2_empty()250 public void codebasesAttsTestWorksJnlp2_empty() throws Exception { 251 prepare("\"\""); 252 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), new AutoErrorClosingListener()); 253 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 254 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 255 Assert.assertTrue(pr.stdout.contains("id: 1")); 256 Assert.assertTrue(pr.stdout.contains("BID0")); 257 } 258 259 @NeedsDisplay 260 @Test codebasesAttsTestWorksJnlp2_space()261 public void codebasesAttsTestWorksJnlp2_space() throws Exception { 262 prepare("\" \""); 263 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), new AutoErrorClosingListener()); 264 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 265 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 266 Assert.assertTrue(pr.stdout.contains("id: 1")); 267 Assert.assertTrue(pr.stdout.contains("BID0")); 268 } 269 270 @NeedsDisplay 271 @Test codebasesAttsTestWorksJnlp2_spaces()272 public void codebasesAttsTestWorksJnlp2_spaces() throws Exception { 273 prepare("\" \""); 274 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), new AutoErrorClosingListener()); 275 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 276 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 277 Assert.assertTrue(pr.stdout.contains("id: 1")); 278 Assert.assertTrue(pr.stdout.contains("BID0")); 279 } 280 281 @NeedsDisplay 282 @Test 283 @Bug(id = "PR2489") codebasesAttsTestWorksJnlp2_null()284 public void codebasesAttsTestWorksJnlp2_null() throws Exception { 285 prepare(null); 286 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), new AutoErrorClosingListener()); 287 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 288 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 289 Assert.assertTrue(pr.stdout.contains("id: 1")); 290 Assert.assertTrue(pr.stdout.contains("BID0")); 291 } 292 293 @NeedsDisplay 294 @Test codebasesAttsTestWorksJnlp2_value()295 public void codebasesAttsTestWorksJnlp2_value() throws Exception { 296 prepare(server.getUrl().toString()); 297 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), new AutoErrorClosingListener()); 298 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 299 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 300 Assert.assertTrue(pr.stdout.contains("id: 1")); 301 Assert.assertTrue(pr.stdout.contains("BID0")); 302 } 303 304 @NeedsDisplay 305 @Test 306 //all three are valid, but on l one bug is supported now 307 @Bug(id = "http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2016-January/034446.html") 308 //@Bug(id = "http://icedtea.classpath.org/hg/release/icedtea-web-1.6/rev/0d9faf51357d") 309 //@Bug(id = "http://icedtea.classpath.org/hg/icedtea-web/rev/22b7becd48a7") codebasesAttsTestWorksJnlp2_value2()310 public void codebasesAttsTestWorksJnlp2_value2() throws Exception { 311 prepare(secondValidServer.getUrl().toString()); 312 ProcessResult pr = server.executeJavaws(JNLPAPPLET, new AutoOkClosingListener(), new AutoErrorClosingListener()); 313 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 314 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 315 Assert.assertTrue(pr.stdout.contains("id: 1")); //param comes from original jnlp, this will be visible on jnlp_href 316 Assert.assertTrue(pr.stdout.contains("BID2")); 317 } 318 319 @NeedsDisplay 320 @Test codebasesAttsTestWorksJnlp2_value3()321 public void codebasesAttsTestWorksJnlp2_value3() throws Exception { 322 prepare(secondValidServer.getUrl().toString()); 323 ProcessResult pr = server.executeJavawsUponUrl(null, new URL(secondValidServer.getUrl().toString() + "/" + JNLPAPPLET), new AutoOkClosingListener(), new AutoErrorClosingListener()); 324 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 325 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 326 Assert.assertTrue(pr.stdout.contains("id: 2")); 327 Assert.assertTrue(pr.stdout.contains("BID2")); 328 } 329 330 //value3 and 4 tests ar emoreover testing taht our three servers are working as expected. 331 @NeedsDisplay 332 @Test 333 //all three are valid, but on l one bug is supported now 334 //@Bug(id = "http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2016-January/034446.html") 335 @Bug(id = "http://icedtea.classpath.org/hg/release/icedtea-web-1.6/rev/0d9faf51357d") 336 //@Bug(id = "http://icedtea.classpath.org/hg/icedtea-web/rev/22b7becd48a7") codebasesAttsTestWorksJnlp2_value4()337 public void codebasesAttsTestWorksJnlp2_value4() throws Exception { 338 prepare(server.getUrl().toString()); 339 ProcessResult pr = server.executeJavawsUponUrl(null, new URL(secondValidServer.getUrl().toString() + "/" + JNLPAPPLET), new AutoOkClosingListener(), new AutoErrorClosingListener()); 340 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 341 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 342 Assert.assertTrue(pr.stdout.contains("id: 2")); //param comes from original jnlp, this will be visible on jnlp_href 343 Assert.assertTrue(pr.stdout.contains("BID0")); 344 } 345 346 @NeedsDisplay 347 @Test 348 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksHtml1_dot()349 public void codebasesAttsTestWorksHtml1_dot() throws Exception { 350 prepare("\".\""); 351 ProcessResult pr = server.executeBrowser(HTML, new AutoOkClosingListener(), new AutoErrorClosingListener()); 352 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 353 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 354 Assert.assertTrue(pr.stdout.contains("id: 1")); 355 Assert.assertTrue(pr.stdout.contains("BID0")); 356 } 357 358 @NeedsDisplay 359 @Test 360 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksHtml1_empty()361 public void codebasesAttsTestWorksHtml1_empty() throws Exception { 362 prepare("\"\""); 363 ProcessResult pr = server.executeBrowser(HTML, new AutoOkClosingListener(), new AutoErrorClosingListener()); 364 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 365 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 366 Assert.assertTrue(pr.stdout.contains("id: 1")); 367 Assert.assertTrue(pr.stdout.contains("BID0")); 368 } 369 370 @NeedsDisplay 371 @Test 372 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksJHtml1_space()373 public void codebasesAttsTestWorksJHtml1_space() throws Exception { 374 prepare("\" \""); 375 ProcessResult pr = server.executeBrowser(HTML, new AutoOkClosingListener(), new AutoErrorClosingListener()); 376 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 377 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 378 Assert.assertTrue(pr.stdout.contains("id: 1")); 379 Assert.assertTrue(pr.stdout.contains("BID0")); 380 } 381 382 @NeedsDisplay 383 @Test 384 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksHtml1_spaces()385 public void codebasesAttsTestWorksHtml1_spaces() throws Exception { 386 prepare("\" \""); 387 ProcessResult pr = server.executeBrowser(HTML, new AutoOkClosingListener(), new AutoErrorClosingListener()); 388 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 389 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 390 Assert.assertTrue(pr.stdout.contains("id: 1")); 391 Assert.assertTrue(pr.stdout.contains("BID0")); 392 } 393 394 @NeedsDisplay 395 @Test 396 @TestInBrowsers(testIn = Browsers.one) 397 @Bug(id = "PR2489") codebasesAttsTestWorksHtml1_null()398 public void codebasesAttsTestWorksHtml1_null() throws Exception { 399 prepare(null); 400 ProcessResult pr = server.executeBrowser(HTML, new AutoOkClosingListener(), new AutoErrorClosingListener()); 401 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 402 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 403 Assert.assertTrue(pr.stdout.contains("id: 1")); 404 Assert.assertTrue(pr.stdout.contains("BID0")); 405 } 406 407 @NeedsDisplay 408 @Test 409 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksHtml1_value()410 public void codebasesAttsTestWorksHtml1_value() throws Exception { 411 prepare(server.getUrl().toString()); 412 ProcessResult pr = server.executeBrowser(HTML, new AutoOkClosingListener(), new AutoErrorClosingListener()); 413 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 414 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 415 Assert.assertTrue(pr.stdout.contains("id: 1")); 416 Assert.assertTrue(pr.stdout.contains("BID0")); 417 } 418 419 @NeedsDisplay 420 @Test 421 @TestInBrowsers(testIn = Browsers.one) 422 //all three are valid, but on l one bug is supported now 423 //@Bug(id = "http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2016-January/034446.html") 424 //@Bug(id = "http://icedtea.classpath.org/hg/release/icedtea-web-1.6/rev/0d9faf51357d") 425 @Bug(id = "http://icedtea.classpath.org/hg/icedtea-web/rev/22b7becd48a7") codebasesAttsTestWorksHtml1_value2()426 public void codebasesAttsTestWorksHtml1_value2() throws Exception { 427 prepare(secondValidServer.getUrl().toString()); 428 ProcessResult pr = server.executeBrowser(HTML, new AutoOkClosingListener(), new AutoErrorClosingListener()); 429 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 430 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 431 Assert.assertTrue(pr.stdout.contains("id: 1")); //param comes from original jnlp, this will be visible on jnlp_href 432 Assert.assertTrue(pr.stdout.contains("BID2")); 433 } 434 435 @NeedsDisplay 436 @Test 437 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksHtml1_value3()438 public void codebasesAttsTestWorksHtml1_value3() throws Exception { 439 prepare(secondValidServer.getUrl().toString()); 440 ProcessResult pr = server.executeBrowser(null, new URL(secondValidServer.getUrl().toString() + "/" + HTML), new AutoOkClosingListener(), new AutoErrorClosingListener()); 441 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 442 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 443 Assert.assertTrue(pr.stdout.contains("id: 2")); 444 Assert.assertTrue(pr.stdout.contains("BID2")); 445 } 446 447 //value3 and 4 tests ar emoreover testing taht our three servers are working as expected. 448 @NeedsDisplay 449 @Test 450 @TestInBrowsers(testIn = Browsers.one) 451 //all three are valid, but on l one bug is supported now 452 @Bug(id = "http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2016-January/034446.html") 453 //@Bug(id = "http://icedtea.classpath.org/hg/release/icedtea-web-1.6/rev/0d9faf51357d") 454 //@Bug(id = "http://icedtea.classpath.org/hg/icedtea-web/rev/22b7becd48a7") codebasesAttsTestWorksHtml1_value4()455 public void codebasesAttsTestWorksHtml1_value4() throws Exception { 456 prepare(server.getUrl().toString()); 457 ProcessResult pr = server.executeBrowser(null, new URL(secondValidServer.getUrl().toString() + "/" + HTML), new AutoOkClosingListener(), new AutoErrorClosingListener()); 458 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 459 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 460 Assert.assertTrue(pr.stdout.contains("id: 2")); //param comes from original jnlp, this will be visible on jnlp_href 461 Assert.assertTrue(pr.stdout.contains("BID0")); 462 } 463 464 @NeedsDisplay 465 @Test 466 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksHtml2_dot()467 public void codebasesAttsTestWorksHtml2_dot() throws Exception { 468 prepare("\".\""); 469 ProcessResult pr = server.executeBrowser(HTMLHREF, new AutoOkClosingListener(), new AutoErrorClosingListener()); 470 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 471 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 472 Assert.assertTrue(pr.stdout.contains("id: 1")); 473 Assert.assertTrue(pr.stdout.contains("BID0")); 474 } 475 476 @NeedsDisplay 477 @Test 478 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksHtml2_empty()479 public void codebasesAttsTestWorksHtml2_empty() throws Exception { 480 prepare("\"\""); 481 ProcessResult pr = server.executeBrowser(HTMLHREF, new AutoOkClosingListener(), new AutoErrorClosingListener()); 482 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 483 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 484 Assert.assertTrue(pr.stdout.contains("id: 1")); 485 Assert.assertTrue(pr.stdout.contains("BID0")); 486 } 487 488 @NeedsDisplay 489 @Test 490 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksJHtml2_space()491 public void codebasesAttsTestWorksJHtml2_space() throws Exception { 492 prepare("\" \""); 493 ProcessResult pr = server.executeBrowser(HTMLHREF, new AutoOkClosingListener(), new AutoErrorClosingListener()); 494 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 495 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 496 Assert.assertTrue(pr.stdout.contains("id: 1")); 497 Assert.assertTrue(pr.stdout.contains("BID0")); 498 } 499 500 @NeedsDisplay 501 @Test 502 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksHtml2_spaces()503 public void codebasesAttsTestWorksHtml2_spaces() throws Exception { 504 prepare("\" \""); 505 ProcessResult pr = server.executeBrowser(HTMLHREF, new AutoOkClosingListener(), new AutoErrorClosingListener()); 506 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 507 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 508 Assert.assertTrue(pr.stdout.contains("id: 1")); 509 Assert.assertTrue(pr.stdout.contains("BID0")); 510 } 511 512 @NeedsDisplay 513 @Test 514 @TestInBrowsers(testIn = Browsers.one) 515 @Bug(id = "PR2489") codebasesAttsTestWorksHtml2_null()516 public void codebasesAttsTestWorksHtml2_null() throws Exception { 517 prepare(null); 518 ProcessResult pr = server.executeBrowser(HTMLHREF, new AutoOkClosingListener(), new AutoErrorClosingListener()); 519 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 520 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 521 Assert.assertTrue(pr.stdout.contains("id: 1")); 522 Assert.assertTrue(pr.stdout.contains("BID0")); 523 } 524 525 @NeedsDisplay 526 @Test 527 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksHtml2_value()528 public void codebasesAttsTestWorksHtml2_value() throws Exception { 529 prepare(server.getUrl().toString()); 530 ProcessResult pr = server.executeBrowser(HTMLHREF, new AutoOkClosingListener(), new AutoErrorClosingListener()); 531 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 532 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 533 Assert.assertTrue(pr.stdout.contains("id: 1")); 534 Assert.assertTrue(pr.stdout.contains("BID0")); 535 } 536 537 @NeedsDisplay 538 @Test 539 @TestInBrowsers(testIn = Browsers.one) 540 //all three are valid, but on l one bug is supported now 541 //@Bug(id = "http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2016-January/034446.html") 542 @Bug(id = "http://icedtea.classpath.org/hg/release/icedtea-web-1.6/rev/0d9faf51357d") 543 //@Bug(id = "http://icedtea.classpath.org/hg/icedtea-web/rev/22b7becd48a7") codebasesAttsTestWorksHtml2_value2()544 public void codebasesAttsTestWorksHtml2_value2() throws Exception { 545 prepare(secondValidServer.getUrl().toString()); 546 ProcessResult pr = server.executeBrowser(HTMLHREF, new AutoOkClosingListener(), new AutoErrorClosingListener()); 547 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 548 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 549 Assert.assertTrue(pr.stdout.contains("id: 1")); //param comes from original jnlp, this will be visible on SECOND jnlp_href tests 550 Assert.assertTrue(pr.stdout.contains("BID2")); 551 } 552 553 @NeedsDisplay 554 @Test 555 @TestInBrowsers(testIn = Browsers.one) codebasesAttsTestWorksHtml2_value3()556 public void codebasesAttsTestWorksHtml2_value3() throws Exception { 557 prepare(secondValidServer.getUrl().toString()); 558 ProcessResult pr = server.executeBrowser(null, new URL(secondValidServer.getUrl().toString() + "/" + HTMLHREF), new AutoOkClosingListener(), new AutoErrorClosingListener()); 559 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 560 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 561 Assert.assertTrue(pr.stdout.contains("id: 2")); 562 Assert.assertTrue(pr.stdout.contains("BID2")); 563 } 564 565 //value3 and 4 tests ar emoreover testing taht our three servers are working as expected. 566 @NeedsDisplay 567 @Test 568 @TestInBrowsers(testIn = Browsers.one) 569 //all three are valid, but on l one bug is supported now 570 //@Bug(id = "http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2016-January/034446.html") 571 //@Bug(id = "http://icedtea.classpath.org/hg/release/icedtea-web-1.6/rev/0d9faf51357d") 572 @Bug(id = "http://icedtea.classpath.org/hg/icedtea-web/rev/22b7becd48a7") codebasesAttsTestWorksHtml2_value4()573 public void codebasesAttsTestWorksHtml2_value4() throws Exception { 574 prepare(server.getUrl().toString()); 575 ProcessResult pr = server.executeBrowser(null, new URL(secondValidServer.getUrl().toString() + "/" + HTMLHREF), new AutoOkClosingListener(), new AutoErrorClosingListener()); 576 Assert.assertTrue(pr.stdout.contains(appletCloseString)); 577 Assert.assertTrue(pr.stdout.contains(CodebasesAtts)); 578 Assert.assertTrue(pr.stdout.contains("id: 2")); //param comes from original jnlp, this will be visible on jnlp_href 579 Assert.assertTrue(pr.stdout.contains("BID0")); 580 } 581 prepare(String codebase)582 private static void prepare(String codebase) throws IOException { 583 prepare(codebase, codebase); 584 } 585 prepare(String codebase1, String codebase2)586 private static void prepare(String codebase1, String codebase2) throws IOException { 587 prepareSingle(codebase1, null, null, '1', ServerAccess.getInstance().getDir(), files); 588 prepareSingle(codebase2, null, null, '2', secondValidServer.getDir(), files); 589 } 590 prepareSingle(URL codebase, String jnlphref, String jar, char id, File targetDir, String[] files)591 public static void prepareSingle(URL codebase, String jnlphref, String jar, char id, File targetDir, String[] files) throws IOException { 592 prepareSingle(codebase.toExternalForm(), jnlphref, jar, id, targetDir, files); 593 } prepareSingle(String codebase, String jnlphref, String jar, char id, File targetDir, String[] files)594 public static void prepareSingle(String codebase, String jnlphref, String jar, char id, File targetDir, String[] files) throws IOException { 595 File srcDir = ServerAccess.getInstance().getDir(); 596 for (String file : files) { 597 String s1 = FileUtils.loadFileAsString(new File(srcDir, file + ".in")); 598 if (codebase == null) { 599 s1 = s1.replace("@CODEBASE@", ""); 600 } else { 601 s1 = s1.replace("@CODEBASE@", "codebase=\"" + codebase + "\""); 602 } 603 if (jnlphref == null) { 604 s1 = s1.replace("@JNLPHREF@", "CodebasesAttsApplet.jnlp"); 605 } else { 606 s1 = s1.replace("@JNLPHREF@", jnlphref + "/CodebasesAttsApplet.jnlp"); 607 } 608 if (jar == null) { 609 s1 = s1.replace("@JAR@", "CodebasesAtts"); 610 } else { 611 s1 = s1.replace("@JAR@", jar + "/CodebasesAtts"); 612 } 613 s1 = s1.replace("@ID@", "" + id); 614 FileUtils.saveFile(s1, new File(targetDir, file)); 615 } 616 String n = "CodebasesAtts.jar"; 617 if (!srcDir.equals(targetDir)) { 618 copyJarAndChange(new File(srcDir, n), new File(targetDir, n), id); 619 } 620 } 621 622 /** 623 * This copy zip jar entry by entry, and for one particular class it do BYTE 624 * changes 625 * 626 * @param from 627 * @param to 628 * @param id 629 * @throws FileNotFoundException 630 * @throws IOException 631 */ copyJarAndChange(File from, File to, char id)632 private static void copyJarAndChange(File from, File to, char id) throws FileNotFoundException, IOException { 633 ZipFile original = new ZipFile(from); 634 try (ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(to))) { 635 Enumeration entries = original.entries(); 636 byte[] buffer = new byte[512]; 637 while (entries.hasMoreElements()) { 638 ZipEntry entry = (ZipEntry) entries.nextElement(); 639 if (entry.getName().endsWith("CodebasesAtts.class")) { 640 ZipEntry newEntry = new ZipEntry(entry.getName()); 641 outputStream.putNextEntry(newEntry); 642 try (InputStream in = original.getInputStream(entry)) { 643 copyStreamAndChange(in, outputStream, id); 644 } 645 } else { 646 ZipEntry newEntry = new ZipEntry(entry.getName()); 647 outputStream.putNextEntry(newEntry); 648 try (InputStream in = original.getInputStream(entry)) { 649 while (0 < in.available()) { 650 int read = in.read(buffer); 651 outputStream.write(buffer, 0, read); 652 } 653 } 654 } 655 outputStream.closeEntry(); 656 } 657 } 658 } 659 660 /** 661 * This changes bytes BID0 to BID'idchar'. 662 * 663 * @param din 664 * @param dout 665 * @param id 666 * @throws FileNotFoundException 667 * @throws IOException 668 */ copyStreamAndChange(InputStream din, OutputStream dout, char id)669 private static void copyStreamAndChange(InputStream din, OutputStream dout, char id) throws FileNotFoundException, IOException { 670 int c; 671 final boolean[] BID0 = new boolean[]{false, false, false}; 672 while ((c = din.read()) != -1) { 673 if (c == 'B') { 674 BID0[0] = true; 675 dout.write((byte) c); 676 } else if (c == 'I' && BID0[0]) { 677 BID0[1] = true; 678 dout.write((byte) c); 679 } else if (c == 'D' && BID0[1]) { 680 BID0[2] = true; 681 dout.write((byte) c); 682 } else if (c == '0' && BID0[2]) { 683 dout.write((byte) id); 684 reset(BID0); 685 } else { 686 reset(BID0); 687 dout.write((byte) c); 688 } 689 } 690 } 691 reset(final boolean[] b)692 private static void reset(final boolean[] b) { 693 for (int i = 0; i < b.length; i++) { 694 b[i] = false; 695 696 } 697 } 698 699 } 700