diff --git a/samples/websocket/build.gradle b/samples/websocket/build.gradle index b535f17..6731f28 100644 --- a/samples/websocket/build.gradle +++ b/samples/websocket/build.gradle @@ -23,7 +23,7 @@ dependencies { "org.springframework.boot:spring-boot-starter-thymeleaf", "org.springframework.boot:spring-boot-starter-websocket", "org.springframework:spring-websocket:${springVersion}", - "org.springframework.data:spring-data-jpa:1.7.0.RELEASE", + "org.springframework.data:spring-data-jpa", "nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect", "com.h2database:h2", "org.springframework.security:spring-security-web:$springSecurityVersion", diff --git a/samples/websocket/src/test/java/sample/ApplicationTests.java b/samples/websocket/src/test/java/sample/ApplicationTests.java new file mode 100644 index 0000000..d043b38 --- /dev/null +++ b/samples/websocket/src/test/java/sample/ApplicationTests.java @@ -0,0 +1,72 @@ +/* + * Copyright 2014-2016 the original author or authors. + * + * Licensed 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 sample; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutionException; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.WebIntegrationTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.util.concurrent.ListenableFuture; +import org.springframework.web.socket.TextMessage; +import org.springframework.web.socket.WebSocketHandler; +import org.springframework.web.socket.WebSocketSession; +import org.springframework.web.socket.client.standard.StandardWebSocketClient; +import org.springframework.web.socket.sockjs.client.RestTemplateXhrTransport; +import org.springframework.web.socket.sockjs.client.SockJsClient; +import org.springframework.web.socket.sockjs.client.Transport; +import org.springframework.web.socket.sockjs.client.WebSocketTransport; + +/** + * @author Rob Winch + */ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(Application.class) +@WebIntegrationTest(randomPort = true) +public class ApplicationTests { + @Rule + public final ExpectedException thrown = ExpectedException.none(); + + @Value("${local.server.port}") + String port; + + @Autowired + WebSocketHandler webSocketHandler; + + @Test + public void run() throws Exception { + List transports = new ArrayList(2); + transports.add(new WebSocketTransport(new StandardWebSocketClient())); + transports.add(new RestTemplateXhrTransport()); + + SockJsClient sockJsClient = new SockJsClient(transports); + ListenableFuture wsSession = sockJsClient.doHandshake( + this.webSocketHandler, "ws://localhost:" + this.port + "/sockjs"); + + this.thrown.expect(ExecutionException.class); + wsSession.get().sendMessage(new TextMessage("a")); + } +}