1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
require File.expand_path('../../test_helper', __FILE__)
require 'oauth/consumer'
require 'oauth/signature/rsa/sha1'
class TestSignatureRsaSha1 < Minitest::Test
def setup
@request = Net::HTTP::Get.new("/photos?file=vacaction.jpg&size=original&oauth_version=1.0&oauth_consumer_key=#{consumer_key}&oauth_timestamp=1196666512&oauth_nonce=13917289812797014437&oauth_signature_method=RSA-SHA1")
@consumer = OAuth::Consumer.new(consumer_key, pkey_rsa)
end
def test_that_rsa_sha1_implements_rsa_sha1
assert OAuth::Signature.available_methods.include?('rsa-sha1')
end
def test_that_get_request_from_oauth_test_cases_produces_matching_signature_base_string
sbs = OAuth::Signature.signature_base_string(@request, { :consumer => @consumer,
:uri => 'http://photos.example.net/photos' } )
assert_equal 'GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacaction.jpg%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26oauth_nonce%3D13917289812797014437%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D1196666512%26oauth_version%3D1.0%26size%3Doriginal', sbs
end
def test_that_get_request_from_oauth_test_cases_produces_matching_signature
signature = OAuth::Signature.sign(@request, { :consumer => @consumer,
:uri => 'http://photos.example.net/photos' } )
assert_equal 'jvTp/wX1TYtByB1m+Pbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2/9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW//e+RinhejgCuzoH26dyF8iY2ZZ/5D1ilgeijhV/vBka5twt399mXwaYdCwFYE=', signature
end
def test_that_get_request_from_oauth_test_cases_produces_matching_signature_using_private_key_file
@consumer = OAuth::Consumer.new(consumer_key,nil)
signature = OAuth::Signature.sign(@request, { :consumer => @consumer,
:private_key_file=>pem_path,
:uri => 'http://photos.example.net/photos' } )
assert_equal 'jvTp/wX1TYtByB1m+Pbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2/9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW//e+RinhejgCuzoH26dyF8iY2ZZ/5D1ilgeijhV/vBka5twt399mXwaYdCwFYE=', signature
end
def test_that_get_request_from_oauth_test_cases_verifies_signature
@request = Net::HTTP::Get.new("/photos?oauth_signature_method=RSA-SHA1&oauth_version=1.0&oauth_consumer_key=#{consumer_key}&oauth_timestamp=1196666512&oauth_nonce=13917289812797014437&file=vacaction.jpg&size=original&oauth_signature=jvTp%2FwX1TYtByB1m%2BPbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2%2F9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW%2F%2Fe%2BRinhejgCuzoH26dyF8iY2ZZ%2F5D1ilgeijhV%2FvBka5twt399mXwaYdCwFYE%3D")
@consumer = OAuth::Consumer.new(consumer_key, x509_certificate)
assert OAuth::Signature.verify(@request, { :consumer => @consumer,
:uri => 'http://photos.example.net/photos' } )
end
def test_that_get_request_from_oauth_test_cases_verifies_signature_with_pem
@request = Net::HTTP::Get.new("/photos?oauth_signature_method=RSA-SHA1&oauth_version=1.0&oauth_consumer_key=#{consumer_key}&oauth_timestamp=1196666512&oauth_nonce=13917289812797014437&file=vacaction.jpg&size=original&oauth_signature=jvTp%2FwX1TYtByB1m%2BPbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2%2F9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW%2F%2Fe%2BRinhejgCuzoH26dyF8iY2ZZ%2F5D1ilgeijhV%2FvBka5twt399mXwaYdCwFYE%3D")
assert OAuth::Signature.verify(@request, { :consumer => @consumer,
:uri => 'http://photos.example.net/photos' } )
end
private
def consumer_key
'dpf43f3p2l4k3l03'
end
def x509_certificate
OpenSSL::X509::Certificate.new(IO.read(cert_path))
end
def pkey_rsa
OpenSSL::PKey::RSA.new(IO.read(pem_path))
end
def cert_path
File.dirname(__FILE__) + "/../keys/rsa.cert"
end
def pem_path
File.dirname(__FILE__) + "/../keys/rsa.pem"
end
end
|