summaryrefslogtreecommitdiff
path: root/backend/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/test')
-rw-r--r--backend/src/test/java/org/luxons/sevenwonders/SevenWondersTest.java41
-rw-r--r--backend/src/test/java/org/luxons/sevenwonders/test/api/SevenWondersSession.java9
2 files changed, 41 insertions, 9 deletions
diff --git a/backend/src/test/java/org/luxons/sevenwonders/SevenWondersTest.java b/backend/src/test/java/org/luxons/sevenwonders/SevenWondersTest.java
index d6415376..fe0c4d83 100644
--- a/backend/src/test/java/org/luxons/sevenwonders/SevenWondersTest.java
+++ b/backend/src/test/java/org/luxons/sevenwonders/SevenWondersTest.java
@@ -1,6 +1,7 @@
package org.luxons.sevenwonders;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.junit.After;
@@ -14,6 +15,7 @@ import org.luxons.sevenwonders.test.api.ApiPlayerTurnInfo;
import org.luxons.sevenwonders.test.api.SevenWondersClient;
import org.luxons.sevenwonders.test.api.SevenWondersSession;
import org.luxons.sevenwonders.test.client.Channel;
+import org.luxons.sevenwonders.test.client.JackstompSession;
import org.springframework.boot.context.embedded.LocalServerPort;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
@@ -21,6 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@@ -61,10 +64,37 @@ public class SevenWondersTest {
session.disconnect();
}
+ private SevenWondersSession newPlayer(String name) throws InterruptedException, TimeoutException,
+ ExecutionException {
+ SevenWondersSession otherSession = client.connect(serverUrl);
+ otherSession.chooseName(name);
+ return otherSession;
+ }
+
+ @Test
+ public void lobbySubscription_ignoredForOutsiders() throws InterruptedException, ExecutionException,
+ TimeoutException {
+ SevenWondersSession ownerSession = newPlayer("GameOwner");
+ SevenWondersSession session1 = newPlayer("Player1");
+ SevenWondersSession session2 = newPlayer( "Player2");
+ String gameName = "Test Game";
+ ApiLobby lobby = ownerSession.createGame(gameName);
+ session1.joinGame(lobby.getId());
+ session2.joinGame(lobby.getId());
+
+ SevenWondersSession outsiderSession = newPlayer("Outsider");
+ JackstompSession session = outsiderSession.getJackstompSession();
+ Channel<Object> started = session.subscribeEmptyMsgs("/topic/lobby/" + lobby.getId() + "/started");
+
+ ownerSession.startGame(lobby.getId());
+ Object nothing = started.next(1, TimeUnit.SECONDS);
+ assertNull(nothing);
+ disconnect(ownerSession, session1, session2, outsiderSession);
+ }
+
@Test
public void createGame_success() throws InterruptedException, ExecutionException, TimeoutException {
- SevenWondersSession ownerSession = client.connect(serverUrl);
- ownerSession.chooseName("GameOwner");
+ SevenWondersSession ownerSession = newPlayer("GameOwner");
String gameName = "Test Game";
ApiLobby lobby = ownerSession.createGame(gameName);
@@ -74,13 +104,6 @@ public class SevenWondersTest {
disconnect(ownerSession);
}
- private SevenWondersSession newPlayer(String name) throws InterruptedException, TimeoutException,
- ExecutionException {
- SevenWondersSession otherSession = client.connect(serverUrl);
- otherSession.chooseName(name);
- return otherSession;
- }
-
@Test
public void createGame_seenByConnectedPlayers() throws InterruptedException, ExecutionException, TimeoutException {
SevenWondersSession otherSession = newPlayer("OtherPlayer");
diff --git a/backend/src/test/java/org/luxons/sevenwonders/test/api/SevenWondersSession.java b/backend/src/test/java/org/luxons/sevenwonders/test/api/SevenWondersSession.java
index 093d391a..3f76a54b 100644
--- a/backend/src/test/java/org/luxons/sevenwonders/test/api/SevenWondersSession.java
+++ b/backend/src/test/java/org/luxons/sevenwonders/test/api/SevenWondersSession.java
@@ -3,6 +3,7 @@ package org.luxons.sevenwonders.test.api;
import org.luxons.sevenwonders.actions.ChooseNameAction;
import org.luxons.sevenwonders.actions.CreateGameAction;
import org.luxons.sevenwonders.actions.JoinGameAction;
+import org.luxons.sevenwonders.errors.UIError;
import org.luxons.sevenwonders.test.client.Channel;
import org.luxons.sevenwonders.test.client.JackstompSession;
@@ -18,10 +19,18 @@ public class SevenWondersSession {
this.session = session;
}
+ public JackstompSession getJackstompSession() {
+ return session;
+ }
+
public void disconnect() {
session.disconnect();
}
+ public Channel<UIError> watchErrors() {
+ return session.subscribe("/user/queue/errors", UIError.class);
+ }
+
public ApiPlayer chooseName(String displayName) throws InterruptedException {
ChooseNameAction action = new ChooseNameAction();
action.setPlayerName(displayName);
bgstack15