Skip to content

Commit 02d0150

Browse files
author
Inbal Tako
committed
Minor bug fix and code cleanup
1 parent 703055b commit 02d0150

File tree

4 files changed

+23
-35
lines changed

4 files changed

+23
-35
lines changed

lib/securenative.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require_relative 'logger'
2+
require_relative 'utils/signature_utils'
23

34
class SecureNative
45
attr_reader :options
@@ -71,8 +72,10 @@ def self._flush
7172
@securenative = nil
7273
end
7374

74-
# TODO!
7575
def verify_request_payload(request)
76-
# code here
76+
request_signature = request.header[SignatureUtils.SIGNATURE_HEADER]
77+
body = request.body
78+
79+
SignatureUtils.valid_signature?(@options.api_key, body, request_signature)
7780
end
7881
end

lib/utils/signature_utils.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
require 'openssl'
22

33
class SignatureUtils
4+
SIGNATURE_HEADER = 'x-securenative'.freeze
5+
46
def self.valid_signature?(api_key, payload, header_signature)
57
key = api_key.encode('utf-8')
68
body = payload.encode('utf-8')

spec/spec_configuration_manager.rb

Lines changed: 0 additions & 31 deletions
This file was deleted.

spec/spec_context_builder.rb

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
1+
# frozen_string_literal: true
2+
3+
require 'webmock/rspec'
4+
15
describe ContextBuilder do
26
it 'creates context from request' do
3-
# TODO: code here
7+
stub_request(:any, 'www.example.com')
8+
.to_return(body: nil, status: 200,
9+
headers: { 'x-securenative': '71532c1fad2c7f56118f7969e401f3cf080239140d208e7934e6a530818c37e544a0c2330a487bcc6fe4f662a57f265a3ed9f37871e80529128a5e4f2ca02db0fb975ded401398f698f19bb0cafd68a239c6caff99f6f105286ab695eaf3477365bdef524f5d70d9be1d1d474506b433aed05d7ed9a435eeca357de57817b37c638b6bb417ffb101eaf856987615a77a' },
10+
remote_ip: '', uri: 'www.securenative.com', method: 'Post', ip: '51.68.201.122',
11+
client_token: '71532c1fad2c7f56118f7969e401f3cf080239140d208e7934e6a530818c37e544a0c2330a487bcc6fe4f662a57f265a3ed9f37871e80529128a5e4f2ca02db0fb975ded401398f698f19bb0cafd68a239c6caff99f6f105286ab695eaf3477365bdef524f5d70d9be1d1d474506b433aed05d7ed9a435eeca357de57817b37c638b6bb417ffb101eaf856987615a77a')
412

13+
request = Net::HTTP.get('www.example.com', '/')
514
context = ContextBuilder.from_http_request(request).build
615

716
expect(context.client_token).to eq('71532c1fad2c7f56118f7969e401f3cf080239140d208e7934e6a530818c37e544a0c2330a487bcc6fe4f662a57f265a3ed9f37871e80529128a5e4f2ca02db0fb975ded401398f698f19bb0cafd68a239c6caff99f6f105286ab695eaf3477365bdef524f5d70d9be1d1d474506b433aed05d7ed9a435eeca357de57817b37c638b6bb417ffb101eaf856987615a77a')
@@ -14,8 +23,13 @@
1423
end
1524

1625
it 'creates context from request with cookie' do
17-
# TODO: code here
26+
stub_request(:any, 'www.example.com')
27+
.to_return(body: nil, status: 200,
28+
cookies: { '_sn': '71532c1fad2c7f56118f7969e401f3cf080239140d208e7934e6a530818c37e544a0c2330a487bcc6fe4f662a57f265a3ed9f37871e80529128a5e4f2ca02db0fb975ded401398f698f19bb0cafd68a239c6caff99f6f105286ab695eaf3477365bdef524f5d70d9be1d1d474506b433aed05d7ed9a435eeca357de57817b37c638b6bb417ffb101eaf856987615a77a' },
29+
remote_ip: '', uri: 'www.securenative.com', method: 'Post', ip: '51.68.201.122',
30+
client_token: '71532c1fad2c7f56118f7969e401f3cf080239140d208e7934e6a530818c37e544a0c2330a487bcc6fe4f662a57f265a3ed9f37871e80529128a5e4f2ca02db0fb975ded401398f698f19bb0cafd68a239c6caff99f6f105286ab695eaf3477365bdef524f5d70d9be1d1d474506b433aed05d7ed9a435eeca357de57817b37c638b6bb417ffb101eaf856987615a77a')
1831

32+
request = Net::HTTP.get('www.example.com', '/')
1933
context = ContextBuilder.from_http_request(request).build
2034

2135
expect(context.client_token).to eq('71532c1fad2c7f56118f7969e401f3cf080239140d208e7934e6a530818c37e544a0c2330a487bcc6fe4f662a57f265a3ed9f37871e80529128a5e4f2ca02db0fb975ded401398f698f19bb0cafd68a239c6caff99f6f105286ab695eaf3477365bdef524f5d70d9be1d1d474506b433aed05d7ed9a435eeca357de57817b37c638b6bb417ffb101eaf856987615a77a')

0 commit comments

Comments
 (0)