Skip to content

Commit 611f221

Browse files
committed
Adds signature_verifier_spec.
1 parent bf3af10 commit 611f221

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

spec/api_spec.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
require File.expand_path('../spec_helper', __FILE__)
22

33
describe 'API' do
4-
include Rack::Test::Methods
5-
64
let(:api) { API.new(github_client) }
75
let(:github_client) { double(Octokit::Client) }
86

spec/signature_verifier_spec.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
require File.expand_path('../spec_helper', __FILE__)
2+
3+
describe 'SignatureVerifier' do
4+
let(:signature_verifier) { SignatureVerifier.new }
5+
let(:payload) { '{"some_data": "awesome json"}' }
6+
7+
it 'returns false with a missing header' do
8+
result = signature_verifier.verify_signature(payload, nil)
9+
10+
expect(result).to be_falsey
11+
end
12+
13+
it 'returns false with an invalid signature' do
14+
result = signature_verifier.verify_signature(payload, 'some_invalid_signature')
15+
16+
expect(result).to be_falsey
17+
end
18+
19+
it 'returns true with a valid signature' do
20+
valid_signature = 'sha1=' + OpenSSL::HMAC.hexdigest(
21+
OpenSSL::Digest.new('sha1'),
22+
ENV['WEBHOOK_SECRET_TOKEN'],
23+
payload
24+
)
25+
26+
result = signature_verifier.verify_signature(payload, valid_signature)
27+
28+
expect(result).to be_truthy
29+
end
30+
end

spec/spec_helper.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
ENV['WEBHOOK_ENDPOINT'] = '/payload'
55
ENV['CONTRIBUTOR_TEAM_ID'] = '1234567'
66
ENV['INVITATION_MESSAGE'] = 'Thanks!'
7-
ENV['GITHUB_TOKEN'] = '12jove8hgowbuv'
7+
ENV['GITHUB_TOKEN'] = '12jove8hgowbuvf3rw' # random string
8+
ENV['WEBHOOK_SECRET_TOKEN'] = 'n3iv9aj3v0' # this too
89

910
require 'octokit'
1011
require 'sinatra'

0 commit comments

Comments
 (0)