summaryrefslogtreecommitdiff
path: root/example/websockets/app/test/src/ExampleTests.scala
diff options
context:
space:
mode:
Diffstat (limited to 'example/websockets/app/test/src/ExampleTests.scala')
-rw-r--r--example/websockets/app/test/src/ExampleTests.scala47
1 files changed, 47 insertions, 0 deletions
diff --git a/example/websockets/app/test/src/ExampleTests.scala b/example/websockets/app/test/src/ExampleTests.scala
new file mode 100644
index 0000000..01863e8
--- /dev/null
+++ b/example/websockets/app/test/src/ExampleTests.scala
@@ -0,0 +1,47 @@
+package app
+import com.github.andyglow.websocket.WebsocketClient
+import utest._
+
+object ExampleTests extends TestSuite{
+ def test[T](example: cask.main.BaseMain)(f: String => T): T = {
+ val server = io.undertow.Undertow.builder
+ .addHttpListener(8080, "localhost")
+ .setHandler(example.defaultHandler)
+ .build
+ server.start()
+ val res =
+ try f("http://localhost:8080")
+ finally server.stop()
+ res
+ }
+
+ val tests = Tests{
+ 'VariableRoutes - test(Websockets){ host =>
+ @volatile var out = List.empty[String]
+ val cli = WebsocketClient[String]("ws://localhost:8080/connect/haoyi") {
+ case str => out = str :: out
+ }
+
+ // 4. open websocket
+ val ws = cli.open()
+
+ // 5. send messages
+ ws ! "hello"
+ ws ! "world"
+ ws ! ""
+ Thread.sleep(100)
+ out ==> List("haoyi world", "haoyi hello")
+
+ val cli2 = WebsocketClient[String]("ws://localhost:8080/connect/nobody") {
+ case str => out = str :: out
+ }
+
+ val error =
+ try cli2.open()
+ catch{case e: Throwable => e.getMessage}
+
+ assert(error.toString.contains("Invalid handshake response getStatus: 403 Forbidden"))
+ }
+
+ }
+}