You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2018/11/01 14:03:26 UTC
[openmeetings] branch master updated: [OPENMEETINGS-1856] more
tests for Hash page
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 <so...@gmail.com>
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);
+ }
+}