pusher-fake 1.12.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/pusher-fake +1 -3
- data/lib/pusher-fake.rb +3 -1
- data/lib/pusher-fake/channel.rb +4 -2
- data/lib/pusher-fake/channel/presence.rb +2 -0
- data/lib/pusher-fake/channel/private.rb +2 -0
- data/lib/pusher-fake/channel/public.rb +2 -0
- data/lib/pusher-fake/configuration.rb +2 -0
- data/lib/pusher-fake/connection.rb +4 -2
- data/lib/pusher-fake/cucumber.rb +2 -0
- data/lib/pusher-fake/server.rb +2 -0
- data/lib/pusher-fake/server/application.rb +4 -2
- data/lib/pusher-fake/support/base.rb +2 -0
- data/lib/pusher-fake/support/cucumber.rb +2 -0
- data/lib/pusher-fake/support/rspec.rb +2 -0
- data/lib/pusher-fake/webhook.rb +2 -0
- data/spec/features/api/channels_spec.rb +2 -0
- data/spec/features/api/users_spec.rb +2 -0
- data/spec/features/client/connect_spec.rb +2 -0
- data/spec/features/client/event_spec.rb +2 -0
- data/spec/features/client/presence_spec.rb +2 -0
- data/spec/features/client/subscribe_spec.rb +9 -5
- data/spec/features/server/event_spec.rb +2 -0
- data/spec/features/server/webhooks_spec.rb +2 -0
- data/spec/lib/pusher-fake/channel/presence_spec.rb +2 -0
- data/spec/lib/pusher-fake/channel/private_spec.rb +2 -0
- data/spec/lib/pusher-fake/channel/public_spec.rb +2 -0
- data/spec/lib/pusher-fake/channel_spec.rb +2 -0
- data/spec/lib/pusher-fake/configuration_spec.rb +2 -0
- data/spec/lib/pusher-fake/connection_spec.rb +4 -2
- data/spec/lib/pusher-fake/server/application_spec.rb +4 -2
- data/spec/lib/pusher-fake/server_spec.rb +2 -0
- data/spec/lib/pusher-fake/webhook_spec.rb +2 -0
- data/spec/lib/pusher_fake_spec.rb +2 -0
- data/spec/spec_helper.rb +3 -1
- data/spec/support/application.rb +3 -1
- data/spec/support/capybara.rb +2 -0
- data/spec/support/coveralls.rb +2 -0
- data/spec/support/helpers/connect.rb +2 -0
- data/spec/support/helpers/event.rb +2 -0
- data/spec/support/helpers/subscription.rb +2 -0
- data/spec/support/helpers/user.rb +2 -0
- data/spec/support/matchers/have_configuration_option.rb +2 -0
- data/spec/support/pusher_fake.rb +2 -0
- data/spec/support/webhooks.rb +2 -0
- metadata +31 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d309b75217635241d1035f9b8e13d83ada29a93d0eae14c38a77cba3c6299c6b
|
4
|
+
data.tar.gz: d50f95bfff4d1c52103d2d7df9b82e4b26a2543c458b7f6a603395bd79b65003
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 865a390f19167fbb6dd0c2a65b0f8f322eefac51becad6801d0364c20c179fd5c711e8aa8c819fa2f03a7f545540faf9eb635094d1a0fda8c1ebbbf1058ad9de
|
7
|
+
data.tar.gz: 3c56bb54d92b2d2b1a81aed4cfedafe2474ab39c18b5a7ddca79f501ff26851b3f2554aa9b33968a0e453b69455e6fa8924b2f3ca6844c4ec373dc8d1cbf721c
|
data/bin/pusher-fake
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
#
|
3
|
+
# frozen_string_literal: true
|
4
4
|
|
5
5
|
require "optparse"
|
6
6
|
require "pusher"
|
@@ -54,5 +54,3 @@ raise OptionParser::MissingArgument.new("--key") if Pusher.key.nil?
|
|
54
54
|
raise OptionParser::MissingArgument.new("--secret") if Pusher.secret.nil?
|
55
55
|
|
56
56
|
PusherFake::Server.start
|
57
|
-
|
58
|
-
# rubocop:enable Metrics/BlockLength, Metrics/LineLength
|
data/lib/pusher-fake.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "em-http-request"
|
2
4
|
require "em-websocket"
|
3
5
|
require "multi_json"
|
@@ -7,7 +9,7 @@ require "thin"
|
|
7
9
|
# A Pusher fake.
|
8
10
|
module PusherFake
|
9
11
|
# The current version string.
|
10
|
-
VERSION = "
|
12
|
+
VERSION = "2.0.0"
|
11
13
|
|
12
14
|
autoload :Channel, "pusher-fake/channel"
|
13
15
|
autoload :Configuration, "pusher-fake/configuration"
|
data/lib/pusher-fake/channel.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module PusherFake
|
2
4
|
# Channel creation and management.
|
3
5
|
module Channel
|
@@ -6,10 +8,10 @@ module PusherFake
|
|
6
8
|
autoload :Presence, "pusher-fake/channel/presence"
|
7
9
|
|
8
10
|
# Prefix for private channels.
|
9
|
-
PRIVATE_CHANNEL_PREFIX = "private-"
|
11
|
+
PRIVATE_CHANNEL_PREFIX = "private-"
|
10
12
|
|
11
13
|
# Prefix for presence channels.
|
12
|
-
PRESENCE_CHANNEL_PREFIX = "presence-"
|
14
|
+
PRESENCE_CHANNEL_PREFIX = "presence-"
|
13
15
|
|
14
16
|
class << self
|
15
17
|
# @return [Hash] Cache of existing channels.
|
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module PusherFake
|
2
4
|
# A client connection.
|
3
5
|
class Connection
|
4
6
|
# Prefix for client events.
|
5
|
-
CLIENT_EVENT_PREFIX = "client-"
|
7
|
+
CLIENT_EVENT_PREFIX = "client-"
|
6
8
|
|
7
9
|
# @return [EventMachine::WebSocket::Connection] Socket for the connection.
|
8
10
|
attr_reader :socket
|
@@ -19,7 +21,7 @@ module PusherFake
|
|
19
21
|
# @return [Integer] The object ID of the socket.
|
20
22
|
def id
|
21
23
|
parts = socket.object_id.to_s.split("")
|
22
|
-
parts = parts.each_slice(parts.length / 2).to_a
|
24
|
+
parts = parts.each_slice((parts.length / 2.0).ceil).to_a
|
23
25
|
|
24
26
|
[parts.first.join(""), parts.last.join("")].join(".")
|
25
27
|
end
|
data/lib/pusher-fake/cucumber.rb
CHANGED
data/lib/pusher-fake/server.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module PusherFake
|
2
4
|
module Server
|
3
5
|
# The fake web application.
|
4
6
|
class Application
|
5
7
|
CHANNEL_FILTER_ERROR = "user_count may only be requested for presence " \
|
6
8
|
"channels - please supply filter_by_prefix " \
|
7
|
-
"begining with presence-"
|
9
|
+
"begining with presence-"
|
8
10
|
|
9
11
|
CHANNEL_USER_COUNT_ERROR = "Cannot retrieve the user count unless the " \
|
10
|
-
"channel is a presence channel"
|
12
|
+
"channel is a presence channel"
|
11
13
|
|
12
14
|
REQUEST_PATHS = {
|
13
15
|
%r{\A/apps/:id/batch_events\z} => :batch_events,
|
data/lib/pusher-fake/webhook.rb
CHANGED
@@ -1,12 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
feature "Client subscribing to a channel" do
|
4
6
|
before do
|
5
|
-
|
6
|
-
|
7
|
-
# rubocop:disable RSpec/ExpectInHook
|
8
|
-
expect(page).to have_content("Client connected.")
|
9
|
-
# rubocop:enable RSpec/ExpectInHook
|
7
|
+
connect
|
10
8
|
end
|
11
9
|
|
12
10
|
scenario "successfully subscribes to a channel" do
|
@@ -57,6 +55,12 @@ feature "Client subscribing to a channel" do
|
|
57
55
|
page.execute_script("Helpers.subscribe(#{MultiJson.dump(channel)})")
|
58
56
|
end
|
59
57
|
|
58
|
+
def connect
|
59
|
+
visit "/"
|
60
|
+
|
61
|
+
expect(page).to have_content("Client connected.")
|
62
|
+
end
|
63
|
+
|
60
64
|
def override_socket_id(value)
|
61
65
|
page.execute_script(
|
62
66
|
"Pusher.instance.connection.socket_id = #{MultiJson.dump(value)};"
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
shared_examples_for "#process" do
|
@@ -95,8 +97,8 @@ end
|
|
95
97
|
describe PusherFake::Connection, "#id" do
|
96
98
|
subject { described_class.new(socket) }
|
97
99
|
|
98
|
-
let(:id) { "
|
99
|
-
let(:socket) { instance_double(Object, object_id:
|
100
|
+
let(:id) { "1234.567" }
|
101
|
+
let(:socket) { instance_double(Object, object_id: 1_234_567) }
|
100
102
|
|
101
103
|
it "returns the object ID of the socket" do
|
102
104
|
expect(subject.id).to eq(id)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
shared_examples_for "an API request" do
|
@@ -210,7 +212,7 @@ describe PusherFake::Server::Application, ".events" do
|
|
210
212
|
let(:data) { { "example" => "data" } }
|
211
213
|
let(:name) { "event-name" }
|
212
214
|
let(:request) { instance_double(Rack::Request, body: body) }
|
213
|
-
let(:channels) {
|
215
|
+
let(:channels) { %w(channel-1 channel-2) }
|
214
216
|
let(:channel_1) { instance_double(PusherFake::Channel::Public, emit: true) }
|
215
217
|
let(:channel_2) { instance_double(PusherFake::Channel::Public, emit: true) }
|
216
218
|
let(:data_json) { data.to_json }
|
@@ -281,7 +283,7 @@ describe PusherFake::Server::Application, ".batch_events" do
|
|
281
283
|
let(:data) { { "example" => "data" } }
|
282
284
|
let(:name) { "event-name" }
|
283
285
|
let(:request) { instance_double(Rack::Request, body: body) }
|
284
|
-
let(:channels) {
|
286
|
+
let(:channels) { %w(channel-1 channel-2) }
|
285
287
|
let(:channel_1) { instance_double(PusherFake::Channel::Public, emit: true) }
|
286
288
|
let(:channel_2) { instance_double(PusherFake::Channel::Public, emit: true) }
|
287
289
|
let(:data_json) { data.to_json }
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "bundler/setup"
|
2
4
|
|
3
5
|
Bundler.require(:default, :development)
|
4
6
|
|
5
|
-
Dir[File.expand_path("support/**/*.rb", __dir__)].each do |file|
|
7
|
+
Dir[File.expand_path("support/**/*.rb", __dir__)].sort.each do |file|
|
6
8
|
require file
|
7
9
|
end
|
8
10
|
|
data/spec/support/application.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "sinatra"
|
2
4
|
require "tilt/erb"
|
3
5
|
|
@@ -22,7 +24,7 @@ module Sinatra
|
|
22
24
|
protected
|
23
25
|
|
24
26
|
def channel_data
|
25
|
-
return unless params[:channel_name]
|
27
|
+
return unless /^presence-/.match?(params[:channel_name])
|
26
28
|
|
27
29
|
{
|
28
30
|
user_id: params[:socket_id],
|
data/spec/support/capybara.rb
CHANGED
data/spec/support/coveralls.rb
CHANGED
data/spec/support/pusher_fake.rb
CHANGED
data/spec/support/webhooks.rb
CHANGED
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:
|
4
|
+
version: 2.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:
|
11
|
+
date: 2020-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: em-http-request
|
@@ -86,98 +86,112 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - '='
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.3.
|
89
|
+
version: 1.3.3
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.3.
|
96
|
+
version: 1.3.3
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 13.0.1
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 13.0.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rspec
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - '='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 3.
|
117
|
+
version: 3.9.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - '='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 3.
|
124
|
+
version: 3.9.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rubocop
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - '='
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
131
|
+
version: 0.80.1
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - '='
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.
|
138
|
+
version: 0.80.1
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rubocop-performance
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 1.5.2
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 1.5.2
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: rubocop-rspec
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
157
|
- - '='
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version: 1.
|
159
|
+
version: 1.38.1
|
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.
|
166
|
+
version: 1.38.1
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: sinatra
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - '='
|
158
172
|
- !ruby/object:Gem::Version
|
159
|
-
version: 2.0.
|
173
|
+
version: 2.0.8.1
|
160
174
|
type: :development
|
161
175
|
prerelease: false
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
163
177
|
requirements:
|
164
178
|
- - '='
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version: 2.0.
|
180
|
+
version: 2.0.8.1
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: yard
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
185
|
- - '='
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.9.
|
187
|
+
version: 0.9.24
|
174
188
|
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
192
|
- - '='
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.9.
|
194
|
+
version: 0.9.24
|
181
195
|
description: A fake Pusher server for development and testing.
|
182
196
|
email: hello@tristandunn.com
|
183
197
|
executables:
|
@@ -243,7 +257,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
243
257
|
requirements:
|
244
258
|
- - ">="
|
245
259
|
- !ruby/object:Gem::Version
|
246
|
-
version: '
|
260
|
+
version: '2.4'
|
247
261
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
248
262
|
requirements:
|
249
263
|
- - ">="
|