Skip to content

Commit

Permalink
Merge fbe4e7d into 5ddb70f
Browse files Browse the repository at this point in the history
  • Loading branch information
winebarrel committed Oct 1, 2022
2 parents 5ddb70f + fbe4e7d commit c20b8e8
Show file tree
Hide file tree
Showing 9 changed files with 43 additions and 17 deletions.
15 changes: 13 additions & 2 deletions .rubocop.yml
@@ -1,11 +1,14 @@
require:
- rubocop-rake
- rubocop-rspec
AllCops:
Exclude:
- 'gemfiles/**/*'
- "gemfiles/**/*"
TargetRubyVersion: 2.5
NewCops: enable
Bundler/OrderedGems:
Include:
- 'Appraisals'
- "Appraisals"
Metrics/BlockLength:
Enabled: false
Layout/LineLength:
Expand All @@ -14,3 +17,11 @@ Metrics/MethodLength:
Enabled: false
Style/Documentation:
Enabled: false
RSpec/ExampleLength:
Enabled: false
RSpec/MultipleExpectations:
Enabled: false
RSpec/MultipleMemoizedHelpers:
Enabled: false
RSpec/ContextWording:
Enabled: false
4 changes: 2 additions & 2 deletions Appraisals
@@ -1,5 +1,5 @@
# frozen_string_literal: true

appraise 'faraday-1.8' do
gem 'faraday', '~> 1.8.0'
appraise 'faraday-2.0' do
gem 'faraday', '~> 2.0.0'
end
2 changes: 1 addition & 1 deletion faraday_middleware-aws-sigv4.gemspec
Expand Up @@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
spec.add_development_dependency 'bundler'
spec.add_development_dependency 'rake'
spec.add_development_dependency 'rspec', '~> 3.0'
spec.add_development_dependency 'rubocop', '>= 1.8.0'
spec.add_development_dependency 'rubocop', '>= 1.36.0'
spec.add_development_dependency 'rubocop-rake'
spec.add_development_dependency 'rubocop-rspec'
spec.add_development_dependency 'simplecov'
Expand Down
2 changes: 1 addition & 1 deletion gemfiles/faraday_2.0.gemfile
Expand Up @@ -2,6 +2,6 @@

source "https://rubygems.org"

gem "faraday", "~> 2.0"
gem "faraday", "~> 2.0.0"

gemspec path: "../"
4 changes: 2 additions & 2 deletions lib/faraday_middleware/aws_sigv4.rb
@@ -1,8 +1,8 @@
# frozen_string_literal: true

require 'faraday'
require 'faraday_middleware/request/aws_sigv4'

module FaradayMiddleware
autoload :AwsSigV4, 'faraday_middleware/request/aws_sigv4'
Faraday::Request.register_middleware aws_sigv4: -> { AwsSigV4 }
Faraday::Request.register_middleware aws_sigv4: FaradayMiddleware::AwsSigV4
end
@@ -1,7 +1,7 @@
# frozen_string_literal: true

RSpec.describe FaradayMiddleware::AwsSigV4 do
def faraday(options = {}, &block)
def faraday(credentials_provider, options = {}, &block)
options = {
url: 'https://apigateway.us-east-1.amazonaws.com'
}.merge(options)
Expand All @@ -10,7 +10,7 @@ def faraday(options = {}, &block)
aws_sigv4_options = {
service: 'apigateway',
region: 'us-east-1',
credentials_provider: Aws::InstanceProfileCredentials.new
credentials_provider: credentials_provider
}

faraday.request :aws_sigv4, aws_sigv4_options
Expand Down Expand Up @@ -51,23 +51,29 @@ def faraday(options = {}, &block)
'Signature=%<signature>s'
end

before do
stub_const('Net::HTTP::HAVE_ZLIB', true)
let(:credentials_provider) do
creds = Aws::InstanceProfileCredentials.new

