pusher-fake 2.2.0 → 4.0.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.
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