pusher 2.0.0 → 2.0.1

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.
data/spec/spec_helper.rb DELETED
@@ -1,26 +0,0 @@
1
- begin
2
- require 'bundler/setup'
3
- rescue LoadError
4
- puts 'although not required, it is recommended that you use bundler when running the tests'
5
- end
6
-
7
- ENV['PUSHER_URL']= 'http://some:secret@api.secret.pusherapp.com:441/apps/54'
8
-
9
- require 'rspec'
10
- require 'em-http' # As of webmock 1.4.0, em-http must be loaded first
11
- require 'webmock/rspec'
12
-
13
- require 'pusher'
14
- require 'eventmachine'
15
-
16
- RSpec.configure do |config|
17
- config.before(:each) do
18
- WebMock.reset!
19
- WebMock.disable_net_connect!
20
- end
21
- end
22
-
23
- def hmac(key, data)
24
- digest = OpenSSL::Digest::SHA256.new
25
- OpenSSL::HMAC.hexdigest(digest, key, data)
26
- end
@@ -1,117 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'rack'
4
- require 'stringio'
5
-
6
- describe Pusher::WebHook do
7
- before :each do
8
- @hook_data = {
9
- "time_ms" => 123456,
10
- "events" => [
11
- {"name" => 'foo'}
12
- ]
13
- }
14
- end
15
-
16
- describe "initialization" do
17
- it "can be initialized with Rack::Request" do
18
- request = Rack::Request.new({
19
- 'HTTP_X_PUSHER_KEY' => '1234',
20
- 'HTTP_X_PUSHER_SIGNATURE' => 'asdf',
21
- 'CONTENT_TYPE' => 'application/json',
22
- 'rack.input' => StringIO.new(MultiJson.encode(@hook_data))
23
- })
24
- wh = Pusher::WebHook.new(request)
25
- expect(wh.key).to eq('1234')
26
- expect(wh.signature).to eq('asdf')
27
- expect(wh.data).to eq(@hook_data)
28
- end
29
-
30
- it "can be initialized with a hash" do
31
- request = {
32
- :key => '1234',
33
- :signature => 'asdf',
34
- :content_type => 'application/json',
35
- :body => MultiJson.encode(@hook_data),
36
- }
37
- wh = Pusher::WebHook.new(request)
38
- expect(wh.key).to eq('1234')
39
- expect(wh.signature).to eq('asdf')
40
- expect(wh.data).to eq(@hook_data)
41
- end
42
- end
43
-
44
- describe "after initialization" do
45
- before :each do
46
- @body = MultiJson.encode(@hook_data)
47
- request = {
48
- :key => '1234',
49
- :signature => hmac('asdf', @body),
50
- :content_type => 'application/json',
51
- :body => @body
52
- }
53
-
54
- @client = Pusher::Client.new
55
- @wh = Pusher::WebHook.new(request, @client)
56
- end
57
-
58
- it "should validate" do
59
- @client.key = '1234'
60
- @client.secret = 'asdf'
61
- expect(@wh).to be_valid
62
- end
63
-
64
- it "should not validate if key is wrong" do
65
- @client.key = '12345'
66
- @client.secret = 'asdf'
67
- expect(Pusher.logger).to receive(:warn).with("Received webhook with unknown key: 1234")
68
- expect(@wh).not_to be_valid
69
- end
70
-
71
- it "should not validate if secret is wrong" do
72
- @client.key = '1234'
73
- @client.secret = 'asdfxxx'
74
- digest = OpenSSL::Digest::SHA256.new
75
- expected = OpenSSL::HMAC.hexdigest(digest, @client.secret, @body)
76
- expect(Pusher.logger).to receive(:warn).with("Received WebHook with invalid signature: got #{@wh.signature}, expected #{expected}")
77
- expect(@wh).not_to be_valid
78
- end
79
-
80
- it "should validate with an extra token" do
81
- @client.key = '12345'
82
- @client.secret = 'xxx'
83
- expect(@wh.valid?({:key => '1234', :secret => 'asdf'})).to be_truthy
84
- end
85
-
86
- it "should validate with an array of extra tokens" do
87
- @client.key = '123456'
88
- @client.secret = 'xxx'
89
- expect(@wh.valid?([
90
- {:key => '12345', :secret => 'wtf'},
91
- {:key => '1234', :secret => 'asdf'}
92
- ])).to be_truthy
93
- end
94
-
95
- it "should not validate if all keys are wrong with extra tokens" do
96
- @client.key = '123456'
97
- @client.secret = 'asdf'
98
- expect(Pusher.logger).to receive(:warn).with("Received webhook with unknown key: 1234")
99
- expect(@wh.valid?({:key => '12345', :secret => 'asdf'})).to be_falsey
100
- end
101
-
102
- it "should not validate if secret is wrong with extra tokens" do
103
- @client.key = '123456'
104
- @client.secret = 'asdfxxx'
105
- expect(Pusher.logger).to receive(:warn).with(/Received WebHook with invalid signature/)
106
- expect(@wh.valid?({:key => '1234', :secret => 'wtf'})).to be_falsey
107
- end
108
-
109
- it "should expose events" do
110
- expect(@wh.events).to eq(@hook_data["events"])
111
- end
112
-
113
- it "should expose time" do
114
- expect(@wh.time).to eq(Time.at(123.456))
115
- end
116
- end
117
- end