require 'spec_helper' describe Rack::OAuth2::AccessToken::MAC::Signature do # From the example of Webtopay wallet API # ref) https://www.webtopay.com/wallet/ context 'when ext is not given' do subject do Rack::OAuth2::AccessToken::MAC::Signature.new( secret: 'IrdTc8uQodU7PRpLzzLTW6wqZAO6tAMU', algorithm: 'hmac-sha-256', nonce: 'dj83hs9s', ts: 1336363200, method: 'GET', request_uri: '/wallet/rest/api/v1/payment/123', host: 'www.webtopay.com', port: 443 ) end its(:calculate) { should == 'OZE9fTk2qiRtL1jb01L8lRxC66PTiAGhMDEmboeVeLs=' } end # From the example of MAC spec section 1.1 # ref) http://tools.ietf.org/pdf/draft-ietf-oauth-v2-http-mac-01.pdf context 'when ext is not given' do subject do Rack::OAuth2::AccessToken::MAC::Signature.new( secret: '489dks293j39', algorithm: 'hmac-sha-1', nonce: 'dj83hs9s', ts: 1336363200, method: 'GET', request_uri: '/resource/1?b=1&a=2', host: 'example.com', port: 80 ) end its(:calculate) { should == '6T3zZzy2Emppni6bzL7kdRxUWL4=' } end # From the example of MAC spec section 3.2 # ref) http://tools.ietf.org/pdf/draft-ietf-oauth-v2-http-mac-01.pdf context 'otherwise' do subject do Rack::OAuth2::AccessToken::MAC::Signature.new( secret: '489dks293j39', algorithm: 'hmac-sha-1', nonce: '7d8f3e4a', ts: 264095, method: 'POST', request_uri: '/request?b5=%3D%253D&a3=a&c%40=&a2=r%20b&c2&a3=2+q', host: 'example.com', port: 80, ext: 'a,b,c' ) end its(:calculate) { should == '+txL5oOFHGYjrfdNYH5VEzROaBY=' } end end