diff options
Diffstat (limited to 'backend/src/test')
-rw-r--r-- | backend/src/test/java/org/luxons/sevenwonders/SevenWondersTest.java | 41 | ||||
-rw-r--r-- | backend/src/test/java/org/luxons/sevenwonders/test/api/SevenWondersSession.java | 9 |
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); |