Sha256: b87fc41223bfb75da7926aee481c9a1915d1ea6364c2457d529e3bbea4cf6142

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

require 'spec_helper'

describe Buckaroo::Ideal::ResponseSignature do
  let(:response) {
    mock transaction_id: 'transaction_id',
         timestamp:      'timestamp',
         invoice_number: 'invoice_number',
         reference:      'reference',
         currency:       'EUR',
         amount:         12.50,
         status:         mock(code: '101'),
         test_mode:      true
  }
  
  let(:signature) {
    Buckaroo::Ideal::ResponseSignature.new(response, '282538ee4f56f9a1ef8f146b18e2003c')
  }
  
  before do
    Buckaroo::Ideal::Config.stub(:merchant_key)
                           .and_return('merchant_key')
    
    Buckaroo::Ideal::Config.stub(:secret_key)
                           .and_return('secret_key')
  end
  
  describe '#valid?' do
    it 'returns true if the given signature matches the generated signature' do
      signature.should be_valid
    end
    
    it 'returns false if the given signature does not match the generated signature' do
      signature = Buckaroo::Ideal::ResponseSignature.new(response, 'wrong')
      signature.should_not be_valid
    end
  end
  
  describe '#generated_signature' do
    it 'generates a signature for the given response' do
      expected_salt = [
        'transaction_id', # response.transaction_id
        'timestamp',      # response.timestamp
        'merchant_key',   # config.merchant_key
        'invoice_number', # response.invoice_number
        'reference',      # response.reference
        'EUR',            # response.currency
        1250,             # response.amount (in cents)
        '101',            # response.status.code
        '1',              # response.test_mode
        'secret_key'      # config.secret_key
      ].join
      
      Digest::MD5.should_receive(:hexdigest)
                 .with(expected_salt)
      
      signature.generate_signature
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
buckaroo-ideal-0.0.1 spec/buckaroo-ideal/response_signature_spec.rb