pusher-fake 2.2.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce88691f316170560d4faec1f2fccd98b5904fc80a1e8037dd9f2de483e01b27
4
- data.tar.gz: 811565f2ddea342eb5faa9d85b97ed03e4122f44ce9ea30770ae8ce2df960ffd
3
+ metadata.gz: 9d87ee628168fd524b482569791802df7bb50695dc7cfc4f74164587b3a195df
4
+ data.tar.gz: dec3b6f7071488cf6add4418fe6e9a8a18c0b778edcc2298b22e529e9f3ad3eb
5
5
  SHA512:
6
- metadata.gz: 7f8c708e354d2b470834e2c8b9ade9b3390e31f0c4674aaf8da5780464b7c15c3bfb63975a981ec58c876eeac5eeab8634c733e0deae61c81b89e1e0ca232e4d
7
- data.tar.gz: 6379b91591ea2bac3ed912055b920dd2c9788698122d98629e59c3e17c4b82c8aab41148a8fe821c4357cdc45098cfb9972334456d345fa6ba0cacd4ab080af8
6
+ metadata.gz: f2ca4fc45b9710725d542a7c73324b7a995b36d896c72fb7561f5cd3544b548a26f07438896530ce60e4a1689be4bbe99cc77361747f4779b3f77b38900f9ad3
7
+ data.tar.gz: fc90fef11fb8d9d0838f3597521610a77822f3ebd84ed82554ac8dbe3098f91b6c94afdb699c8c41e47d758ecac1ea38abdb1a1a89a26e56a8753a1758bb7aff
@@ -36,9 +36,7 @@ module PusherFake
36
36
  #
37
37
  # @return [Hash] Hash containing presence information.
38
38
  def subscription_data
39
- hash = Hash[
40
- members.map { |_, member| [member[:user_id], member[:user_info]] }
41
- ]
39
+ hash = members.to_h { |_, member| [member[:user_id], member[:user_info]] }
42
40
 
43
41
  { presence: { hash: hash, count: members.size } }
44
42
  end
@@ -49,7 +49,7 @@ module PusherFake
49
49
  def reset!
50
50
  self.app_id = "PUSHER_APP_ID"
51
51
  self.key = "PUSHER_API_KEY"
52
- self.logger = $stdout.to_io
52
+ self.logger = standard_out_io
53
53
  self.secret = "PUSHER_API_SECRET"
54
54
  self.verbose = false
55
55
  self.webhooks = []
@@ -81,5 +81,13 @@ module PusherFake
81
81
  socket.close
82
82
  end
83
83
  end
84
+
85
+ def standard_out_io
86
+ if $stdout.respond_to?(:to_io)
87
+ $stdout.to_io
88
+ else
89
+ $stdout
90
+ end
91
+ end
84
92
  end
85
93
  end
@@ -20,10 +20,10 @@ module PusherFake
20
20
  #
21
21
  # @return [Integer] The object ID of the socket.
22
22
  def id
23
- parts = socket.object_id.to_s.split("")
23
+ parts = socket.object_id.to_s.chars
24
24
  parts = parts.each_slice((parts.length / 2.0).ceil).to_a
25
25
 
26
- [parts.first.join(""), parts.last.join("")].join(".")
26
+ [parts.first.join, parts.last.join].join(".")
27
27
  end
28
28
 
29
29
  # Emit an event to the connection.
@@ -54,15 +54,6 @@ module PusherFake
54
54
  def configuration
55
55
  PusherFake.configuration
56
56
  end
57
-
58
- # Return a hash of options for the socket server based on
59
- # the configuration.
60
- #
61
- # @return [Hash] The socket server configuration options.
62
- def socket_server_options
63
- { host: configuration.socket_host,
64
- port: configuration.socket_port }
65
- end
66
57
  end
67
58
  end
68
59
  end
data/lib/pusher-fake.rb CHANGED
@@ -9,7 +9,7 @@ require "thin"
9
9
  # A Pusher fake.
10
10
  module PusherFake
11
11
  # The current version string.
12
- VERSION = "2.2.0"
12
+ VERSION = "4.0.0"
13
13
 
14
14
  autoload :Channel, "pusher-fake/channel"
