stompjs
Version:
STOMP for JavaScript apps (Web browser & node.js)
112 lines (101 loc) • 3.78 kB
text/coffeescript
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)