OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2022-01-13 4545664bbece1b1b185945376b344b1660669a53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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)