require 'net/http' describe 'AmazonV2RequestSigner' do let(:request_signer) do # These are actual keys, but they’re safe to put here because # - they never had any rights attached, and # - the keys were revoked before copying them here Cellar::AmazonV2RequestSigner.new( 'AKIAJFTRSGRH3RXX6D5Q', '3/y/3Tf5zkfcrTaLFxyKB/oU2/7ay7/Dz8UdEHC7', 'rogets' ) end before { Timecop.freeze(Time.gm(2016, 10, 2)) } after { Timecop.return } describe 'signature generation' do context 'for presigned URLs' do subject do request_signer.signature( method: 'GET', key: 'fichier', expires: 5.minutes.from_now.to_i ) end it { is_expected.to eq('nzCsB6cip8oofkuOdvvJs6FafkA=') } end context 'for server-side requests' do subject do Net::HTTP::Delete.new('https://rogets.cellar.services.clever-cloud.com/fichier') end before { request_signer.sign(subject, 'fichier') } it { expect(subject['date']).to eq(Time.zone.now.httpdate) } it { expect(subject['authorization']).to eq('AWS AKIAJFTRSGRH3RXX6D5Q:nkvviwZYb1V9HDrKyJZmY3Z8sSA=') } end end end