pusher-fake 3.0.0 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pusher-fake/channel/presence.rb +1 -1
- data/lib/pusher-fake/channel/public.rb +32 -0
- data/lib/pusher-fake/configuration.rb +9 -1
- data/lib/pusher-fake/server.rb +0 -9
- data/lib/pusher-fake.rb +1 -1
- data/spec/features/api/channels_spec.rb +3 -3
- data/spec/features/client/subscribe_spec.rb +21 -6
- data/spec/features/server/webhooks_spec.rb +19 -0
- data/spec/lib/pusher-fake/channel/public_spec.rb +58 -0
- data/spec/lib/pusher-fake/configuration_spec.rb +19 -0
- data/spec/lib/pusher_fake_spec.rb +2 -2
- data/spec/spec_helper.rb +13 -0
- data/spec/support/application/public/javascripts/vendor/{pusher-7.0.0.js → pusher-7.0.6.js} +7 -5
- data/spec/support/application/views/index.erb +4 -1
- data/spec/support/capybara.rb +3 -0
- metadata +28 -29
- data/spec/support/coveralls.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz: '
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '039808605b16ad3d4532da9fc4041f4f2cba3f783e4ec63729f5bc5b024565eb'
|
4
|
+
data.tar.gz: 4ff72ecce469d90b48892ae1fe0f677806a9aa8b8a3b0ff5a33c7105da3585b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7036cbe9c7d805d193ccbb6492a58ef102e793218907787df1a8a2155a828e10aab13483ec6d783a65a1b11dc8936e73f8d3f55735cf64bb948a590dfe4e238a
|
7
|
+
data.tar.gz: ecf4faa213465f21879a0926c9e2adf8d1b80e515eff2a2192c8033e998bcbaca044e770c54652d6a31c4f967cc88f4c7c4a9cb3b04c601eb68016a964140c84
|
@@ -36,7 +36,7 @@ module PusherFake
|
|
36
36
|
#
|
37
37
|
# @return [Hash] Hash containing presence information.
|
38
38
|
def subscription_data
|
39
|
-
hash = members.
|
39
|
+
hash = members.to_h { |_, member| [member[:user_id], member[:user_info]] }
|
40
40
|
|
41
41
|
{ presence: { hash: hash, count: members.size } }
|
42
42
|
end
|
@@ -4,6 +4,8 @@ module PusherFake
|
|
4
4
|
module Channel
|
5
5
|
# A public channel.
|
6
6
|
class Public
|
7
|
+
CACHE_CHANNEL_PREFIX = /^(private-|presence-){0,1}cache-/.freeze
|
8
|
+
|
7
9
|
# @return [Array] Connections in this channel.
|
8
10
|
attr_reader :connections
|
9
11
|
|
@@ -15,6 +17,7 @@ module PusherFake
|
|
15
17
|
# @param [String] name The channel name.
|
16
18
|
def initialize(name)
|
17
19
|
@name = name
|
20
|
+
@last_event = nil
|
18
21
|
@connections = []
|
19
22
|
end
|
20
23
|
|
@@ -24,6 +27,7 @@ module PusherFake
|
|
24
27
|
# @param [Hash] options The options for the channel.
|
25
28
|
def add(connection, options = {})
|
26
29
|
subscription_succeeded(connection, options)
|
30
|
+
emit_last_event(connection)
|
27
31
|
end
|
28
32
|
|
29
33
|
# Emit an event to the channel.
|
@@ -31,6 +35,10 @@ module PusherFake
|
|
31
35
|
# @param [String] event The event name.
|
32
36
|
# @param [Hash] data The event data.
|
33
37
|
def emit(event, data, options = {})
|
38
|
+
if cache_channel?
|
39
|
+
@last_event = [event, data]
|
40
|
+
end
|
41
|
+
|
34
42
|
connections.each do |connection|
|
35
43
|
unless connection.id == options[:socket_id]
|
36
44
|
connection.emit(event, data, name)
|
@@ -71,6 +79,30 @@ module PusherFake
|
|
71
79
|
|
72
80
|
private
|
73
81
|
|
82
|
+
# @return [Array] Arguments for the last event emitted.
|
83
|
+
attr_reader :last_event
|
84
|
+
|
85
|
+
# Whether or not the channel is a cache channel.
|
86
|
+
#
|
87
|
+
# @return [Boolean]
|
88
|
+
def cache_channel?
|
89
|
+
@cache_channel ||= name.match?(CACHE_CHANNEL_PREFIX)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Emit the last event if present and a cache channel.
|
93
|
+
#
|
94
|
+
# @param [Connection] connection The connection to emit to.
|
95
|
+
def emit_last_event(connection)
|
96
|
+
return unless cache_channel?
|
97
|
+
|
98
|
+
if last_event
|
99
|
+
connection.emit(*last_event, name)
|
100
|
+
else
|
101
|
+
connection.emit("pusher:cache_miss", nil, name)
|
102
|
+
trigger("cache_miss", channel: name)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
74
106
|
# Notify the +connection+ of the successful subscription and add the
|
75
107
|
# connection to the channel.
|
76
108
|
#
|
@@ -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 =
|
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
|
data/lib/pusher-fake/server.rb
CHANGED
@@ -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
@@ -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
|
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
|
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
|
65
|
+
expect(result[:occupied]).to be(true)
|
66
66
|
expect(result[:user_count]).to eq(1)
|
67
67
|
end
|
68
68
|
|
@@ -3,6 +3,10 @@
|
|
3
3
|
require "spec_helper"
|
4
4
|
|
5
5
|
feature "Client subscribing to a channel" do
|
6
|
+
let(:cache_event) { "command" }
|
7
|
+
let(:cache_channel) { "cache-last-command" }
|
8
|
+
let(:other_user) { "Bob" }
|
9
|
+
|
6
10
|
before do
|
7
11
|
connect
|
8
12
|
end
|
@@ -49,16 +53,27 @@ feature "Client subscribing to a channel" do
|
|
49
53
|
expect(page).not_to have_content("Subscribed to presence-game-1.")
|
50
54
|
end
|
51
55
|
|
52
|
-
|
56
|
+
scenario "successfully subscribes to a cache channel, with no cached event" do
|
57
|
+
subscribe_to(cache_channel)
|
53
58
|
|
54
|
-
|
55
|
-
page.execute_script("Helpers.subscribe(#{MultiJson.dump(channel)})")
|
59
|
+
expect(page).to have_content("No cached event for cache-last-command.")
|
56
60
|
end
|
57
61
|
|
58
|
-
|
59
|
-
|
62
|
+
scenario "successfully subscribes to a cache channel, with cached event" do
|
63
|
+
subscribe_to(cache_channel)
|
64
|
+
Pusher.trigger(cache_channel, cache_event, {}, {})
|
65
|
+
|
66
|
+
connect_as(other_user, channel: cache_channel)
|
60
67
|
|
61
|
-
|
68
|
+
using_session(other_user) do
|
69
|
+
expect(page).to have_content("Channel #{cache_channel} received #{cache_event} event.")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
protected
|
74
|
+
|
75
|
+
def attempt_to_subscribe_to(channel)
|
76
|
+
page.execute_script("Helpers.subscribe(#{MultiJson.dump(channel)})")
|
62
77
|
end
|
63
78
|
|
64
79
|
def override_socket_id(value)
|
@@ -5,6 +5,7 @@ require "spec_helper"
|
|
5
5
|
feature "Receiving event webhooks" do
|
6
6
|
let(:channel) { "room-1" }
|
7
7
|
let(:other_user) { "Bob" }
|
8
|
+
let(:cache_channel) { "cache-last-command" }
|
8
9
|
let(:presence_channel) { "presence-room-1" }
|
9
10
|
|
10
11
|
before do
|
@@ -72,6 +73,24 @@ feature "Receiving event webhooks" do
|
|
72
73
|
"user_id" => user_id(other_user))
|
73
74
|
end
|
74
75
|
|
76
|
+
scenario "subscribing to a cache channel with no event" do
|
77
|
+
subscribe_to(cache_channel)
|
78
|
+
|
79
|
+
expect(events).to include_event("cache_miss",
|
80
|
+
"channel" => cache_channel)
|
81
|
+
end
|
82
|
+
|
83
|
+
scenario "subscribing to a cache channel with an event" do
|
84
|
+
subscribe_to(cache_channel)
|
85
|
+
events.clear
|
86
|
+
Pusher.trigger(cache_channel, "an event", {}, {})
|
87
|
+
|
88
|
+
subscribe_to_as(cache_channel, other_user)
|
89
|
+
|
90
|
+
expect(events).not_to include_event("cache_miss",
|
91
|
+
"channel" => cache_channel)
|
92
|
+
end
|
93
|
+
|
75
94
|
protected
|
76
95
|
|
77
96
|
def events
|
@@ -53,6 +53,64 @@ describe PusherFake::Channel, "#add" do
|
|
53
53
|
expect(PusherFake::Webhook).to have_received(:trigger)
|
54
54
|
.with("channel_occupied", channel: name).once
|
55
55
|
end
|
56
|
+
|
57
|
+
context "when a cached channel" do
|
58
|
+
let(:name) { "cache-name" }
|
59
|
+
|
60
|
+
before do
|
61
|
+
allow(subject).to receive(:connections).and_call_original
|
62
|
+
end
|
63
|
+
|
64
|
+
context "with a cached event" do
|
65
|
+
before do
|
66
|
+
subject.emit("example-cache-event", example: true)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "triggers the cached event to the connection added" do
|
70
|
+
subject.add(connection)
|
71
|
+
|
72
|
+
expect(connection).to have_received(:emit)
|
73
|
+
.with("example-cache-event", { example: true }, name).once
|
74
|
+
end
|
75
|
+
|
76
|
+
it "does not trigger cache miss event" do
|
77
|
+
subject.add(connection)
|
78
|
+
|
79
|
+
expect(connection).not_to have_received(:emit)
|
80
|
+
.with("pusher:cache-miss", nil, name)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "does not trigger cache miss webhook" do
|
84
|
+
subject.add(connection)
|
85
|
+
|
86
|
+
expect(PusherFake::Webhook).not_to have_received(:trigger)
|
87
|
+
.with("cache_miss", channel: name)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context "without a cached event" do
|
92
|
+
it "triggers cache miss event" do
|
93
|
+
subject.add(connection)
|
94
|
+
|
95
|
+
expect(connection).to have_received(:emit)
|
96
|
+
.with("pusher:cache_miss", nil, name).once
|
97
|
+
end
|
98
|
+
|
99
|
+
it "triggers cache miss webhook" do
|
100
|
+
subject.add(connection)
|
101
|
+
|
102
|
+
expect(PusherFake::Webhook).to have_received(:trigger)
|
103
|
+
.with("cache_miss", channel: name).once
|
104
|
+
end
|
105
|
+
|
106
|
+
it "does not trigger event" do
|
107
|
+
subject.add(connection)
|
108
|
+
|
109
|
+
expect(connection).not_to have_received(:emit)
|
110
|
+
.with("example-cache-event", { example: true }, name)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
56
114
|
end
|
57
115
|
|
58
116
|
describe PusherFake::Channel, "#emit" do
|
@@ -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(
|
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(
|
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.
|
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
|
-
|
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
|
-
|
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.
|
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 &&
|
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.
|
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) {
|
@@ -65,6 +65,9 @@
|
|
65
65
|
|
66
66
|
list.removeChild(item);
|
67
67
|
})
|
68
|
+
.bind("pusher:cache_miss", function(client) {
|
69
|
+
Helpers.log("No cached event for " + name + ".");
|
70
|
+
})
|
68
71
|
.bind_global(function(event, message) {
|
69
72
|
Helpers.log("Channel " + name + " received " + event + " event.");
|
70
73
|
});
|
data/spec/support/capybara.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: 4.1.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: 2022-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: em-http-request
|
@@ -72,42 +72,42 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 3.
|
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: 3.
|
82
|
+
version: 3.36.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: puma
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - '='
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 5.4
|
89
|
+
version: 5.6.4
|
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: 5.4
|
96
|
+
version: 5.6.4
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: pusher
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 2.0.
|
103
|
+
version: 2.0.2
|
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: 2.0.
|
110
|
+
version: 2.0.2
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,42 +128,42 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - '='
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 3.
|
131
|
+
version: 3.11.0
|
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: 3.
|
138
|
+
version: 3.11.0
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: rubocop
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - '='
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 1.
|
145
|
+
version: 1.26.1
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - '='
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 1.
|
152
|
+
version: 1.26.1
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: rubocop-performance
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - '='
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 1.
|
159
|
+
version: 1.13.3
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - '='
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 1.
|
166
|
+
version: 1.13.3
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: rubocop-rake
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,56 +184,56 @@ dependencies:
|
|
184
184
|
requirements:
|
185
185
|
- - '='
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 2.
|
187
|
+
version: 2.9.0
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - '='
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 2.
|
194
|
+
version: 2.9.0
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: selenium-webdriver
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
199
|
- - '='
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
201
|
+
version: 4.1.0
|
202
202
|
type: :development
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
206
|
- - '='
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
208
|
+
version: 4.1.0
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: sinatra
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
213
|
- - '='
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version: 2.
|
215
|
+
version: 2.2.0
|
216
216
|
type: :development
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
220
|
- - '='
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version: 2.
|
222
|
+
version: 2.2.0
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
224
|
name: yard
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
226
226
|
requirements:
|
227
227
|
- - '='
|
228
228
|
- !ruby/object:Gem::Version
|
229
|
-
version: 0.9.
|
229
|
+
version: 0.9.27
|
230
230
|
type: :development
|
231
231
|
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
234
|
- - '='
|
235
235
|
- !ruby/object:Gem::Version
|
236
|
-
version: 0.9.
|
236
|
+
version: 0.9.27
|
237
237
|
description: A fake Pusher server for development and testing.
|
238
238
|
email: hello@tristandunn.com
|
239
239
|
executables:
|
@@ -276,10 +276,9 @@ files:
|
|
276
276
|
- spec/spec_helper.rb
|
277
277
|
- spec/support/application.rb
|
278
278
|
- spec/support/application/public/javascripts/vendor/polyfill.min.js
|
279
|
-
- spec/support/application/public/javascripts/vendor/pusher-7.0.
|
279
|
+
- spec/support/application/public/javascripts/vendor/pusher-7.0.6.js
|
280
280
|
- spec/support/application/views/index.erb
|
281
281
|
- spec/support/capybara.rb
|
282
|
-
- spec/support/coveralls.rb
|
283
282
|
- spec/support/helpers/connect.rb
|
284
283
|
- spec/support/helpers/event.rb
|
285
284
|
- spec/support/helpers/subscription.rb
|
@@ -290,7 +289,8 @@ files:
|
|
290
289
|
homepage: https://github.com/tristandunn/pusher-fake
|
291
290
|
licenses:
|
292
291
|
- MIT
|
293
|
-
metadata:
|
292
|
+
metadata:
|
293
|
+
rubygems_mfa_required: 'true'
|
294
294
|
post_install_message:
|
295
295
|
rdoc_options: []
|
296
296
|
require_paths:
|
@@ -299,14 +299,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
299
299
|
requirements:
|
300
300
|
- - ">="
|
301
301
|
- !ruby/object:Gem::Version
|
302
|
-
version: '2.
|
302
|
+
version: '2.7'
|
303
303
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
304
304
|
requirements:
|
305
305
|
- - ">="
|
306
306
|
- !ruby/object:Gem::Version
|
307
307
|
version: '0'
|
308
308
|
requirements: []
|
309
|
-
rubygems_version: 3.
|
309
|
+
rubygems_version: 3.3.7
|
310
310
|
signing_key:
|
311
311
|
specification_version: 4
|
312
312
|
summary: A fake Pusher server for development and testing.
|
@@ -331,11 +331,10 @@ test_files:
|
|
331
331
|
- spec/lib/pusher_fake_spec.rb
|
332
332
|
- spec/spec_helper.rb
|
333
333
|
- spec/support/application/public/javascripts/vendor/polyfill.min.js
|
334
|
-
- spec/support/application/public/javascripts/vendor/pusher-7.0.
|
334
|
+
- spec/support/application/public/javascripts/vendor/pusher-7.0.6.js
|
335
335
|
- spec/support/application/views/index.erb
|
336
336
|
- spec/support/application.rb
|
337
337
|
- spec/support/capybara.rb
|
338
|
-
- spec/support/coveralls.rb
|
339
338
|
- spec/support/helpers/connect.rb
|
340
339
|
- spec/support/helpers/event.rb
|
341
340
|
- spec/support/helpers/subscription.rb
|