123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- Stomp = require('../../lib/stomp.js').Stomp
- StompServerMock = require('./server.mock.js').StompServerMock
- Stomp.WebSocketClass = StompServerMock
- describe "Stomp", ->
- it "lets you connect to a server with a websocket and get a callback", ->
- ws = new StompServerMock("ws://mocked/stomp/server")
- client = Stomp.over(ws)
- connected = false
- client.connect("guest", "guest", ->
- connected = true
- )
- waitsFor -> connected
- runs -> expect(client.connected).toBe(true)
-
- it "lets you connect to a server and get a callback", ->
- client = Stomp.client("ws://mocked/stomp/server")
- connected = false
- client.connect("guest", "guest", ->
- connected = true
- )
- waitsFor -> connected
- runs -> expect(client.connected).toBe(true)
-
- it "lets you subscribe to a destination", ->
- client = Stomp.client("ws://mocked/stomp/server")
- subscription = null
- client.connect("guest", "guest", ->
- subscription = client.subscribe("/queue/test")
- )
- waitsFor -> subscription
- runs -> expect(Object.keys(client.ws.subscriptions)).toContain(subscription.id)
-
- it "lets you publish a message to a destination", ->
- client = Stomp.client("ws://mocked/stomp/server")
- message = null
- client.connect("guest", "guest", ->
- message = "Hello world!"
- client.send("/queue/test", {}, message)
- )
- waitsFor -> message
- runs -> expect(client.ws.messages.pop().toString()).toContain(message)
-
- it "lets you unsubscribe from a destination", ->
- client = Stomp.client("ws://mocked/stomp/server")
- unsubscribed = false
- subscription = null
- client.connect("guest", "guest", ->
- subscription = client.subscribe("/queue/test")
- subscription.unsubscribe()
- unsubscribed = true
- )
- waitsFor -> unsubscribed
- runs -> expect(Object.keys(client.ws.subscriptions)).not.toContain(subscription.id)
-
- it "lets you receive messages only while subscribed", ->
- client = Stomp.client("ws://mocked/stomp/server")
- subscription = null
- messages = []
- client.connect("guest", "guest", ->
- subscription = client.subscribe("/queue/test", (msg) ->
- messages.push(msg)
- )
- )
- waitsFor -> subscription
- runs ->
- client.ws.test_send(subscription.id, Math.random())
- client.ws.test_send(subscription.id, Math.random())
- expect(messages.length).toEqual(2)
- subscription.unsubscribe()
- try
- client.ws.test_send(id, Math.random())
- catch err
- null
- expect(messages.length).toEqual(2)
-
- it "lets you send messages in a transaction", ->
- client = Stomp.client("ws://mocked/stomp/server")
- connected = false
- client.connect("guest", "guest", ->
- connected = true
- )
- waitsFor -> connected
- runs ->
- txid = "123"
- client.begin(txid)
- client.send("/queue/test", {transaction: txid}, "messages 1")
- client.send("/queue/test", {transaction: txid}, "messages 2")
- expect(client.ws.messages.length).toEqual(0)
- client.send("/queue/test", {transaction: txid}, "messages 3")
- client.commit(txid)
- expect(client.ws.messages.length).toEqual(3)
-
- it "lets you abort a transaction", ->
- client = Stomp.client("ws://mocked/stomp/server")
- connected = false
- client.connect("guest", "guest", ->
- connected = true
- )
- waitsFor -> connected
- runs ->
- txid = "123"
- client.begin(txid)
- client.send("/queue/test", {transaction: txid}, "messages 1")
- client.send("/queue/test", {transaction: txid}, "messages 2")
- expect(client.ws.messages.length).toEqual(0)
- client.send("/queue/test", {transaction: txid}, "messages 3")
- client.abort(txid)
- expect(client.ws.messages.length).toEqual(0)
|