vines 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. data/README +1 -1
  2. data/Rakefile +10 -10
  3. data/conf/certs/ca-bundle.crt +112 -378
  4. data/conf/config.rb +18 -9
  5. data/lib/vines.rb +8 -1
  6. data/lib/vines/command/cert.rb +2 -1
  7. data/lib/vines/command/init.rb +11 -0
  8. data/lib/vines/command/ldap.rb +6 -3
  9. data/lib/vines/command/schema.rb +1 -1
  10. data/lib/vines/config.rb +57 -146
  11. data/lib/vines/config/host.rb +85 -0
  12. data/lib/vines/config/port.rb +111 -0
  13. data/lib/vines/contact.rb +1 -1
  14. data/lib/vines/jid.rb +26 -4
  15. data/lib/vines/kit.rb +6 -0
  16. data/lib/vines/log.rb +24 -0
  17. data/lib/vines/router.rb +70 -38
  18. data/lib/vines/stanza.rb +45 -8
  19. data/lib/vines/stanza/iq.rb +3 -3
  20. data/lib/vines/stanza/iq/disco_info.rb +5 -1
  21. data/lib/vines/stanza/iq/disco_items.rb +3 -0
  22. data/lib/vines/stanza/iq/private_storage.rb +9 -5
  23. data/lib/vines/stanza/iq/roster.rb +11 -12
  24. data/lib/vines/stanza/iq/vcard.rb +4 -4
  25. data/lib/vines/stanza/iq/version.rb +25 -0
  26. data/lib/vines/stanza/message.rb +4 -5
  27. data/lib/vines/stanza/presence.rb +20 -18
  28. data/lib/vines/stanza/presence/probe.rb +3 -4
  29. data/lib/vines/stanza/presence/subscribe.rb +4 -3
  30. data/lib/vines/stanza/presence/subscribed.rb +6 -5
  31. data/lib/vines/stanza/presence/unsubscribe.rb +4 -4
  32. data/lib/vines/stanza/presence/unsubscribed.rb +4 -3
  33. data/lib/vines/storage/couchdb.rb +3 -3
  34. data/lib/vines/storage/ldap.rb +19 -8
  35. data/lib/vines/storage/local.rb +23 -12
  36. data/lib/vines/storage/redis.rb +3 -3
  37. data/lib/vines/storage/sql.rb +5 -5
  38. data/lib/vines/stream.rb +40 -6
  39. data/lib/vines/stream/client.rb +5 -6
  40. data/lib/vines/stream/client/auth.rb +3 -2
  41. data/lib/vines/stream/client/bind.rb +2 -2
  42. data/lib/vines/stream/client/bind_restart.rb +1 -2
  43. data/lib/vines/stream/client/ready.rb +2 -0
  44. data/lib/vines/stream/client/session.rb +13 -4
  45. data/lib/vines/stream/client/tls.rb +1 -0
  46. data/lib/vines/stream/component.rb +6 -5
  47. data/lib/vines/stream/component/ready.rb +5 -6
  48. data/lib/vines/stream/http.rb +10 -4
  49. data/lib/vines/stream/http/request.rb +23 -2
  50. data/lib/vines/stream/server.rb +13 -11
  51. data/lib/vines/stream/server/outbound/auth_result.rb +1 -0
  52. data/lib/vines/stream/server/outbound/tls_result.rb +1 -0
  53. data/lib/vines/stream/server/ready.rb +2 -2
  54. data/lib/vines/user.rb +2 -1
  55. data/lib/vines/version.rb +1 -1
  56. data/test/config/host_test.rb +292 -0
  57. data/test/config_test.rb +244 -103
  58. data/test/contact_test.rb +7 -1
  59. data/test/jid_test.rb +48 -0
  60. data/test/router_test.rb +16 -47
  61. data/test/stanza/iq/disco_info_test.rb +76 -0
  62. data/test/stanza/iq/disco_items_test.rb +47 -0
  63. data/test/stanza/iq/private_storage_test.rb +33 -10
  64. data/test/stanza/iq/roster_test.rb +15 -5
  65. data/test/stanza/iq/vcard_test.rb +8 -25
  66. data/test/stanza/iq/version_test.rb +62 -0
  67. data/test/stanza/iq_test.rb +13 -10
  68. data/test/stanza/message_test.rb +16 -24
  69. data/test/stanza/presence/probe_test.rb +52 -0
  70. data/test/stanza/presence/subscribe_test.rb +1 -5
  71. data/test/stanza_test.rb +77 -0
  72. data/test/stream/client/auth_test.rb +1 -0
  73. data/test/stream/client/ready_test.rb +2 -0
  74. data/test/stream/client/session_test.rb +7 -2
  75. data/test/stream/component/ready_test.rb +19 -36
  76. data/test/stream/http/request_test.rb +22 -2
  77. data/test/stream/server/ready_test.rb +14 -21
  78. data/web/404.html +9 -3
  79. data/web/chat/index.html +2 -2
  80. data/web/chat/javascripts/app.js +1 -1
  81. data/web/chat/stylesheets/chat.css +4 -9
  82. data/web/lib/coffeescripts/layout.coffee +2 -2
  83. data/web/{chat → lib}/coffeescripts/logout.coffee +0 -0
  84. data/web/lib/coffeescripts/notification.coffee +14 -0
  85. data/web/lib/coffeescripts/session.coffee +28 -24
  86. data/web/lib/coffeescripts/transfer.coffee +37 -34
  87. data/web/lib/javascripts/base.js +8 -8
  88. data/web/lib/javascripts/icons.js +3 -0
  89. data/web/lib/javascripts/jquery.js +4 -18
  90. data/web/lib/javascripts/layout.js +2 -2
  91. data/web/{chat → lib}/javascripts/logout.js +0 -0
  92. data/web/lib/javascripts/notification.js +26 -0
  93. data/web/lib/javascripts/session.js +20 -16
  94. data/web/lib/javascripts/transfer.js +45 -55
  95. data/web/lib/stylesheets/base.css +45 -9
  96. metadata +31 -15
