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

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 24bdd6a  [OPENMEETINGS-1856] more tests for Hash page
24bdd6a is described below

commit 24bdd6a6e0ae73361aa9aaa7e6667425f18b30ea
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu Nov 1 21:03:11 2018 +0700

    [OPENMEETINGS-1856] more tests for Hash page
---
 .../apache/openmeetings/web/pages/HashPage.java    |   4 +-
 .../apache/openmeetings/AbstractJUnitDefaults.java |   2 +-
 .../org/apache/openmeetings/web/TestHashPage.java  |  54 -------
 .../openmeetings/web/pages/TestHashPage.java       | 162 +++++++++++++++++++++
 4 files changed, 165 insertions(+), 57 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
index 2294e4e..645bc02 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
@@ -70,8 +70,8 @@ public class HashPage extends BaseInitedPage implements 
IUpdatable {
        public static final String SWF = "swf";
        public static final String PANEL_MAIN = "panel-main";
        public static final String INVITATION_HASH = "invitation";
-       private static final String HASH = "secure";
-       private static final String LANG = "language";
+       static final String HASH = "secure";
+       static final String LANG = "language";
        private final WebMarkupContainer recContainer = new 
WebMarkupContainer("panel-recording");
        private final VideoInfo vi = new VideoInfo("info", null);
        private final VideoPlayer vp = new VideoPlayer("player");
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java
index 6b4809e..2580f56 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractJUnitDefaults.java
@@ -59,7 +59,7 @@ public abstract class AbstractJUnitDefaults extends 
AbstractSpringTest {
        public static final Random rnd = new Random();
 
        @Autowired
-       private AppointmentDao appointmentDao;
+       protected AppointmentDao appointmentDao;
        @Autowired
        protected UserDao userDao;
        @Autowired
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestHashPage.java 
b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestHashPage.java
deleted file mode 100644
index d31cf16..0000000
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestHashPage.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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 org.apache.openmeetings.web;
-
-import static org.junit.Assert.assertTrue;
-
-import org.apache.openmeetings.AbstractWicketTester;
-import org.apache.openmeetings.web.pages.HashPage;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
-import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
-
-public class TestHashPage extends AbstractWicketTester {
-       private static final Logger log = 
LoggerFactory.getLogger(TestHashPage.class);
-
-       private void checkAccessDenied(PageParameters pp) {
-               tester.startPage(HashPage.class, pp);
-               tester.assertRenderedPage(HashPage.class);
-               MessageDialog dlg = 
(MessageDialog)tester.getComponentFromLastRenderedPage("access-denied");
-               assertTrue("Access denied should be displayed", 
((JQueryBehavior)dlg.getBehaviors().get(0)).getOption("autoOpen"));
-       }
-
-       @Test
-       public void testNoParams() {
-               log.debug("No params");
-               checkAccessDenied(null);
-       }
-
-       @Test
-       public void testBadParam() {
-               log.debug("No params");
-               checkAccessDenied(new PageParameters().add("aaa", "bbb"));
-       }
-}
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
new file mode 100644
index 0000000..8d732a6
--- /dev/null
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
@@ -0,0 +1,162 @@
+/*
+ * 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
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 org.apache.openmeetings.web.pages;
+
+import static java.util.UUID.randomUUID;
+import static 
org.apache.openmeetings.web.common.OmWebSocketPanel.CONNECTED_MSG;
+import static org.apache.openmeetings.web.pages.HashPage.HASH;
+import static org.apache.openmeetings.web.pages.HashPage.INVITATION_HASH;
+import static org.apache.openmeetings.web.pages.HashPage.PANEL_MAIN;
+import static org.apache.openmeetings.web.util.OmUrlFragment.CHILD_ID;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Date;
+import java.util.UUID;
+
+import org.apache.openmeetings.AbstractWicketTester;
+import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.dao.room.InvitationDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.openmeetings.db.entity.room.Invitation;
+import org.apache.openmeetings.db.entity.room.Invitation.Valid;
+import org.apache.openmeetings.util.crypt.CryptProvider;
+import org.apache.openmeetings.web.common.MainPanel;
+import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.protocol.ws.util.tester.WebSocketTester;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.Strings;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
+public class TestHashPage extends AbstractWicketTester {
+       private static final Logger log = 
LoggerFactory.getLogger(TestHashPage.class);
+
+       @Autowired
+       protected RoomDao roomDao;
+       @Autowired
+       protected RecordingDao recDao;
+       @Autowired
+       protected InvitationDao inviteDao;
+
+       private void checkAccessDenied(PageParameters pp) {
+               tester.startPage(HashPage.class, pp);
+               tester.assertRenderedPage(HashPage.class);
+               MessageDialog dlg = 
(MessageDialog)tester.getComponentFromLastRenderedPage("access-denied");
+               assertTrue("Access denied should be displayed", 
((JQueryBehavior)dlg.getBehaviors().get(0)).getOption("autoOpen"));
+               tester.assertInvisible(PANEL_MAIN);
+       }
+
+       private void checkPanel(PageParameters pp, Class<? extends Panel> 
clazz) {
+               HashPage page = tester.startPage(HashPage.class, pp);
+               tester.assertRenderedPage(HashPage.class);
+               MessageDialog dlg = 
(MessageDialog)tester.getComponentFromLastRenderedPage("access-denied");
+               assertFalse("Access denied should NOT be displayed", 
((JQueryBehavior)dlg.getBehaviors().get(0)).getOption("autoOpen"));
+               tester.assertComponent(PANEL_MAIN, MainPanel.class);
+               tester.assertInvisible("header");
+
+               WebSocketTester webSocketTester = new WebSocketTester(tester, 
page);
+               webSocketTester.sendMessage(CONNECTED_MSG);
+               tester.assertComponent(String.format("%s:contents:%s", 
PANEL_MAIN, CHILD_ID), clazz);
+       }
+
+       private Invitation get(Long userId, Long roomId, Long apptId, Long 
recId, Valid valid, String passwd, Date from, Date to) {
+               Invitation i = new Invitation();
+               i.setHash(randomUUID().toString());
+               if (!Strings.isEmpty(passwd)) {
+                       i.setPasswordProtected(true);
+                       i.setPassword(CryptProvider.get().hash(passwd));
+               }
+
+               i.setUsed(false);
+               i.setValid(valid);
+
+               // valid period of Invitation
+               switch (valid) {
+                       case Period:
+                               i.setValidFrom(new Date(from.getTime() - (5 * 
60 * 1000)));
+                               i.setValidTo(to);
+                               break;
+                       case Endless:
+                       case OneTime:
+                       default:
+                               break;
+               }
+
+               i.setDeleted(false);
+
+               i.setInvitedBy(userDao.get(userId));
+               i.setInvitee(getContact(UUID.randomUUID().toString(), userId));
+               if (roomId != null) {
+                       i.setRoom(roomDao.get(roomId));
+               } else if (recId != null) {
+                       i.setRecording(recDao.get(recId));
+               } else if (apptId != null) {
+                       Appointment a = appointmentDao.get(apptId);
+                       i.setAppointment(a);
+                       i.setRoom(a.getRoom());
+               }
+               inviteDao.update(i);
+               return i;
+       }
+
+       @Test
+       public void testNoParams() {
+               log.debug("No params");
+               checkAccessDenied(null);
+       }
+
+       @Test
+       public void testBadParam() {
+               log.debug("bad params");
+               checkAccessDenied(new PageParameters().add("aaa", 
"bbb").add(HashPage.LANG, 7));
+       }
+
+       @Test
+       public void testBadSecure() {
+               log.debug("bad params");
+               checkAccessDenied(new PageParameters().add(HASH, 
"bbb").add(HashPage.LANG, 7));
+       }
+
+       @Test
+       public void testValidOneTimeRoom() {
+               Invitation i = get(1L, 2L, null, null, Valid.OneTime, null, 
null, null);
+               checkPanel(new PageParameters().add(INVITATION_HASH, 
i.getHash()), RoomPanel.class);
+       }
+
+       @Ignore
+       @Test
+       public void testValidOneTimeRecording() {
+               // panel-recording
+               Recording rec = new Recording();
+               rec.setOwnerId(1L);
+               recDao.update(rec);
+               Invitation i = get(1L, null, null, rec.getId(), Valid.OneTime, 
null, null, null);
+               checkPanel(new PageParameters().add(INVITATION_HASH, 
i.getHash()), RoomPanel.class);
+       }
+}

Reply via email to