This is an automated email from the ASF dual-hosted git repository.

cmarcum pushed a commit to branch AOO42X
in repository https://gitbox.apache.org/repos/asf/openoffice.git


The following commit(s) were added to refs/heads/AOO42X by this push:
     new ca5bdfe  Tests for warning dialog on certain hyperlinks in documents 
(i128450) (#128)
ca5bdfe is described below

commit ca5bdfe89569e89c3efb782756b83a80c8d86373
Author: Carl Marcum <carl.mar...@codebuilders.net>
AuthorDate: Thu May 13 20:44:30 2021 -0400

    Tests for warning dialog on certain hyperlinks in documents (i128450) (#128)
    
    * Refs #i128450 - added fvt test class for verifying a warning dialog for 
certain hyperlinks.
    Added a test method to bvt test so there is some coverage there.
    added UI mappings for hyperlink dialogs.
    
    * Refs #i128450 - removed http and https protcols.
    
    * Refs #i128450 - updated comments for change in fvt test method name.
---
 test/testgui/source/bvt/gui/BasicFunctionTest.java |  38 +++++-
 .../source/fvt/gui/sw/hyperlink/WarningDialog.java | 135 +++++++++++++++++++++
 test/testgui/source/testlib/gui/UIMap.java         |   7 ++
 3 files changed, 179 insertions(+), 1 deletion(-)

diff --git a/test/testgui/source/bvt/gui/BasicFunctionTest.java 
b/test/testgui/source/bvt/gui/BasicFunctionTest.java
index 5b31331..767257b 100644
--- a/test/testgui/source/bvt/gui/BasicFunctionTest.java
+++ b/test/testgui/source/bvt/gui/BasicFunctionTest.java
@@ -721,4 +721,40 @@ public class BasicFunctionTest {
         assertEquals("The calculated result", expectedResult, result);
                discard();
        }
-}
+
+       /**
+        * Test open a non-http(s) type hyperlink (with host only) in a text 
document.
+        * (coverage included in fvt.gui.sw.hyperlink.WarningDialog
+        * testHyperlinkDisplaysWarning() and included here for build 
verification)
+        * 1. New a text document
+        * 2. Insert a dav type hyperlink
+        * 3. Open hyperlink
+        * 4. Verify security warning dialog is displayed
+        *
+        * @throws Exception
+        */
+       @Test
+       public void testNonHttpHyperlinkWithHostOnly() throws Exception {
+               // Create a new text document
+               newTextDocument();
+               writer.waitForExistence(10, 2);
+               // open the hyperlink dialog
+               writer.typeKeys("<alt i>"); // insert menu
+               writer.typeKeys("h"); // hyperlink
+               hyperlinkInetPathComboBox.setText("dav://nonexistant.url.com"); 
//target
+               hyperlinkInetText.setText("dav://nonexistant.url.com"); // 
displayed text
+               hyperlinkDialogOkBtn.click(); // apply
+               hyperlinkDialogCancelBtn.click(); // close
+               sleep(1); // give the dialog time to close
+               typeKeys("<shift F10>"); // context menu
+               typeKeys("o"); // open hyperlink
+               // we can't be sure of the language so just check for the dialog
+               boolean msgExists = activeMsgBox.exists(1); // wait 1 second 
for the dialog
+               if (msgExists) {
+                       activeMsgBox.no(); // close dialog
+               }
+               assertTrue("security warning not displayed", msgExists);
+               discard();
+       }
+
+}
\ No newline at end of file
diff --git a/test/testgui/source/fvt/gui/sw/hyperlink/WarningDialog.java 
b/test/testgui/source/fvt/gui/sw/hyperlink/WarningDialog.java
new file mode 100644
index 0000000..a7b12f5
--- /dev/null
+++ b/test/testgui/source/fvt/gui/sw/hyperlink/WarningDialog.java
@@ -0,0 +1,135 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package fvt.gui.sw.hyperlink;
+
+import static org.junit.Assert.*;
+import static org.openoffice.test.common.Testspace.*;
+import static org.openoffice.test.vcl.Tester.*;
+import static testlib.gui.AppTool.*;
+import static testlib.gui.UIMap.*;
+
+import java.awt.Rectangle;
+import java.io.File;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.openoffice.test.common.FileUtil;
+import org.openoffice.test.common.GraphicsUtil;
+import org.openoffice.test.common.Logger;
+
+import testlib.gui.SCTool;
+
+/**
+ * Class to test that clicking certain hyperlinks in a document display
+ * a warning dialog.
+ */
+@RunWith(Parameterized.class)
+public class WarningDialog {
+
+    private String link;
+    private String type;
+
+    @Parameters
+    public static Collection<Object[]> data() {
+        return Arrays.asList(new Object[][]{
+                // links with extensions
+                {"nfs://nonexistant.url.com/evil.jar", "nfs with .jar"},
+                {"dav://nonexistant.url.com/evil.jar", "dav with .jar"},
+                {"smb://nonexistant.url.com/evil.jar", "smb with .jar"},
+                // with path and no extension
+                {"nfs://nonexistant.url.com/evil", "nfs with path"},
+                {"dav://nonexistant.url.com/evil", "dav with path"},
+                {"smb://nonexistant.url.com/evil", "smb with path"},
+                // host only
+                {"nfs://nonexistant.url.com", "nfs host only"},
+                {"dav://nonexistant.url.com", "dav host only"},
+                {"smb://nonexistant.url.com", "smb host only"}
+        });
+    }
+
+    @Rule
+    public Logger log = Logger.getLogger(this);
+
+    @BeforeClass
+    public static void beforeClass() {
+        app.clean();
+    }
+
+    @AfterClass
+    public static void afterClass() {
+        app.stop();
+    }
+
+    @Before
+    public void before() {
+        app.stop();
+        app.start();
+    }
+
+    public WarningDialog(String link, String type) {
+        this.link = link;
+        this.type = type;
+    }
+
+    /**
+     * Test open a hyperlink in a text document.
+     * 1. New a text document
+     * 2. Insert a hyperlink
+     * 3. Open hyperlink
+     * 4. Verify security warning dialog is displayed
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testHyperlinkDisplaysWarning() throws Exception {
+        // Create a new text document
+        newTextDocument();
+        writer.waitForExistence(10, 2);
+        // open the hyperlink dialog
+        writer.typeKeys("<alt i>"); // insert menu
+        writer.typeKeys("h"); // hyperlink
+        hyperlinkInetPathComboBox.setText(link); //target
+        hyperlinkInetText.setText(link); // displayed text
+        hyperlinkDialogOkBtn.click(); // apply
+        hyperlinkDialogCancelBtn.click(); // close
+        sleep(1);
+        typeKeys("<shift F10>"); // context menu
+        typeKeys("o"); // open hyperlink
+        // we can't be sure of the language so just check for the dialog
+        boolean msgExists = activeMsgBox.exists(1); // wait 1 second for the 
dialog
+        if (msgExists) {
+            activeMsgBox.no(); // close dialog
+        }
+        assertTrue("warning not displayed for " + type, msgExists);
+        discard();
+    }
+
+}
\ No newline at end of file
diff --git a/test/testgui/source/testlib/gui/UIMap.java 
b/test/testgui/source/testlib/gui/UIMap.java
index 37ba36a..a25c809 100644
--- a/test/testgui/source/testlib/gui/UIMap.java
+++ b/test/testgui/source/testlib/gui/UIMap.java
@@ -562,4 +562,11 @@ public class UIMap {
        public static final VclEditBox scPrintArea = 
editbox("sc:Edit:RID_SCDLG_AREAS:ED_PRINTAREA");
 
        public static final VclEditBox scFormatCode = 
editbox("cui:Edit:RID_SVXPAGE_NUMBERFORMAT:ED_FORMAT");
+
+       // hyperlink dialog
+       public static final VclComboBox hyperlinkInetPathComboBox = 
combobox("CUI_HID_HYPERDLG_INET_PATH"); // target
+       public static final VclEditBox hyperlinkInetName = 
editbox("cui:Edit:RID_SVXPAGE_HYPERLINK_INTERNET:ED_TEXT"); // text
+       public static final VclEditBox hyperlinkInetText = 
editbox("cui:Edit:RID_SVXPAGE_HYPERLINK_INTERNET:ED_INDICATION"); // name
+       public static final VclControl hyperlinkDialogOkBtn = 
control("CUI_HID_ICCDIALOG_OK_BTN"); // apply
+       public static final VclControl hyperlinkDialogCancelBtn = 
control("CUI_HID_ICCDIALOG_CANCEL_BTN"); // close
 }

Reply via email to