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 2020/09/08 11:29:36 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2423] import
should be fixed
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 e213b36 [OPENMEETINGS-2423] import should be fixed
e213b36 is described below
commit e213b3647f5e22e2e610e3b4fe321ac2f2c60f25
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue Sep 8 18:28:20 2020 +0700
[OPENMEETINGS-2423] import should be fixed
---
.../openmeetings/core/remote/AbstractStream.java | 6 +-
.../org/apache/openmeetings/TestConnection.java | 2 +-
.../openmeetings/core/remote/BaseMockedTest.java | 64 +++++++++----
.../core/remote/TestNotConnectedMocked.java | 6 +-
.../core/remote/TestRecordingFlowMocked.java | 41 ++++----
.../core/remote/TestRoomFlowMocked.java | 94 ++++++++++---------
.../core/remote/TestSetupFlowMocked.java | 104 ++++++++++-----------
.../java/org/apache/openmeetings/gui/TestGui.java | 2 +-
.../openmeetings/rdc/TestKeyCodesNumber.java | 2 +-
.../openmeetings/rdc/TestReadKeyCodesNumber.java | 2 +-
.../openmeetings/db/entity/file/FileItemTest.java | 76 ++++++---------
.../apache/openmeetings/backup/BackupImport.java | 18 ++++
openmeetings-web/pom.xml | 2 +-
.../openmeetings/web/common/menu/OmMenuItem.java | 34 ++++---
.../web/pages/install/InstallWizard.java | 7 +-
.../apache/openmeetings/backup/TestImportOld.java | 31 ++++++
.../openmeetings/backup/jira2423/backup_2423.zip | Bin 0 -> 25722 bytes
pom.xml | 32 +------
18 files changed, 282 insertions(+), 241 deletions(-)
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/AbstractStream.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/AbstractStream.java
index 1224288..c1376d2 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/AbstractStream.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/AbstractStream.java
@@ -47,17 +47,17 @@ public abstract class AbstractStream {
public abstract void release(IStreamProcessor processor, boolean remove);
- public WebRtcEndpoint createWebRtcEndpoint(MediaPipeline pipeline) {
+ public static WebRtcEndpoint createWebRtcEndpoint(MediaPipeline pipeline) {
return new WebRtcEndpoint.Builder(pipeline).build();
}
- public RecorderEndpoint createRecorderEndpoint(MediaPipeline pipeline, String path, MediaProfileSpecType profile) {
+ public static RecorderEndpoint createRecorderEndpoint(MediaPipeline pipeline, String path, MediaProfileSpecType profile) {
return new RecorderEndpoint.Builder(pipeline, path)
.stopOnEndOfStream()
.withMediaProfile(profile).build();
}
- public PlayerEndpoint createPlayerEndpoint(MediaPipeline pipeline, String path) {
+ public static PlayerEndpoint createPlayerEndpoint(MediaPipeline pipeline, String path) {
return new PlayerEndpoint.Builder(pipeline, path).build();
}
}
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/TestConnection.java b/openmeetings-core/src/test/java/org/apache/openmeetings/TestConnection.java
index 0a271ae..ba0eba8 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/TestConnection.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/TestConnection.java
@@ -18,7 +18,7 @@
*/
package org.apache.openmeetings;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
public class TestConnection {
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/BaseMockedTest.java b/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/BaseMockedTest.java
index f8f4b6b..154c6a7 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/BaseMockedTest.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/BaseMockedTest.java
@@ -20,30 +20,39 @@
package org.apache.openmeetings.core.remote;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.when;
-import static org.mockito.MockitoAnnotations.initMocks;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.lenient;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+
+import java.util.Locale;
import org.apache.openmeetings.core.util.WebSocketHelper;
-import org.junit.Before;
-import org.junit.runner.RunWith;
+import org.apache.openmeetings.db.dao.label.LabelDao;
+import org.apache.openmeetings.db.entity.basic.IWsClient;
+import org.apache.openmeetings.db.entity.label.OmLanguage;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.ExtendWith;
import org.kurento.client.KurentoClient;
-import org.kurento.client.KurentoConnectionListener;
+import org.kurento.client.MediaPipeline;
+import org.kurento.client.MediaProfileSpecType;
+import org.kurento.client.PlayerEndpoint;
+import org.kurento.client.RecorderEndpoint;
import org.kurento.client.ServerManager;
+import org.kurento.client.WebRtcEndpoint;
import org.kurento.client.internal.TransactionImpl;
import org.kurento.client.internal.client.RomManager;
import org.mockito.InjectMocks;
import org.mockito.Mock;
+import org.mockito.MockedStatic;
import org.mockito.Spy;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.mockito.stubbing.Answer;
import com.github.openjson.JSONObject;
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({KurentoClient.class, WebSocketHelper.class, AbstractStream.class})
+@ExtendWith(MockitoExtension.class)
public class BaseMockedTest {
@Mock
protected RomManager romManager;
@@ -63,14 +72,31 @@ public class BaseMockedTest {
protected final static JSONObject MSG_BASE = new JSONObject();
- @Before
+ @BeforeEach
public void setup() {
- initMocks(this);
- mockStatic(KurentoClient.class);
- mockStatic(WebSocketHelper.class);
- doReturn(kServerManager).when(client).getServerManager();
- when(KurentoClient.create(nullable(String.class), any(KurentoConnectionListener.class))).thenReturn(client);
- doReturn(new TransactionImpl(romManager)).when(client).beginTransaction();
+ lenient().doReturn(kServerManager).when(client).getServerManager();
+ lenient().doReturn(new TransactionImpl(romManager)).when(client).beginTransaction();
handler.init();
}
+
+ void runWrapped(Runnable task) {
+ try (MockedStatic<AbstractStream> streamMock = mockStatic(AbstractStream.class);
+ MockedStatic<WebSocketHelper> wsHelperMock = mockStatic(WebSocketHelper.class);
+ MockedStatic<LabelDao> labelMock = mockStatic(LabelDao.class);
+ )
+ {
+ wsHelperMock.when(() -> WebSocketHelper.sendClient(any(IWsClient.class), any(JSONObject.class))).thenAnswer(new Answer<Void>() {
+ @Override
+ public Void answer(InvocationOnMock invocation) throws Throwable {
+ return null;
+ }
+ });
+ streamMock.when(() -> AbstractStream.createWebRtcEndpoint(any(MediaPipeline.class))).thenReturn(mock(WebRtcEndpoint.class));
+ streamMock.when(() -> AbstractStream.createRecorderEndpoint(any(MediaPipeline.class), anyString(), any(MediaProfileSpecType.class))).thenReturn(mock(RecorderEndpoint.class));
+ streamMock.when(() -> AbstractStream.createPlayerEndpoint(any(MediaPipeline.class), anyString())).thenReturn(mock(PlayerEndpoint.class));
+
+ labelMock.when(() -> LabelDao.getLanguage(any(Long.class))).thenReturn(new OmLanguage(Locale.ENGLISH));
+ task.run();
+ }
+ }
}
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestNotConnectedMocked.java b/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestNotConnectedMocked.java
index dd67727..05d89a3 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestNotConnectedMocked.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestNotConnectedMocked.java
@@ -19,10 +19,10 @@
*/
package org.apache.openmeetings.core.remote;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import com.github.openjson.JSONObject;
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestRecordingFlowMocked.java b/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestRecordingFlowMocked.java
index 5f22af0..5e418f0 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestRecordingFlowMocked.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestRecordingFlowMocked.java
@@ -19,40 +19,34 @@
*/
package org.apache.openmeetings.core.remote;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import java.util.Locale;
-
-import org.apache.openmeetings.db.dao.label.LabelDao;
import org.apache.openmeetings.db.dao.record.RecordingDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.basic.Client;
import org.apache.openmeetings.db.entity.basic.Client.Activity;
import org.apache.openmeetings.db.entity.basic.Client.StreamDesc;
-import org.apache.openmeetings.db.entity.label.OmLanguage;
import org.apache.openmeetings.db.entity.record.Recording;
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.manager.IClientManager;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.kurento.client.MediaPipeline;
import org.kurento.client.Transaction;
-import org.mockito.BDDMockito;
import org.mockito.Mock;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
import com.github.openjson.JSONObject;
-@PrepareForTest(LabelDao.class)
public class TestRecordingFlowMocked extends BaseMockedTest {
private static final Long USER_ID = 1L;
private static final Long ROOM_ID = 5L;
@@ -72,6 +66,7 @@ public class TestRecordingFlowMocked extends BaseMockedTest {
private String streamDescUID;
@Override
+ @BeforeEach
public void setup() {
super.setup();
doReturn(mock(MediaPipeline.class)).when(client).createMediaPipeline(any(Transaction.class));
@@ -88,9 +83,6 @@ public class TestRecordingFlowMocked extends BaseMockedTest {
return r;
});
- PowerMockito.mockStatic(LabelDao.class);
- BDDMockito.given(LabelDao.getLanguage(any(Long.class))).willReturn(new OmLanguage(Locale.ENGLISH));
-
// init client object for this test
c = getClientFull();
doReturn(c.getRoom()).when(roomDao).get(ROOM_ID);
@@ -119,13 +111,18 @@ public class TestRecordingFlowMocked extends BaseMockedTest {
}
@Test
- public void testRecordingFlow() throws Exception {
-
- // start recording and simulate broadcast starting
- testStartRecordWhenSharingWasNot();
-
- // stop recording
- testStopRecordingWhenNoSharingStarted();
+ public void testRecordingFlow() {
+ runWrapped(() -> {
+ try {
+ // start recording and simulate broadcast starting
+ testStartRecordWhenSharingWasNot();
+
+ // stop recording
+ testStopRecordingWhenNoSharingStarted();
+ } catch (Exception e) {
+ fail("Unexpected exception", e);
+ }
+ });
}
/**
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestRoomFlowMocked.java b/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestRoomFlowMocked.java
index 9a1cf0b..26fac73 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestRoomFlowMocked.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestRoomFlowMocked.java
@@ -19,36 +19,29 @@
*/
package org.apache.openmeetings.core.remote;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import java.util.Locale;
-
-import org.apache.openmeetings.db.dao.label.LabelDao;
import org.apache.openmeetings.db.dao.record.RecordingDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.label.OmLanguage;
import org.apache.openmeetings.db.entity.record.Recording;
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.manager.IClientManager;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.kurento.client.MediaPipeline;
import org.kurento.client.Transaction;
-import org.mockito.BDDMockito;
import org.mockito.Mock;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
import com.github.openjson.JSONObject;
-@PrepareForTest(LabelDao.class)
public class TestRoomFlowMocked extends BaseMockedTest {
private static final Long USER_ID = 1L;
private static final Long ROOM_ID = 5L;
@@ -62,16 +55,17 @@ public class TestRoomFlowMocked extends BaseMockedTest {
private IClientManager cm;
@Override
+ @BeforeEach
public void setup() {
super.setup();
- doReturn(mock(MediaPipeline.class)).when(client).createMediaPipeline(any(Transaction.class));
+ lenient().doReturn(mock(MediaPipeline.class)).when(client).createMediaPipeline(any(Transaction.class));
User u = new User();
u.setId(USER_ID);
u.setFirstname("firstname");
u.setLastname("lastname");
- doReturn(u).when(userDao).get(USER_ID);
+ lenient().doReturn(u).when(userDao).get(USER_ID);
doReturn(true).when(handler).isConnected();
- when(recDao.update(any(Recording.class))).thenAnswer((invocation) -> {
+ lenient().when(recDao.update(any(Recording.class))).thenAnswer((invocation) -> {
Object[] args = invocation.getArguments();
Recording r = (Recording) args[0];
r.setId(1L);
@@ -81,7 +75,9 @@ public class TestRoomFlowMocked extends BaseMockedTest {
@Test
public void testNoClient() {
- handler.onMessage(null, MSG_BASE.put("id", "aa"));
+ runWrapped(() -> {
+ handler.onMessage(null, MSG_BASE.put("id", "aa"));
+ });
}
private Client getClient() {
@@ -90,21 +86,25 @@ public class TestRoomFlowMocked extends BaseMockedTest {
@Test
public void testNoRoom() {
- handler.onMessage(getClient(), MSG_BASE.put("id", "aa"));
+ runWrapped(() -> {
+ handler.onMessage(getClient(), MSG_BASE.put("id", "aa"));
+ });
}
@Test
public void testRecordingAllowed() {
- Client c = getClient();
- assertFalse(streamProcessor.recordingAllowed(c));
- c.setRoom(new Room());
- assertFalse(streamProcessor.recordingAllowed(c));
- c.getRoom().setId(ROOM_ID);
- c.getRoom().setAllowRecording(true);
- assertFalse(streamProcessor.recordingAllowed(c));
- c.allow(Room.Right.MODERATOR);
- doReturn(c.getRoom()).when(roomDao).get(ROOM_ID);
- assertTrue(streamProcessor.recordingAllowed(c));
+ runWrapped(() -> {
+ Client c = getClient();
+ assertFalse(streamProcessor.recordingAllowed(c));
+ c.setRoom(new Room());
+ assertFalse(streamProcessor.recordingAllowed(c));
+ c.getRoom().setId(ROOM_ID);
+ c.getRoom().setAllowRecording(true);
+ assertFalse(streamProcessor.recordingAllowed(c));
+ c.allow(Room.Right.MODERATOR);
+ doReturn(c.getRoom()).when(roomDao).get(ROOM_ID);
+ assertTrue(streamProcessor.recordingAllowed(c));
+ });
}
private Client getClientWithRoom() {
@@ -129,28 +129,30 @@ public class TestRoomFlowMocked extends BaseMockedTest {
@Test
public void testWannaRecord2() throws Exception {
- JSONObject msg = new JSONObject(MSG_BASE.toString()).put("id", "wannaRecord");
- Client c = getClientFull();
- c.getRoom().setType(Room.Type.INTERVIEW);
- doReturn(c.getRoom()).when(roomDao).get(ROOM_ID);
- handler.onMessage(c, msg);
+ runWrapped(() -> {
+ JSONObject msg = new JSONObject(MSG_BASE.toString()).put("id", "wannaRecord");
+ Client c = getClientFull();
+ c.getRoom().setType(Room.Type.INTERVIEW);
+ doReturn(c.getRoom()).when(roomDao).get(ROOM_ID);
+ handler.onMessage(c, msg);
+ });
}
@Test
public void testRecordRecord() throws Exception {
- PowerMockito.mockStatic(LabelDao.class);
- BDDMockito.given(LabelDao.getLanguage(any(Long.class))).willReturn(new OmLanguage(Locale.ENGLISH));
- JSONObject msg = new JSONObject(MSG_BASE.toString())
- .put("id", "wannaRecord")
- .put("width", 640)
- .put("height", 480)
- .put("shareType", "shareType")
- .put("fps", "fps")
- ;
- Client c = getClientFull();
- doReturn(c.getRoom()).when(roomDao).get(ROOM_ID);
- handler.onMessage(c, msg);
- assertTrue(streamProcessor.isSharing(ROOM_ID));
- handler.onMessage(c, msg);
+ runWrapped(() -> {
+ JSONObject msg = new JSONObject(MSG_BASE.toString())
+ .put("id", "wannaRecord")
+ .put("width", 640)
+ .put("height", 480)
+ .put("shareType", "shareType")
+ .put("fps", "fps")
+ ;
+ Client c = getClientFull();
+ doReturn(c.getRoom()).when(roomDao).get(ROOM_ID);
+ handler.onMessage(c, msg);
+ assertTrue(streamProcessor.isSharing(ROOM_ID));
+ handler.onMessage(c, msg);
+ });
}
}
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestSetupFlowMocked.java b/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestSetupFlowMocked.java
index 558b394..923e8a6 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestSetupFlowMocked.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/core/remote/TestSetupFlowMocked.java
@@ -23,24 +23,20 @@ import static org.apache.openmeetings.core.remote.KurentoHandler.MODE_TEST;
import static org.apache.openmeetings.core.remote.KurentoHandler.PARAM_CANDIDATE;
import static org.apache.openmeetings.core.remote.KurentoHandler.TAG_MODE;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
import org.apache.openmeetings.db.entity.basic.WsClient;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.kurento.client.MediaPipeline;
-import org.kurento.client.MediaProfileSpecType;
-import org.kurento.client.PlayerEndpoint;
-import org.kurento.client.RecorderEndpoint;
import org.kurento.client.Transaction;
-import org.kurento.client.WebRtcEndpoint;
import com.github.openjson.JSONObject;
public class TestSetupFlowMocked extends BaseMockedTest {
@Override
+ @BeforeEach
public void setup() {
super.setup();
doReturn(true).when(handler).isConnected();
@@ -49,71 +45,69 @@ public class TestSetupFlowMocked extends BaseMockedTest {
@Test
public void testMsgTestWannaRecord() throws Exception {
- JSONObject msg = new JSONObject(MSG_BASE.toString()).put("id", "wannaRecord");
- WsClient c = new WsClient("sessionId", 0);
- handler.onMessage(c, msg);
+ runWrapped(() -> {
+ JSONObject msg = new JSONObject(MSG_BASE.toString()).put("id", "wannaRecord");
+ WsClient c = new WsClient("sessionId", 0);
+ handler.onMessage(c, msg);
+ });
}
@Test
public void testMsgTestRecord1() throws Exception {
- doReturn(mock(MediaPipeline.class)).when(client).createMediaPipeline(any(Transaction.class));
- WebRtcEndpoint.Builder builder = mock(WebRtcEndpoint.Builder.class);
- whenNew(WebRtcEndpoint.Builder.class).withArguments(any(MediaPipeline.class)).thenReturn(builder);
- doReturn(mock(WebRtcEndpoint.class)).when(builder).build();
+ runWrapped(() -> {
+ doReturn(mock(MediaPipeline.class)).when(client).createMediaPipeline(any(Transaction.class));
- RecorderEndpoint.Builder recBuilder = mock(RecorderEndpoint.Builder.class);
- whenNew(RecorderEndpoint.Builder.class).withArguments(any(MediaPipeline.class), anyString()).thenReturn(recBuilder);
- doReturn(recBuilder).when(recBuilder).stopOnEndOfStream();
- doReturn(recBuilder).when(recBuilder).withMediaProfile(any(MediaProfileSpecType.class));
- doReturn(mock(RecorderEndpoint.class)).when(recBuilder).build();
-
- WsClient c = new WsClient("sessionId", 0);
- for (boolean audio : new boolean[] {true, false}) {
- for (boolean video : new boolean[] {true, false}) {
- JSONObject msg = new JSONObject(MSG_BASE.toString())
- .put("id", "record")
- .put("sdpOffer", "")
- .put("audio", audio)
- .put("video", video);
- handler.onMessage(c, msg);
+ WsClient c = new WsClient("sessionId", 0);
+ for (boolean audio : new boolean[] {true, false}) {
+ for (boolean video : new boolean[] {true, false}) {
+ JSONObject msg = new JSONObject(MSG_BASE.toString())
+ .put("id", "record")
+ .put("sdpOffer", "")
+ .put("audio", audio)
+ .put("video", video);
+ handler.onMessage(c, msg);
+ }
}
- }
- JSONObject iceMsg = new JSONObject(MSG_BASE.toString())
- .put("id", "iceCandidate")
- .put(PARAM_CANDIDATE, new JSONObject()
- .put(PARAM_CANDIDATE, "candidate")
- .put("sdpMid", "sdpMid")
- .put("sdpMLineIndex", 1));
- handler.onMessage(c, iceMsg);
- PlayerEndpoint.Builder playBuilder = mock(PlayerEndpoint.Builder.class);
- whenNew(PlayerEndpoint.Builder.class).withArguments(any(MediaPipeline.class), anyString()).thenReturn(playBuilder);
- doReturn(mock(PlayerEndpoint.class)).when(playBuilder).build();
- handler.onMessage(c, new JSONObject(MSG_BASE.toString())
- .put("id", "play")
- .put("sdpOffer", "sdpOffer"));
- testProcessor.destroy();
+ JSONObject iceMsg = new JSONObject(MSG_BASE.toString())
+ .put("id", "iceCandidate")
+ .put(PARAM_CANDIDATE, new JSONObject()
+ .put(PARAM_CANDIDATE, "candidate")
+ .put("sdpMid", "sdpMid")
+ .put("sdpMLineIndex", 1));
+ handler.onMessage(c, iceMsg);
+ handler.onMessage(c, new JSONObject(MSG_BASE.toString())
+ .put("id", "play")
+ .put("sdpOffer", "sdpOffer"));
+ testProcessor.destroy();
+ });
}
@Test
public void testMsgTestIceCandidate() throws Exception {
- JSONObject msg = new JSONObject(MSG_BASE.toString())
- .put("id", "iceCandidate")
- .put(KurentoHandler.PARAM_CANDIDATE, new JSONObject());
- WsClient c = new WsClient("sessionId", 0);
- handler.onMessage(c, msg);
+ runWrapped(() -> {
+ JSONObject msg = new JSONObject(MSG_BASE.toString())
+ .put("id", "iceCandidate")
+ .put(KurentoHandler.PARAM_CANDIDATE, new JSONObject());
+ WsClient c = new WsClient("sessionId", 0);
+ handler.onMessage(c, msg);
+ });
}
@Test
public void testMsgTestWannaPlay() throws Exception {
- JSONObject msg = new JSONObject(MSG_BASE.toString()).put("id", "wannaPlay");
- WsClient c = new WsClient("sessionId", 0);
- handler.onMessage(c, msg);
+ runWrapped(() -> {
+ JSONObject msg = new JSONObject(MSG_BASE.toString()).put("id", "wannaPlay");
+ WsClient c = new WsClient("sessionId", 0);
+ handler.onMessage(c, msg);
+ });
}
@Test
public void testMsgTestPlay() throws Exception {
- JSONObject msg = new JSONObject(MSG_BASE.toString()).put("id", "play");
- WsClient c = new WsClient("sessionId", 0);
- handler.onMessage(c, msg);
+ runWrapped(() -> {
+ JSONObject msg = new JSONObject(MSG_BASE.toString()).put("id", "play");
+ WsClient c = new WsClient("sessionId", 0);
+ handler.onMessage(c, msg);
+ });
}
}
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/gui/TestGui.java b/openmeetings-core/src/test/java/org/apache/openmeetings/gui/TestGui.java
index 2541fd0..7c27196 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/gui/TestGui.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/gui/TestGui.java
@@ -18,7 +18,7 @@
*/
package org.apache.openmeetings.gui;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
public class TestGui {
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/rdc/TestKeyCodesNumber.java b/openmeetings-core/src/test/java/org/apache/openmeetings/rdc/TestKeyCodesNumber.java
index 14e1a9b..f8e8e95 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/rdc/TestKeyCodesNumber.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/rdc/TestKeyCodesNumber.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.rdc;
import java.awt.event.KeyEvent;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/rdc/TestReadKeyCodesNumber.java b/openmeetings-core/src/test/java/org/apache/openmeetings/rdc/TestReadKeyCodesNumber.java
index 572cff7..29d3c07 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/rdc/TestReadKeyCodesNumber.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/rdc/TestReadKeyCodesNumber.java
@@ -18,7 +18,7 @@
*/
package org.apache.openmeetings.rdc;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/openmeetings-db/src/test/java/org/apache/openmeetings/db/entity/file/FileItemTest.java b/openmeetings-db/src/test/java/org/apache/openmeetings/db/entity/file/FileItemTest.java
index 11e5156..cc443c2 100644
--- a/openmeetings-db/src/test/java/org/apache/openmeetings/db/entity/file/FileItemTest.java
+++ b/openmeetings-db/src/test/java/org/apache/openmeetings/db/entity/file/FileItemTest.java
@@ -18,52 +18,26 @@
*/
package org.apache.openmeetings.db.entity.file;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.when;
-import static org.mockito.MockitoAnnotations.initMocks;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.mockStatic;
import java.io.File;
import org.apache.openmeetings.util.OmFileHelper;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(OmFileHelper.class)
-public class FileItemTest {
-
- @Mock
- private OmFileHelper omFileHelper;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.MockedStatic;
+import org.mockito.junit.jupiter.MockitoExtension;
- @InjectMocks
+@ExtendWith(MockitoExtension.class)
+public class FileItemTest {
private FileItem fileItem;
- @Before
- public void setup() {
- initMocks(this);
-
- // Setup path to be local test resources
- mockStatic(OmFileHelper.class);
-
- // PDF file tests
- when(OmFileHelper.getFileExt("6594186e-c6bb-49d5-9f66-829e45599aaa.pdf")).thenReturn("pdf");
-
- // DOCX file tests
- when(OmFileHelper.getFileExt("d44ab2c5-fd5d-4903-8fa7-292286d72a5f.docx")).thenReturn("docx");
- when(OmFileHelper.getFileExt("d44ab2c5-fd5d-4903-8fa7-292286d72a5f.pdf")).thenReturn("pdf");
-
- // Generic
- when(OmFileHelper.getFileExt("page-0000.png")).thenReturn("png");
- when(OmFileHelper.getFileExt("page-0001.png")).thenReturn("png");
-
- when(OmFileHelper.getUploadFilesDir()).thenReturn(new File("src/test/resources/org/apache/openmeetings/db/entity/file"));
+ @BeforeEach
+ void createNewStack() {
+ fileItem = new FileItem();
}
@Test
@@ -108,6 +82,13 @@ public class FileItemTest {
assertEquals(f.getName(), "6594186e-c6bb-49d5-9f66-829e45599aaa.pdf");
}
+ private void wrapper(Runnable r) {
+ try (MockedStatic<OmFileHelper> theMock = mockStatic(OmFileHelper.class)) {
+ theMock.when(OmFileHelper::getUploadFilesDir).thenReturn(new File("src/test/resources/org/apache/openmeetings/db/entity/file"));
+ r.run();
+ }
+ }
+
@Test
public void testGetOriginalWithDOCXWithOriginalName() {
// Setup file
@@ -116,10 +97,12 @@ public class FileItemTest {
fileItem.setName("Sample Document.docx");
fileItem.setType(BaseFileItem.Type.PRESENTATION);
- File f = fileItem.getOriginal();
+ wrapper(() -> {
+ File f = fileItem.getOriginal();
- assertTrue(f.getName().endsWith("docx"));
- assertEquals(f.getName(), "d44ab2c5-fd5d-4903-8fa7-292286d72a5f.docx");
+ assertTrue(f.getName().endsWith("docx"));
+ assertEquals(f.getName(), "d44ab2c5-fd5d-4903-8fa7-292286d72a5f.docx");
+ });
}
@Test
@@ -129,11 +112,12 @@ public class FileItemTest {
fileItem.setHash("d44ab2c5-fd5d-4903-8fa7-292286d72a5f");
fileItem.setName("Random Name");
fileItem.setType(BaseFileItem.Type.PRESENTATION);
+ wrapper(() -> {
+ File f = fileItem.getOriginal();
- File f = fileItem.getOriginal();
-
- assertTrue(f.getName().endsWith("docx"));
- assertEquals(f.getName(), "d44ab2c5-fd5d-4903-8fa7-292286d72a5f.docx");
+ assertTrue(f.getName().endsWith("docx"));
+ assertEquals(f.getName(), "d44ab2c5-fd5d-4903-8fa7-292286d72a5f.docx");
+ });
}
@Test
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 5c1fcdb..ebc04e5 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -718,6 +718,13 @@ public class BackupImport {
readList(unmarshaller, base, "rooms.xml", ROOM_LIST_NODE, ROOM_NODE, eClazz, r -> {
Long roomId = r.getId();
+ if (r.getOwnerId() != null) {
+ Long newOwnerId = userMap.get(r.getOwnerId());
+ if (newOwnerId == null) {
+ return; // owner was deleted
+ }
+ r.setOwnerId(newOwnerId);
+ }
// We need to reset ids as openJPA reject to store them otherwise
r.setId(null);
if (r.getModerators() != null) {
@@ -884,6 +891,17 @@ public class BackupImport {
}
file.setOwnerId(newOwnerId);
}
+ if (file.getInsertedBy() != null) {
+ Long newInsertedBy = userMap.get(file.getInsertedBy());
+ file.setInsertedBy(newInsertedBy);
+ }
+ if (file.getGroupId() != null) {
+ Long newGroupId = groupMap.get(file.getGroupId());
+ if (newGroupId == null) {
+ return true; // owner was deleted
+ }
+ file.setGroupId(newGroupId);
+ }
return false;
}
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index e192aa6..47e665d 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -718,7 +718,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
+ <artifactId>mockito-inline</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/OmMenuItem.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/OmMenuItem.java
index 003cf14..0056b8e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/OmMenuItem.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/OmMenuItem.java
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.web.common.menu;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
import java.util.ArrayList;
@@ -80,24 +81,15 @@ public class OmMenuItem implements INavbarComponent {
@Override
public AbstractLink create(String markupId) {
AbstractLink item;
- if (Strings.isEmpty(title)) {
- item = new MenuDivider();
- } else if (items.isEmpty()) {
- item = new NavbarAjaxLink<String>(markupId, Model.of(title)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- OmMenuItem.this.onClick(target);
- }
- }.setIconType(icon);
+ if (items.isEmpty()) {
+ item = createLink(markupId, true);
} else {
item = new NavbarDropDownButton(Model.of(title), Model.of(icon)) {
private static final long serialVersionUID = 1L;
@Override
protected List<AbstractLink> newSubMenuButtons(String markupId) {
- return items.stream().map(mItem -> ((OmMenuItem)mItem).create(markupId)).collect(Collectors.toList());
+ return items.stream().map(mItem -> ((OmMenuItem)mItem).createLink(markupId, false)).collect(Collectors.toList());
}
};
}
@@ -106,6 +98,24 @@ public class OmMenuItem implements INavbarComponent {
return item;
}
+ private AbstractLink createLink(String markupId, boolean topLevel) {
+ if (Strings.isEmpty(title)) {
+ return new MenuDivider();
+ }
+ NavbarAjaxLink<String> link = new NavbarAjaxLink<>(markupId, Model.of(title)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ OmMenuItem.this.onClick(target);
+ }
+ };
+ if (topLevel) {
+ link.add(AttributeModifier.append(ATTR_CLASS, "nav-link"));
+ }
+ return link.setIconType(icon);
+ }
+
@Override
public ComponentPosition getPosition() {
return ComponentPosition.LEFT; //FIXME TODO
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
index fdf50f9..ea6a345 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
@@ -120,6 +120,7 @@ public class InstallWizard extends BootstrapWizard {
private NotificationPanel feedback;
private final CompoundPropertyModel<InstallationConfig> model;
private final List<Button> buttons = new ArrayList<>(4);
+ private WizardButtonBar btnBar;
@SpringBean
private ImportInitvalues initvalues;
@@ -163,7 +164,7 @@ public class InstallWizard extends BootstrapWizard {
@Override
protected Component newButtonBar(String id) {
- return new WizardButtonBar(id, this) {
+ btnBar = new WizardButtonBar(id, this) {
private static final long serialVersionUID = 1L;
@Override
@@ -222,6 +223,8 @@ public class InstallWizard extends BootstrapWizard {
return button;
}
};
+ btnBar.setOutputMarkupId(true);
+ return btnBar;
}
private abstract class BaseStep extends DynamicWizardStep {
@@ -771,7 +774,7 @@ public class InstallWizard extends BootstrapWizard {
stop(target);
progressBar.setVisible(false);
congrat.show(initDbType != dbType);
- target.add(container, desc.setVisible(false));
+ target.add(container, desc.setVisible(false), btnBar.setVisible(false));
}
};
private final Label desc = new Label("desc", "");
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java
index e102b87..3de3172 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.backup;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
@@ -26,7 +27,11 @@ import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
+import org.apache.openmeetings.db.dao.file.FileItemDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.User;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,6 +44,8 @@ public class TestImportOld extends AbstractTestImport {
private RoomDao roomDao;
@Autowired
private MeetingMemberDao meetingMemberDao;
+ @Autowired
+ private FileItemDao fileDao;
@Test
public void importOldVersions() {
@@ -84,4 +91,28 @@ public class TestImportOld extends AbstractTestImport {
log.debug("... Done.");
}
}
+
+ /**
+ * Test for https://issues.apache.org/jira/browse/OPENMEETINGS-2423
+ *
+ * @throws Exception
+ */
+ @Test
+ public void importJira2423() throws Exception {
+ try (InputStream is = getClass().getClassLoader().getResourceAsStream("org/apache/openmeetings/backup/jira2423/backup_2423.zip")) {
+ backupImport.performImport(is, new ProgressHolder());
+
+ Group grp2 = groupDao.get("group2_jira_2423");
+ User usr2 = userDao.getByLogin("testUser2_jira_2423", User.Type.USER, null);
+ assertTrue(usr2.getGroupUsers().stream().filter(gu -> gu.getGroup().getId().equals(grp2.getId())).findFirst().isPresent(), "User2 should belong to group2");
+ roomDao.getMyRooms(usr2.getId(), "bla", "bla1").forEach(r -> {
+ assertTrue(r.getName().contains("user2_jira_2423"));
+ });
+ FileItem f1 = fileDao.getByHash("820b356c-2c96-4634-90c4-3e490432987f");
+ assertEquals(usr2.getId(), f1.getInsertedBy(), "Inserted by is wrong");
+ assertEquals(usr2.getId(), f1.getOwnerId(), "Owner is wrong");
+ FileItem f2 = fileDao.getByHash("7af3f90d-2a8d-44fa-9e0f-79fd87511cc6");
+ assertEquals(grp2.getId(), f2.getGroupId(), "Group is wrong");
+ }
+ }
}
diff --git a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/jira2423/backup_2423.zip b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/jira2423/backup_2423.zip
new file mode 100644
index 0000000..f17518c
Binary files /dev/null and b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/jira2423/backup_2423.zip differ
diff --git a/pom.xml b/pom.xml
index 8752cdb..23e06e9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -114,7 +114,6 @@
<license.excludedScopes>test</license.excludedScopes>
<bcprov-jdk15on.version>1.66</bcprov-jdk15on.version>
<mockito.version>3.5.10</mockito.version>
- <powermock.version>2.0.7</powermock.version>
<quartz.version>2.3.2</quartz.version>
<kurento.version>6.14.0</kurento.version>
<!-- Exclude all generated code -->
@@ -616,7 +615,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
+ <artifactId>mockito-inline</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
@@ -627,18 +626,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.powermock</groupId>
- <artifactId>powermock-module-junit4</artifactId>
- <version>${powermock.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.powermock</groupId>
- <artifactId>powermock-api-mockito2</artifactId>
- <version>${powermock.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
@@ -676,24 +663,13 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
+ <artifactId>mockito-inline</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.powermock</groupId>
- <artifactId>powermock-module-junit4</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.powermock</groupId>
- <artifactId>powermock-api-mockito2</artifactId>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>