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 }