15
15
  autoload :Configuration, "pusher-fake/configuration"
@@ -48,13 +48,13 @@ feature "Requesting channel API endpoint" do
48
48
  end
49
49
 
50
50
  scenario "channel, with no occupants" do
51
- expect(channel[:occupied]).to eq(false)
51
+ expect(channel[:occupied]).to be(false)
52
52
  end
53
53
 
54
54
  scenario "channel, with an occupant" do
55
55
  subscribe_to(channel_name)
56
56
 
57
- expect(channel[:occupied]).to eq(true)
57
+ expect(channel[:occupied]).to be(true)
58
58
  end
59
59
 
60
60
  scenario "channel, with info attributes" do
@@ -62,7 +62,7 @@ feature "Requesting channel API endpoint" do
62
62
 
63
63
  result = Pusher.get("/channels/#{presence_name}", info: "user_count")
64
64
 
65
- expect(result[:occupied]).to eq(true)
65
+ expect(result[:occupied]).to be(true)
66
66
  expect(result[:user_count]).to eq(1)
67
67
  end
68
68
 
@@ -53,6 +53,25 @@ describe PusherFake::Configuration do
53
53
  it "defaults socket and web ports to different values" do
54
54
  expect(subject.socket_options[:port]).not_to eq(subject.web_options[:port])
55
55
  end
56
+
57
+ context "with StringIO as standard out" do
58
+ let(:io) { StringIO.new }
59
+
60
+ around do |example|
61
+ original = $stdout
62
+ $stdout = io # rubocop:disable RSpec/ExpectOutput
63
+
64
+ example.run
65
+
66
+ $stdout = original # rubocop:disable RSpec/ExpectOutput
67
+ end
68
+
69
+ it "assigns standard out to the logger" do
70
+ subject.reset!
71
+
72
+ expect(subject.logger).to eq(io)
73
+ end
74
+ end
56
75
  end
57
76
 
58
77
  describe PusherFake::Configuration, "#app_id=" do
@@ -18,13 +18,13 @@ describe PusherFake, ".configuration" do
18
18
  let(:configuration) { double }
19
19
 
20
20
  before do
21
- described_class.instance_variable_set("@configuration", nil)
21
+ described_class.instance_variable_set(:@configuration, nil)
22
22
 
23
23
  allow(PusherFake::Configuration).to receive(:new).and_return(configuration)
24
24
  end
25
25
 
26
26
  after do
27
- described_class.instance_variable_set("@configuration", nil)
27
+ described_class.instance_variable_set(:@configuration, nil)
28
28
  end
29
29
 
30
30
  it "initializes a configuration object" do
data/spec/spec_helper.rb CHANGED
@@ -4,6 +4,19 @@ require "bundler/setup"
4
4
 
5
5
  Bundler.require(:default, :development)
6
6
 
7
+ if ENV["CI"] || ENV["COVERAGE"]
8
+ require "simplecov"
9
+ require "simplecov-console"
10
+
11
+ SimpleCov.formatter = SimpleCov::Formatter::Console
12
+ SimpleCov.start do
13
+ add_filter("lib/pusher-fake/support")
14
+ add_filter("spec/support")
15
+ enable_coverage :branch
16
+ minimum_coverage line: 100, branch: 100
17
+ end
18
+ end
19
+
7
20
  Dir[File.expand_path("support/**/*.rb", __dir__)].sort.each do |file|
8
21
  require file
9
22
  end
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Pusher JavaScript Library v7.0.0
2
+ * Pusher JavaScript Library v7.0.6
3
3
  * https://pusher.com/
4
4
  *
5
5
  * Copyright 2020, Pusher
@@ -388,7 +388,7 @@ exports.maxDecodedLength = function (length) {
388
388
  exports.decodedLength = function (s) {
389
389
  return stdCoder.decodedLength(s);
390
390
  };
391
- //# sourceMappingURL=base64.js.map
391
+
392
392
 
393
393
  /***/ }),
394
394
  /* 1 */
@@ -543,7 +543,7 @@ function decode(arr) {
543
543
  return chars.join("");
544
544
  }
545
545
  exports.decode = decode;
546
- //# sourceMappingURL=utf8.js.map
546
+
547
547
 
548
548
  /***/ }),
