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);
+	}
+}