allow_any_instance_of(Aws::InstanceProfileCredentials).to receive(:get_credentials) {
allow(creds).to receive(:get_credentials) {
JSON.dump({
'AccessKeyId' => "akid#{Time.now.to_i}",
'SecretAccessKey' => "secret#{Time.now.to_i}",
'Token' => "token#{Time.now.to_i}",
'Expiration' => (Time.now + 3600).xmlschema
})
}

creds
end

before do
stub_const('Net::HTTP::HAVE_ZLIB', true)
end

specify do
account_headers = nil

client = faraday do |stub|
client = faraday(credentials_provider) do |stub|
stub.get('/account') do |env|
account_headers = env.request_headers
[200, { 'Content-Type' => 'application/json' }, JSON.dump(response)]
Expand All @@ -83,6 +89,7 @@ def faraday(options = {}, &block)

expect(account_headers.fetch('authorization')).to match Regexp.new(format(authz_tmpl, access_key_id: 'akid1420070400', signature: "(#{%w[
61446bb36db613084c87fd0585b649a7aaab25332dd0222f297be130cfdaf9a2
d162df96dee6beb5f19d114fc5d3373e02d42fcf5b80822747df42f330d76892
].join('|')})"))

# 50 minutes after
Expand All @@ -97,6 +104,7 @@ def faraday(options = {}, &block)

expect(account_headers.fetch('authorization')).to match Regexp.new(format(authz_tmpl, access_key_id: 'akid1420070400', signature: "(#{%w[
113b39027f338ae11c1ee11673c4ce9bcf25646ee6a412d07f01d3a9dd0cac80
f0f3939d879bfe26a1e4d3d221d38ed69a76ca715e8d6be00968d162dc20f6f6
].join('|')})"))

# 10 minutes after
Expand All @@ -111,6 +119,7 @@ def faraday(options = {}, &block)

expect(account_headers.fetch('authorization')).to match Regexp.new(format(authz_tmpl, access_key_id: 'akid1420074000', signature: "(#{%w[
c9998f111f32b5f0c665e104a39b910dbc90215d66b6392a1fce9c8ff439af53
b8db4e5318ef683ff574ad16c16f96866f56d81b5bf591f76aab9537563ab2b2
].join('|')})"))
end
end
Expand Up @@ -74,13 +74,15 @@ def faraday(options = {}, &block)
end

context 'without query' do
subject { client.get('/account').body }

let(:signature) do
"(#{%w[
ac7f37878c3680d2c6bc29b42d2461eaa273560870bd96c0b9cb124152bbb511
cb93fbe9b4ba7fe373c4e31c8dd3447ac0e459b87b8d6715f31be982c7676629
].join('|')})"
end

subject { client.get('/account').body }
it { is_expected.to eq response }
end

Expand All @@ -91,21 +93,25 @@ def faraday(options = {}, &block)
let(:signature) do
"(#{%w[
1790916eb1f52bd32fd37d4b185132c8d12c9e29edddd80307fbbcb98308e4b9
a9c40d1e3c7f79841f277b0cf103a4e75c973980e9aff3624462fb2a506c9cc9
].join('|')})"
end

let(:params) { { foo: 'b a r', zoo: 'b a z' } }

it { is_expected.to eq response }
end

context 'not include space' do
let(:signature) do
"(#{%w[
94f5de6a367674872b5f63a0bc0328eaefedbce31d80f6005dd5f0daa5e6e7d0
05bbc8854a20b3df25a0766ad1e06c0f1051065978b7a44d7e16a6f5259e6fee
].join('|')})"
end

let(:params) { { foo: 'bar', zoo: 'baz' } }

it { is_expected.to eq response }
end
end
Expand Down
4 changes: 2 additions & 2 deletions spec/spec_helper.rb
Expand Up @@ -31,11 +31,11 @@
ENV['TZ'] = 'UTC'
end

config.before(:each) do
config.before do
Timecop.freeze(Time.utc(2015))
end

config.after(:each) do
config.after do
Timecop.return
end
end

0 comments on commit c20b8e8

Please sign in to comment.