549
549
  /* 2 */
@@ -558,6 +558,7 @@ module.exports = __webpack_require__(3).default;
558
558
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
559
559
 
560
560
  "use strict";
561
+ // ESM COMPAT FLAG
561
562
  __webpack_require__.r(__webpack_exports__);
562
563
 
563
564
  // CONCATENATED MODULE: ./src/runtimes/web/dom/script_receiver_factory.ts
@@ -592,7 +593,7 @@ var ScriptReceivers = new ScriptReceiverFactory('_pusher_script_', 'Pusher.Scrip
592
593
 
593
594
  // CONCATENATED MODULE: ./src/core/defaults.ts
594
595
  var Defaults = {
595
- VERSION: "7.0.0",
596
+ VERSION: "7.0.6",
596
597
  PROTOCOL: 7,
597
598
  wsPort: 80,
598
599
  wssPort: 443,
@@ -2332,6 +2333,7 @@ var channel_Channel = (function (_super) {
2332
2333
  this.subscriptionCancelled = false;
2333
2334
  this.authorize(this.pusher.connection.socket_id, function (error, data) {
2334
2335
  if (error) {
2336
+ _this.subscriptionPending = false;
2335
2337
  logger.error(error.toString());
2336
2338
  _this.emit('pusher:subscription_error', Object.assign({}, {
2337
2339
  type: 'AuthError',
@@ -4531,7 +4533,7 @@ var pusher_Pusher = (function () {
4531
4533
  }
4532
4534
  else {
4533
4535
  channel = this.channels.remove(channel_name);
4534
- if (channel && this.connection.state === 'connected') {
4536
+ if (channel && channel.subscribed) {
4535
4537
  channel.unsubscribe();
4536
4538
  }
4537
4539
  }
@@ -14,7 +14,7 @@
14
14
  </section>
15
15
 
16
16
  <script src="/javascripts/vendor/polyfill.min.js"></script>
17
- <script src="/javascripts/vendor/pusher-7.0.0.js"></script>
17
+ <script src="/javascripts/vendor/pusher-7.0.6.js"></script>
18
18
  <script>
19
19
  Pusher.instance = <%= PusherFake.javascript %>;
20
20
  Pusher.instance.connection.bind("state_change", function(states) {
@@ -1,12 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "capybara/poltergeist"
4
3
  require "capybara/rspec"
5
4
 
6
- Capybara.register_driver :poltergeist do |app|
7
- Capybara::Poltergeist::Driver.new(app, url_whitelist: [])
8
- end
9
-
10
5
  Capybara.app = Sinatra::Application
11
- Capybara.server = :webrick
12
- Capybara.default_driver = :poltergeist
6
+ Capybara.server = :puma, { Silent: true }
7
+ Capybara.default_driver = :selenium_chrome_headless
8
+
9
+ # Ignore deprecation warning.
10
+ Selenium::WebDriver.logger.ignore(:browser_options)
@@ -7,7 +7,7 @@ RSpec.configure do |config|
7
7
  PusherFake.configuration.reset!
8
8
  PusherFake.configuration.web_options.tap do |options|
9
9
  Pusher.url = "http://PUSHER_API_KEY:PUSHER_API_SECRET@" \
10
- "#{options[:host]}:#{options[:port]}/apps/PUSHER_APP_ID"
10
+ "#{options[:host]}:#{options[:port]}/apps/PUSHER_APP_ID"
11
11
  end
12
12
 
13
13
  @thread = Thread.new { PusherFake::Server.start }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pusher-fake
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tristan Dunn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-17 00:00:00.000000000 Z
11
+ date: 2022-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em-http-request
@@ -67,131 +67,173 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.5'
69
69
  - !ruby/object:Gem::Dependency
70
- name: poltergeist
70
+ name: capybara
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 1.18.1
75
+ version: 3.36.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 1.18.1
82
+ version: 3.36.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: puma
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 5.6.4
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 5.6.4
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: pusher
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - '='
88
102
  - !ruby/object:Gem::Version
89
- version: 1.3.3
103
+ version: 2.0.2
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - '='
95
109
  - !ruby/object:Gem::Version
96
- version: 1.3.3
110
+ version: 2.0.2
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rake
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - '='
102
116
  - !ruby/object:Gem::Version
103
- version: 13.0.1
117
+ version: 13.0.6
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - '='
109
123
  - !ruby/object:Gem::Version
110
- version: 13.0.1
124
+ version: 13.0.6
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rspec
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - '='
116
130
  - !ruby/object:Gem::Version
117
- version: 3.9.0
131
+ version: 3.11.0
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - '='
123
137
  - !ruby/object:Gem::Version
124
- version: 3.9.0
138
+ version: 3.11.0
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: rubocop
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - '='
130
144
  - !ruby/object:Gem::Version
131
- version: 0.91.0
145
+ version: 1.26.1
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - '='
137
151
  - !ruby/object:Gem::Version
138
- version: 0.91.0
152
+ version: 1.26.1
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: rubocop-performance
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - '='
144
158
  - !ruby/object:Gem::Version
145
- version: 1.8.0
159
+ version: 1.13.3
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - '='
151
165
  - !ruby/object:Gem::Version
152
- version: 1.8.0
166
+ version: 1.13.3
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop-rake
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '='
172
+ - !ruby/object:Gem::Version
173
+ version: 0.6.0
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '='
179
+ - !ruby/object:Gem::Version
180
+ version: 0.6.0
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: rubocop-rspec
155
183
  requirement: !ruby/object:Gem::Requirement
156
184
  requirements:
157
185
  - - '='
158
186
  - !ruby/object:Gem::Version
159
- version: 1.43.2
187
+ version: 2.9.0
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '='
193
+ - !ruby/object:Gem::Version
194
+ version: 2.9.0
195
+ - !ruby/object:Gem::Dependency
196
+ name: selenium-webdriver
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '='
200
+ - !ruby/object:Gem::Version
201
+ version: 4.1.0
160
202
  type: :development
161
203
  prerelease: false
162
204
  version_requirements: !ruby/object:Gem::Requirement
163
205
  requirements:
164
206
  - - '='
165
207
  - !ruby/object:Gem::Version
166
- version: 1.43.2
208
+ version: 4.1.0
167
209
  - !ruby/object:Gem::Dependency
168
210
  name: sinatra
169
211
  requirement: !ruby/object:Gem::Requirement
170
212
  requirements:
171
213
  - - '='
172
214
  - !ruby/object:Gem::Version
173
- version: 2.1.0
215
+ version: 2.2.0
174
216
  type: :development
175
217
  prerelease: false
176
218
  version_requirements: !ruby/object:Gem::Requirement
177
219
  requirements:
178
220
  - - '='
179
221
  - !ruby/object:Gem::Version
180
- version: 2.1.0
222
+ version: 2.2.0
181
223
  - !ruby/object:Gem::Dependency
182
224
  name: yard
183
225
  requirement: !ruby/object:Gem::Requirement
184
226
  requirements:
185
227
  - - '='
186
228
  - !ruby/object:Gem::Version
187
- version: 0.9.25
229
+ version: 0.9.27
188
230
  type: :development
189
231
  prerelease: false
190
232
  version_requirements: !ruby/object:Gem::Requirement
191
233
  requirements:
192
234
  - - '='
193
235
  - !ruby/object:Gem::Version
194
- version: 0.9.25
236
+ version: 0.9.27
195
237
  description: A fake Pusher server for development and testing.
196
238
  email: hello@tristandunn.com
197
239
  executables:
@@ -234,10 +276,9 @@ files:
234
276
  - spec/spec_helper.rb
235
277
  - spec/support/application.rb
236
278
  - spec/support/application/public/javascripts/vendor/polyfill.min.js
237
- - spec/support/application/public/javascripts/vendor/pusher-7.0.0.js
279
+ - spec/support/application/public/javascripts/vendor/pusher-7.0.6.js
238
280
  - spec/support/application/views/index.erb
239
281
  - spec/support/capybara.rb
240
- - spec/support/coveralls.rb
241
282
  - spec/support/helpers/connect.rb
242
283
  - spec/support/helpers/event.rb
243
284
  - spec/support/helpers/subscription.rb
@@ -248,7 +289,8 @@ files:
248
289
  homepage: https://github.com/tristandunn/pusher-fake
249
290
  licenses:
250
291
  - MIT
251
- metadata: {}
292
+ metadata:
293
+ rubygems_mfa_required: 'true'
252
294
  post_install_message:
253
295
  rdoc_options: []
254
296
  require_paths:
@@ -257,47 +299,46 @@ required_ruby_version: !ruby/object:Gem::Requirement
257
299
  requirements:
258
300
  - - ">="
259
301
  - !ruby/object:Gem::Version
260
- version: '2.4'
302
+ version: '2.7'
261
303
  required_rubygems_version: !ruby/object:Gem::Requirement
262
304
  requirements:
263
305
  - - ">="
264
306
  - !ruby/object:Gem::Version
265
307
  version: '0'
266
308
  requirements: []
267
- rubygems_version: 3.0.3
309
+ rubygems_version: 3.3.7
268
310
  signing_key:
269
311
  specification_version: 4
270
312
  summary: A fake Pusher server for development and testing.
271
313
  test_files:
272
- - spec/spec_helper.rb
273
- - spec/features/server/event_spec.rb
274
- - spec/features/server/webhooks_spec.rb
275
314
  - spec/features/api/channels_spec.rb
276
315
  - spec/features/api/users_spec.rb
277
316
  - spec/features/client/connect_spec.rb
278
- - spec/features/client/presence_spec.rb
279
317
  - spec/features/client/event_spec.rb
318
+ - spec/features/client/presence_spec.rb
280
319
  - spec/features/client/subscribe_spec.rb
281
- - spec/support/capybara.rb
282
- - spec/support/webhooks.rb
283
- - spec/support/application.rb
284
- - spec/support/pusher_fake.rb
285
- - spec/support/matchers/have_configuration_option.rb
286
- - spec/support/application/public/javascripts/vendor/pusher-7.0.0.js
320
+ - spec/features/server/event_spec.rb
321
+ - spec/features/server/webhooks_spec.rb
322
+ - spec/lib/pusher-fake/channel/presence_spec.rb
323
+ - spec/lib/pusher-fake/channel/private_spec.rb
324
+ - spec/lib/pusher-fake/channel/public_spec.rb
325
+ - spec/lib/pusher-fake/channel_spec.rb
326
+ - spec/lib/pusher-fake/configuration_spec.rb
327
+ - spec/lib/pusher-fake/connection_spec.rb
328
+ - spec/lib/pusher-fake/server/application_spec.rb
329
+ - spec/lib/pusher-fake/server_spec.rb
330
+ - spec/lib/pusher-fake/webhook_spec.rb
331
+ - spec/lib/pusher_fake_spec.rb
332
+ - spec/spec_helper.rb
287
333
  - spec/support/application/public/javascripts/vendor/polyfill.min.js
334
+ - spec/support/application/public/javascripts/vendor/pusher-7.0.6.js
288
335
  - spec/support/application/views/index.erb
289
- - spec/support/coveralls.rb
336
+ - spec/support/application.rb
337
+ - spec/support/capybara.rb
290
338
  - spec/support/helpers/connect.rb
291
- - spec/support/helpers/subscription.rb
292
339
  - spec/support/helpers/event.rb
340
+ - spec/support/helpers/subscription.rb
293
341
  - spec/support/helpers/user.rb
294
- - spec/lib/pusher_fake_spec.rb
295
- - spec/lib/pusher-fake/webhook_spec.rb
296
- - spec/lib/pusher-fake/server_spec.rb
297
- - spec/lib/pusher-fake/configuration_spec.rb
298
- - spec/lib/pusher-fake/server/application_spec.rb
299
- - spec/lib/pusher-fake/channel/presence_spec.rb
300
- - spec/lib/pusher-fake/channel/public_spec.rb
301
- - spec/lib/pusher-fake/channel/private_spec.rb
302
- - spec/lib/pusher-fake/connection_spec.rb
303
- - spec/lib/pusher-fake/channel_spec.rb
342
+ - spec/support/matchers/have_configuration_option.rb
343
+ - spec/support/pusher_fake.rb
344
+ - spec/support/webhooks.rb
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- if ENV["CI"]
4
- require "coveralls"
5
-
6
- Coveralls.wear_merged! do
7
- add_filter "spec/"
8
- end
9
- end