@@ -16,10 +16,10 @@ Transfer = (function() {
16
16
  this.sent = 0;
17
17
  }
18
18
  Transfer.prototype.start = function() {
19
- var callback, node;
19
+ var node;
20
20
  node = $("<iq id=\"" + (this.session.uniqueId()) + "\" to=\"" + this.to + "\" type=\"set\">\n <si xmlns=\"http://jabber.org/protocol/si\" id=\"" + (this.session.uniqueId()) + "\" profile=\"http://jabber.org/protocol/si/profile/file-transfer\">\n <file xmlns=\"http://jabber.org/protocol/si/profile/file-transfer\" name=\"\" size=\"" + this.file.size + "\"/>\n <feature xmlns=\"http://jabber.org/protocol/feature-neg\">\n <x xmlns=\"jabber:x:data\" type=\"form\">\n <field var=\"stream-method\" type=\"list-single\">\n <option><value>http://jabber.org/protocol/ibb</value></option>\n </field>\n </x>\n </feature>\n </si>\n</iq>");
21
21
  $('file', node).attr('name', this.file.name);
22
- callback = __bind(function(result) {
22
+ return this.session.sendIQ(node.get(0), __bind(function(result) {
23
23
  var m, methods, ok;
24
24
  methods = $('si feature x field[var="stream-method"] value', result);
25
25
  ok = ((function() {
@@ -36,45 +36,42 @@ Transfer = (function() {
36
36
  if (ok) {
37
37
  return this.open();
38
38
  }
39
- }, this);
40
- return this.session.sendIQ(node.get(0), callback);
39
+ }, this));
41
40
  };
42
41
  Transfer.prototype.open = function() {
43
- var callback, node;
42
+ var node;
44
43
  node = $("<iq id=\"" + (this.session.uniqueId()) + "\" to=\"" + this.to + "\" type=\"set\">\n <open xmlns=\"http://jabber.org/protocol/ibb\" sid=\"" + this.sid + "\" block-size=\"4096\"/>\n</iq>");
45
- callback = __bind(function(result) {
44
+ return this.session.sendIQ(node.get(0), __bind(function(result) {
46
45
  if (this.ok(result)) {
47
46
  this.opened = true;
48
- return this.chunks.start(__bind(function() {
49
- return this.sendChunk();
50
- }, this));
47
+ return this.sendChunk();
51
48
  }
52
- }, this);
53
- return this.session.sendIQ(node.get(0), callback);
49
+ }, this));
54
50
  };
55
51
  Transfer.prototype.sendChunk = function() {
56
- var callback, chunk, node;
57
52
  if (this.closed) {
58
53
  return;
59
54
  }
60
- if (!(chunk = this.chunks.chunk())) {
61
- this.close();
62
- return;
63
- }
64
- node = $("<iq id=\"" + (this.session.uniqueId()) + "\" to=\"" + this.to + "\" type=\"set\">\n <data xmlns=\"http://jabber.org/protocol/ibb\" sid=\"" + this.sid + "\" seq=\"" + (this.seq++) + "\">" + chunk + "</data>\n</iq>");
65
- if (this.seq > 65535) {
66
- this.seq = 0;
67
- }
68
- callback = __bind(function(result) {
69
- var pct;
70
- if (!this.ok(result)) {
55
+ return this.chunks.chunk(__bind(function(chunk) {
56
+ var node;
57
+ if (!chunk) {
58
+ this.close();
71
59
  return;
72
60
  }
73
- pct = Math.ceil(++this.sent / this.chunks.total * 100);
74
- this.progress(pct);
75
- return this.sendChunk();
76
- }, this);
77
- return this.session.sendIQ(node.get(0), callback);
61
+ node = $("<iq id=\"" + (this.session.uniqueId()) + "\" to=\"" + this.to + "\" type=\"set\">\n <data xmlns=\"http://jabber.org/protocol/ibb\" sid=\"" + this.sid + "\" seq=\"" + (this.seq++) + "\">" + chunk + "</data>\n</iq>");
62
+ if (this.seq > 65535) {
63
+ this.seq = 0;
64
+ }
65
+ return this.session.sendIQ(node.get(0), __bind(function(result) {
66
+ var pct;
67
+ if (!this.ok(result)) {
68
+ return;
69
+ }
70
+ pct = Math.ceil(++this.sent / this.chunks.total * 100);
71
+ this.progress(pct);
72
+ return this.sendChunk();
73
+ }, this));
74
+ }, this));
78
75
  };
79
76
  Transfer.prototype.close = function() {
80
77
  var node;
@@ -97,36 +94,29 @@ Transfer = (function() {
97
94
  return $(result).attr('type') === 'result';
98
95
  };
99
96
  Chunks = (function() {
97
+ var CHUNK_SIZE;
98
+ CHUNK_SIZE = 3 / 4 * 4096;
100
99
  function Chunks(file) {
101
100
  this.file = file;
102
- this.chunks = [];
103
- this.total = 0;
101
+ this.total = Math.ceil(this.file.size / CHUNK_SIZE);
102
+ this.slice = this.file.slice || this.file.webkitSlice || this.file.mozSlice;
103
+ this.pos = 0;
104
104
  }
105
- Chunks.prototype.chunk = function() {
106
- return this.chunks.shift();
107
- };
108
- Chunks.prototype.start = function(callback) {
109
- var reader;
110
- reader = new FileReader();
111
- reader.onload = __bind(function(event) {
112
- var chunk, data;
113
- data = btoa(event.target.result);
114
- this.chunks = (function() {
115
- var _i, _len, _ref, _results;
116
- _ref = data.split(/(.{1,4096})/);
117
- _results = [];
118
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
119
- chunk = _ref[_i];
120
- if (chunk) {
121
- _results.push(chunk);
122
- }
123
- }
124
- return _results;
125
- })();
126
- this.total = this.chunks.length;
127
- return callback();
128
- }, this);
129
- return reader.readAsBinaryString(this.file);
105
+ Chunks.prototype.chunk = function(callback) {
106
+ var chunk, end, reader, start;
107
+ start = this.pos;
108
+ end = this.pos + CHUNK_SIZE;
109
+ this.pos = end;
110
+ if (start > this.file.size) {
111
+ return callback(null);
112
+ } else {
113
+ chunk = this.slice.call(this.file, start, end);
114
+ reader = new FileReader();
115
+ reader.onload = function(event) {
116
+ return callback(btoa(event.target.result));
117
+ };
118
+ return reader.readAsBinaryString(chunk);
119
+ }
130
120
  };
131
121
  return Chunks;
132
122
  })();
@@ -2,21 +2,24 @@
2
2
  margin: 0;
3
3
  padding: 0;
4
4
  }
5
+ html, body {
6
+ height: 100%;
7
+ overflow: hidden;
8
+ }
5
9
  html {
6
10
  background: #0c1a2d;
7
- height: 100%;
8
11
  }
9
12
  body {
10
13
  background: #0c1a2d;
11
14
  color: #222;
12
15
  font-family: "Helvetica Neue", Helvetica, sans-serif;
13
16
  font-size: 10pt;
14
- height: 100%;
15
17
  line-height: 20pt;
16
18
  }
17
19
  input[type="text"],
18
20
  input[type="email"],
19
- input[type="password"] {
21
+ input[type="password"],
22
+ textarea {
20
23
  border-radius: 2px;
21
24
  border: none;
22
25
  -webkit-box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.2);
@@ -26,6 +29,13 @@ input[type="password"] {
26
29
  outline: none;
27
30
  padding: 6px;
28
31
  }
32
+ input[type="text"]:focus,
33
+ input[type="email"]:focus,
34
+ input[type="password"]:focus,
35
+ textarea:focus {
36
+ -webkit-box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.6);
37
+ box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.6);
38
+ }
29
39
  input[type="button"],
30
40
  input[type="submit"] {
31
41
  background: -moz-linear-gradient(#ececec, #dcdcdc);
@@ -253,13 +263,24 @@ optgroup option {
253
263
  background: rgba(0, 0, 0, .2);
254
264
  }
255
265
  ul.selectable li.selected {
256
- background: #4693FF;
257
- background: -moz-linear-gradient(#4693FF, #015de6);
258
- background: -o-linear-gradient(#4693FF, #015de6);
259
- background: -webkit-gradient(linear, left top, left bottom, from(#4693FF), to(#015de6));
260
- border-bottom: 1px solid #fff;
266
+ background: #319be7;
267
+ background: -moz-linear-gradient(#319be7, #1b78d9);
268
+ background: -o-linear-gradient(#319be7, #1b78d9);
269
+ background: -webkit-gradient(linear, left top, left bottom, from(#319be7), to(#1b78d9));
270
+ border-top: 1px solid #148ddf;
271
+ border-bottom: 1px solid #095bba;
272
+ color: #fff;
273
+ text-shadow: -1px 1px 1px hsl(210, 51%, 45%), 0px -1px 1px hsl(210, 51%, 49%);
274
+ }
275
+ ul.selectable li.selected.secondary {
276
+ background: hsl(220, 29%, 80%);
277
+ background: -moz-linear-gradient(hsl(220, 29%, 80%), hsl(217, 25%, 69%));
278
+ background: -o-linear-gradient(hsl(220, 29%, 80%), hsl(217, 25%, 69%));
279
+ background: -webkit-gradient(linear, left top, left bottom, from(hsl(220, 29%, 80%)), to(hsl(217, 25%, 69%)));
280
+ border-top: 1px solid hsl(218, 23%, 79%);
281
+ border-bottom: 1px solid hsl(218, 20%, 65%);
261
282
  color: #fff;
262
- text-shadow: 0 -1px 1px #1b3a65;
283
+ text-shadow: -1px 1px 1px #94a1b8;
263
284
  }
264
285
  .column {
265
286
  height: 100%;
@@ -339,9 +360,24 @@ form.inset .buttons {
339
360
  text-align: right;
340
361
  }
341
362
  form.overlay input[type="text"],
363
+ form.overlay input[type="password"],
342
364
  form.overlay input[type="email"] {
343
365
  margin-bottom: 10px;
344
366
  width: 228px;
345
367
  position: relative;
346
368
  left: 10px;
347
369
  }
370
+ .notification {
371
+ background: rgba(12, 26, 45, 0.75);
372
+ border-radius: 30px;
373
+ color: #fff;
374
+ font-size: 10pt;
375
+ font-weight: bold;
376
+ padding: 5px 100px;
377
+ position: absolute;
378
+ top: 50%;
379
+ left: 50%;
380
+ text-align: center;
381
+ text-shadow: 0 1px 1px #000;
382
+ z-index: 2;
383
+ }
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: vines
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.1
5
+ version: 0.3.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - David Graham
@@ -11,8 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2011-07-22 00:00:00 -06:00
15
- default_executable:
14
+ date: 2011-09-28 00:00:00 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
17
  name: activerecord
@@ -22,7 +21,7 @@ dependencies:
22
21
  requirements:
23
22
  - - ~>
24
23
  - !ruby/object:Gem::Version
25
- version: "3.0"
24
+ version: 3.1.0
26
25
  type: :runtime
27
26
  version_requirements: *id001
28
27
  - !ruby/object:Gem::Dependency
@@ -33,7 +32,7 @@ dependencies:
33
32
  requirements:
34
33
  - - ~>
35
34
  - !ruby/object:Gem::Version
36
- version: "2.1"
35
+ version: 3.0.0
37
36
  type: :runtime
38
37
  version_requirements: *id002
39
38
  - !ruby/object:Gem::Dependency
@@ -44,7 +43,7 @@ dependencies:
44
43
  requirements:
45
44
  - - ~>
46
45
  - !ruby/object:Gem::Version
47
- version: "0.3"
46
+ version: 0.3.0
48
47
  type: :runtime
49
48
  version_requirements: *id003
50
49
  - !ruby/object:Gem::Dependency
@@ -55,7 +54,7 @@ dependencies:
55
54
  requirements:
56
55
  - - ~>
57
56
  - !ruby/object:Gem::Version
58
- version: "0.3"
57
+ version: 0.3.0
59
58
  type: :runtime
60
59
  version_requirements: *id004
61
60
  - !ruby/object:Gem::Dependency
@@ -66,7 +65,7 @@ dependencies:
66
65
  requirements:
67
66
  - - ~>
68
67
  - !ruby/object:Gem::Version
69
- version: "0.12"
68
+ version: 0.12.10
70
69
  type: :runtime
71
70
  version_requirements: *id005
72
71
  - !ruby/object:Gem::Dependency
@@ -77,7 +76,7 @@ dependencies:
77
76
  requirements:
78
77
  - - ~>
79
78
  - !ruby/object:Gem::Version
80
- version: "0.5"
79
+ version: 0.5.2
81
80
  type: :runtime
82
81
  version_requirements: *id006
83
82
  - !ruby/object:Gem::Dependency
@@ -88,7 +87,7 @@ dependencies:
88
87
  requirements:
89
88
  - - ~>
90
89
  - !ruby/object:Gem::Version
91
- version: "0.2"
90
+ version: 0.2.2
92
91
  type: :runtime
93
92
  version_requirements: *id007
94
93
  - !ruby/object:Gem::Dependency
@@ -99,7 +98,7 @@ dependencies:
99
98
  requirements:
100
99
  - - ~>
101
100
  - !ruby/object:Gem::Version
102
- version: "1.5"
101
+ version: 1.4.7
103
102
  type: :runtime
104
103
  version_requirements: *id008
105
104
  - !ruby/object:Gem::Dependency
@@ -164,12 +163,15 @@ files:
164
163
  - lib/vines/command/schema.rb
165
164
  - lib/vines/command/start.rb
166
165
  - lib/vines/command/stop.rb
166
+ - lib/vines/config/host.rb
167
+ - lib/vines/config/port.rb
167
168
  - lib/vines/config.rb
168
169
  - lib/vines/contact.rb
169
170
  - lib/vines/daemon.rb
170
171
  - lib/vines/error.rb
171
172
  - lib/vines/jid.rb
172
173
  - lib/vines/kit.rb
174
+ - lib/vines/log.rb
173
175
  - lib/vines/router.rb
174
176
  - lib/vines/stanza/iq/auth.rb
175
177
  - lib/vines/stanza/iq/disco_info.rb
@@ -182,6 +184,7 @@ files:
182
184
  - lib/vines/stanza/iq/roster.rb
183
185
  - lib/vines/stanza/iq/session.rb
184
186
  - lib/vines/stanza/iq/vcard.rb
187
+ - lib/vines/stanza/iq/version.rb
185
188
  - lib/vines/stanza/iq.rb
186
189
  - lib/vines/stanza/message.rb
187
190
  - lib/vines/stanza/presence/error.rb
@@ -253,12 +256,10 @@ files:
253
256
  - web/apple-touch-icon.png
254
257
  - web/chat/coffeescripts/chat.coffee
255
258
  - web/chat/coffeescripts/init.coffee
256
- - web/chat/coffeescripts/logout.coffee
257
259
  - web/chat/index.html
258
260
  - web/chat/javascripts/app.js
259
261
  - web/chat/javascripts/chat.js
260
262
  - web/chat/javascripts/init.js
261
- - web/chat/javascripts/logout.js
262
263
  - web/chat/stylesheets/chat.css
263
264
  - web/favicon.png
264
265
  - web/lib/coffeescripts/button.coffee
@@ -266,7 +267,9 @@ files:
266
267
  - web/lib/coffeescripts/filter.coffee
267
268
  - web/lib/coffeescripts/layout.coffee
268
269
  - web/lib/coffeescripts/login.coffee
270
+ - web/lib/coffeescripts/logout.coffee
269
271
  - web/lib/coffeescripts/navbar.coffee
272
+ - web/lib/coffeescripts/notification.coffee
270
273
  - web/lib/coffeescripts/router.coffee
271
274
  - web/lib/coffeescripts/session.coffee
272
275
  - web/lib/coffeescripts/transfer.coffee
@@ -282,7 +285,9 @@ files:
282
285
  - web/lib/javascripts/jquery.js
283
286
  - web/lib/javascripts/layout.js
284
287
  - web/lib/javascripts/login.js
288
+ - web/lib/javascripts/logout.js
285
289
  - web/lib/javascripts/navbar.js
290
+ - web/lib/javascripts/notification.js
286
291
  - web/lib/javascripts/raphael.js
287
292
  - web/lib/javascripts/router.js
288
293
  - web/lib/javascripts/session.js
@@ -290,6 +295,7 @@ files:
290
295
  - web/lib/javascripts/transfer.js
291
296
  - web/lib/stylesheets/base.css
292
297
  - web/lib/stylesheets/login.css
298
+ - test/config/host_test.rb
293
299
  - test/config_test.rb
294
300
  - test/contact_test.rb
295
301
  - test/error_test.rb
@@ -298,13 +304,18 @@ files:
298
304
  - test/kit_test.rb
299
305
  - test/rake_test_loader.rb
300
306
  - test/router_test.rb
307
+ - test/stanza/iq/disco_info_test.rb
308
+ - test/stanza/iq/disco_items_test.rb
301
309
  - test/stanza/iq/private_storage_test.rb
302
310
  - test/stanza/iq/roster_test.rb
303
311
  - test/stanza/iq/session_test.rb
304
312
  - test/stanza/iq/vcard_test.rb
313
+ - test/stanza/iq/version_test.rb
305
314
  - test/stanza/iq_test.rb
306
315
  - test/stanza/message_test.rb
316
+ - test/stanza/presence/probe_test.rb
307
317
  - test/stanza/presence/subscribe_test.rb
318
+ - test/stanza_test.rb
308
319
  - test/storage/couchdb_test.rb
309
320
  - test/storage/ldap_test.rb
310
321
  - test/storage/local_test.rb
@@ -328,7 +339,6 @@ files:
328
339
  - test/stream/server/ready_test.rb
329
340
  - test/token_bucket_test.rb
330
341
  - test/user_test.rb
331
- has_rdoc: true
332
342
  homepage: http://www.getvines.com
333
343
  licenses: []
334
344
 
@@ -352,11 +362,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
352
362
  requirements: []
353
363
 
354
364
  rubyforge_project:
355
- rubygems_version: 1.6.2
365
+ rubygems_version: 1.8.10
356
366
  signing_key:
357
367
  specification_version: 3
358
368
  summary: Vines is an XMPP chat server that's easy to install and run.
359
369
  test_files:
370
+ - test/config/host_test.rb
360
371
  - test/config_test.rb
361
372
  - test/contact_test.rb
362
373
  - test/error_test.rb
@@ -365,13 +376,18 @@ test_files:
365
376
  - test/kit_test.rb
366
377
  - test/rake_test_loader.rb
367
378
  - test/router_test.rb
379
+ - test/stanza/iq/disco_info_test.rb
380
+ - test/stanza/iq/disco_items_test.rb
368
381
  - test/stanza/iq/private_storage_test.rb
369
382
  - test/stanza/iq/roster_test.rb
370
383
  - test/stanza/iq/session_test.rb
371
384
  - test/stanza/iq/vcard_test.rb
385
+ - test/stanza/iq/version_test.rb
372
386
  - test/stanza/iq_test.rb
373
387
  - test/stanza/message_test.rb
388
+ - test/stanza/presence/probe_test.rb
374
389
  - test/stanza/presence/subscribe_test.rb
390
+ - test/stanza_test.rb
375
391
  - test/storage/couchdb_test.rb
376
392
  - test/storage/ldap_test.rb
377
393
  - test/storage/local_test.rb