1*7d082fd9SCarl Marcum /** 2*7d082fd9SCarl Marcum * Licensed to the Apache Software Foundation (ASF) under one 3*7d082fd9SCarl Marcum * or more contributor license agreements. See the NOTICE file 4*7d082fd9SCarl Marcum * distributed with this work for additional information 5*7d082fd9SCarl Marcum * regarding copyright ownership. The ASF licenses this file 6*7d082fd9SCarl Marcum * to you under the Apache License, Version 2.0 (the 7*7d082fd9SCarl Marcum * "License"); you may not use this file except in compliance 8*7d082fd9SCarl Marcum * with the License. You may obtain a copy of the License at 9*7d082fd9SCarl Marcum * <p> 10*7d082fd9SCarl Marcum * http://www.apache.org/licenses/LICENSE-2.0 11*7d082fd9SCarl Marcum * <p> 12*7d082fd9SCarl Marcum * Unless required by applicable law or agreed to in writing, 13*7d082fd9SCarl Marcum * software distributed under the License is distributed on an 14*7d082fd9SCarl Marcum * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15*7d082fd9SCarl Marcum * KIND, either express or implied. See the License for the 16*7d082fd9SCarl Marcum * specific language governing permissions and limitations 17*7d082fd9SCarl Marcum * under the License. 18*7d082fd9SCarl Marcum */ 19*7d082fd9SCarl Marcum 20*7d082fd9SCarl Marcum package fvt.gui.sw.hyperlink; 21*7d082fd9SCarl Marcum 22*7d082fd9SCarl Marcum import static org.junit.Assert.*; 23*7d082fd9SCarl Marcum import static org.openoffice.test.common.Testspace.*; 24*7d082fd9SCarl Marcum import static org.openoffice.test.vcl.Tester.*; 25*7d082fd9SCarl Marcum import static testlib.gui.AppTool.*; 26*7d082fd9SCarl Marcum import static testlib.gui.UIMap.*; 27*7d082fd9SCarl Marcum 28*7d082fd9SCarl Marcum import java.awt.Rectangle; 29*7d082fd9SCarl Marcum import java.io.File; 30*7d082fd9SCarl Marcum 31*7d082fd9SCarl Marcum import org.junit.AfterClass; 32*7d082fd9SCarl Marcum import org.junit.Before; 33*7d082fd9SCarl Marcum import org.junit.BeforeClass; 34*7d082fd9SCarl Marcum import org.junit.Rule; 35*7d082fd9SCarl Marcum import org.junit.Test; 36*7d082fd9SCarl Marcum 37*7d082fd9SCarl Marcum import org.junit.runner.RunWith; 38*7d082fd9SCarl Marcum import org.junit.runners.Parameterized; 39*7d082fd9SCarl Marcum import org.junit.runners.Parameterized.Parameters; 40*7d082fd9SCarl Marcum 41*7d082fd9SCarl Marcum import java.util.Arrays; 42*7d082fd9SCarl Marcum import java.util.Collection; 43*7d082fd9SCarl Marcum 44*7d082fd9SCarl Marcum import org.openoffice.test.common.FileUtil; 45*7d082fd9SCarl Marcum import org.openoffice.test.common.GraphicsUtil; 46*7d082fd9SCarl Marcum import org.openoffice.test.common.Logger; 47*7d082fd9SCarl Marcum 48*7d082fd9SCarl Marcum import testlib.gui.SCTool; 49*7d082fd9SCarl Marcum 50*7d082fd9SCarl Marcum /** 51*7d082fd9SCarl Marcum * Class to test that clicking certain hyperlinks in a document display 52*7d082fd9SCarl Marcum * a warning dialog. 53*7d082fd9SCarl Marcum */ 54*7d082fd9SCarl Marcum @RunWith(Parameterized.class) 55*7d082fd9SCarl Marcum public class WarningDialog { 56*7d082fd9SCarl Marcum 57*7d082fd9SCarl Marcum private String link; 58*7d082fd9SCarl Marcum private String type; 59*7d082fd9SCarl Marcum 60*7d082fd9SCarl Marcum @Parameters data()61*7d082fd9SCarl Marcum public static Collection<Object[]> data() { 62*7d082fd9SCarl Marcum return Arrays.asList(new Object[][]{ 63*7d082fd9SCarl Marcum // links with extensions 64*7d082fd9SCarl Marcum {"nfs://nonexistant.url.com/evil.jar", "nfs with .jar"}, 65*7d082fd9SCarl Marcum {"dav://nonexistant.url.com/evil.jar", "dav with .jar"}, 66*7d082fd9SCarl Marcum {"smb://nonexistant.url.com/evil.jar", "smb with .jar"}, 67*7d082fd9SCarl Marcum // with path and no extension 68*7d082fd9SCarl Marcum {"nfs://nonexistant.url.com/evil", "nfs with path"}, 69*7d082fd9SCarl Marcum {"dav://nonexistant.url.com/evil", "dav with path"}, 70*7d082fd9SCarl Marcum {"smb://nonexistant.url.com/evil", "smb with path"}, 71*7d082fd9SCarl Marcum // host only 72*7d082fd9SCarl Marcum {"nfs://nonexistant.url.com", "nfs host only"}, 73*7d082fd9SCarl Marcum {"dav://nonexistant.url.com", "dav host only"}, 74*7d082fd9SCarl Marcum {"smb://nonexistant.url.com", "smb host only"} 75*7d082fd9SCarl Marcum }); 76*7d082fd9SCarl Marcum } 77*7d082fd9SCarl Marcum 78*7d082fd9SCarl Marcum @Rule 79*7d082fd9SCarl Marcum public Logger log = Logger.getLogger(this); 80*7d082fd9SCarl Marcum 81*7d082fd9SCarl Marcum @BeforeClass beforeClass()82*7d082fd9SCarl Marcum public static void beforeClass() { 83*7d082fd9SCarl Marcum app.clean(); 84*7d082fd9SCarl Marcum } 85*7d082fd9SCarl Marcum 86*7d082fd9SCarl Marcum @AfterClass afterClass()87*7d082fd9SCarl Marcum public static void afterClass() { 88*7d082fd9SCarl Marcum app.stop(); 89*7d082fd9SCarl Marcum } 90*7d082fd9SCarl Marcum 91*7d082fd9SCarl Marcum @Before before()92*7d082fd9SCarl Marcum public void before() { 93*7d082fd9SCarl Marcum app.stop(); 94*7d082fd9SCarl Marcum app.start(); 95*7d082fd9SCarl Marcum } 96*7d082fd9SCarl Marcum WarningDialog(String link, String type)97*7d082fd9SCarl Marcum public WarningDialog(String link, String type) { 98*7d082fd9SCarl Marcum this.link = link; 99*7d082fd9SCarl Marcum this.type = type; 100*7d082fd9SCarl Marcum } 101*7d082fd9SCarl Marcum 102*7d082fd9SCarl Marcum /** 103*7d082fd9SCarl Marcum * Test open a hyperlink in a text document. 104*7d082fd9SCarl Marcum * 1. New a text document 105*7d082fd9SCarl Marcum * 2. Insert a hyperlink 106*7d082fd9SCarl Marcum * 3. Open hyperlink 107*7d082fd9SCarl Marcum * 4. Verify security warning dialog is displayed 108*7d082fd9SCarl Marcum * 109*7d082fd9SCarl Marcum * @throws Exception 110*7d082fd9SCarl Marcum */ 111*7d082fd9SCarl Marcum @Test testHyperlinkDisplaysWarning()112*7d082fd9SCarl Marcum public void testHyperlinkDisplaysWarning() throws Exception { 113*7d082fd9SCarl Marcum // Create a new text document 114*7d082fd9SCarl Marcum newTextDocument(); 115*7d082fd9SCarl Marcum writer.waitForExistence(10, 2); 116*7d082fd9SCarl Marcum // open the hyperlink dialog 117*7d082fd9SCarl Marcum writer.typeKeys("<alt i>"); // insert menu 118*7d082fd9SCarl Marcum writer.typeKeys("h"); // hyperlink 119*7d082fd9SCarl Marcum hyperlinkInetPathComboBox.setText(link); //target 120*7d082fd9SCarl Marcum hyperlinkInetText.setText(link); // displayed text 121*7d082fd9SCarl Marcum hyperlinkDialogOkBtn.click(); // apply 122*7d082fd9SCarl Marcum hyperlinkDialogCancelBtn.click(); // close 123*7d082fd9SCarl Marcum sleep(1); 124*7d082fd9SCarl Marcum typeKeys("<shift F10>"); // context menu 125*7d082fd9SCarl Marcum typeKeys("o"); // open hyperlink 126*7d082fd9SCarl Marcum // we can't be sure of the language so just check for the dialog 127*7d082fd9SCarl Marcum boolean msgExists = activeMsgBox.exists(1); // wait 1 second for the dialog 128*7d082fd9SCarl Marcum if (msgExists) { 129*7d082fd9SCarl Marcum activeMsgBox.no(); // close dialog 130*7d082fd9SCarl Marcum } 131*7d082fd9SCarl Marcum assertTrue("warning not displayed for " + type, msgExists); 132*7d082fd9SCarl Marcum discard(); 133*7d082fd9SCarl Marcum } 134*7d082fd9SCarl Marcum 135*7d082fd9SCarl Marcum }