spec/rack_spec.rb in ey-hmac-2.3.0 vs spec/rack_spec.rb in ey-hmac-2.3.1
- old
+ new
@@ -1,146 +1,151 @@
+# frozen_string_literal: true
+
require 'spec_helper'
require 'securerandom'
-describe "rack" do
+describe 'rack' do
before(:all) { Bundler.require(:rack) }
let!(:key_id) { SecureRandom.hex(8) }
let!(:key_secret) { SecureRandom.hex(16) }
- describe "adapter" do
- let(:adapter) { Ey::Hmac::Adapter::Rack }
+ describe 'adapter' do
+ let(:adapter) { Ey::Hmac::Adapter::Rack }
- it "should sign and read request" do
+ it 'signs and read request' do
request = Rack::Request.new(
- "rack.input" => StringIO.new("{1: 2}"),
- "HTTP_CONTENT_TYPE" => "application/json",
+ 'rack.input' => StringIO.new('{1: 2}'),
+ 'HTTP_CONTENT_TYPE' => 'application/json'
)
Ey::Hmac.sign!(request, key_id, key_secret, adapter: adapter)
- expect(request.env['HTTP_AUTHORIZATION']).to start_with("EyHmac")
+ expect(request.env['HTTP_AUTHORIZATION']).to start_with('EyHmac')
expect(request.env['HTTP_CONTENT_DIGEST']).to eq(Digest::MD5.hexdigest(request.body.tap(&:rewind).read))
expect(Time.parse(request.env['HTTP_DATE'])).not_to be_nil
yielded = false
- expect(Ey::Hmac.authenticated?(request, adapter: adapter) do |key_id|
+ expect(Ey::Hmac).to be_authenticated(request, adapter: adapter) do |key_id|
expect(key_id).to eq(key_id)
yielded = true
key_secret
- end).to be_truthy
+ end
expect(yielded).to be_truthy
end
- it "should not set Content-Digest if body is nil" do
+ it 'does not set Content-Digest if body is nil' do
request = Rack::Request.new(
- "HTTP_CONTENT_TYPE" => "application/json",
+ 'HTTP_CONTENT_TYPE' => 'application/json'
)
Ey::Hmac.sign!(request, key_id, key_secret, adapter: adapter)
- expect(request.env['HTTP_AUTHORIZATION']).to start_with("EyHmac")
+ expect(request.env['HTTP_AUTHORIZATION']).to start_with('EyHmac')
expect(request.env).not_to have_key('HTTP_CONTENT_DIGEST')
expect(Time.parse(request.env['HTTP_DATE'])).not_to be_nil
yielded = false
- expect(Ey::Hmac.authenticated?(request, adapter: adapter) do |key_id|
+ expect(Ey::Hmac).to be_authenticated(request, adapter: adapter) do |key_id|
expect(key_id).to eq(key_id)
yielded = true
key_secret
- end).to be_truthy
+ end
expect(yielded).to be_truthy
end
- it "should not set Content-Digest if body is empty" do
+ it 'does not set Content-Digest if body is empty' do
request = Rack::Request.new(
- "rack.input" => StringIO.new(""),
- "HTTP_CONTENT_TYPE" => "application/json",
+ 'rack.input' => StringIO.new(''),
+ 'HTTP_CONTENT_TYPE' => 'application/json'
)
Ey::Hmac.sign!(request, key_id, key_secret, adapter: adapter)
- expect(request.env['HTTP_AUTHORIZATION']).to start_with("EyHmac")
+ expect(request.env['HTTP_AUTHORIZATION']).to start_with('EyHmac')
expect(request.env).not_to have_key('HTTP_CONTENT_DIGEST')
expect(Time.parse(request.env['HTTP_DATE'])).not_to be_nil
yielded = false
- expect(Ey::Hmac.authenticated?(request, adapter: adapter) do |key_id|
+ expect(Ey::Hmac).to be_authenticated(request, adapter: adapter) do |key_id|
expect(key_id).to eq(key_id)
yielded = true
key_secret
- end).to be_truthy
+ end
expect(yielded).to be_truthy
end
- context "with a request" do
- let(:request) {
+ context 'with a request' do
+ let(:request) do
Rack::Request.new(
- "rack.input" => StringIO.new("{1: 2}"),
- "HTTP_CONTENT_TYPE" => "application/json",
+ 'rack.input' => StringIO.new('{1: 2}'),
+ 'HTTP_CONTENT_TYPE' => 'application/json'
)
- }
+ end
- include_examples "authentication"
+ include_examples 'authentication'
end
end
- describe "middleware" do
- it "should accept a SHA1 signature" do
+ describe 'middleware' do
+ it 'accepts a SHA1 signature' do
app = lambda do |env|
- authenticated = Ey::Hmac.authenticated?(env, accept_digests: [:sha1, :sha256], adapter: Ey::Hmac::Adapter::Rack) do |auth_id|
+ authenticated = Ey::Hmac.authenticated?(env, accept_digests: %i[sha1 sha256],
+ adapter: Ey::Hmac::Adapter::Rack) do |auth_id|
(auth_id == key_id) && key_secret
end
- [(authenticated ? 200 : 401), {"Content-Type" => "text/plain"}, []]
+ [(authenticated ? 200 : 401), { 'Content-Type' => 'text/plain' }, []]
end
- _key_id, _key_secret = key_id, key_secret
+ outer_key_id = key_id
+ outer_key_secret = key_secret
client = Rack::Client.new do
- use Ey::Hmac::Rack, _key_id, _key_secret, sign_with: :sha1
+ use Ey::Hmac::Rack, outer_key_id, outer_key_secret, sign_with: :sha1
run app
end
- expect(client.get("/resource").status).to eq(200)
+ expect(client.get('/resource').status).to eq(200)
end
- it "should accept a SHA256 signature" do # default
+ it 'accepts a SHA256 signature' do # default
app = lambda do |env|
authenticated = Ey::Hmac.authenticated?(env, adapter: Ey::Hmac::Adapter::Rack) do |auth_id|
(auth_id == key_id) && key_secret
end
- [(authenticated ? 200 : 401), {"Content-Type" => "text/plain"}, []]
+ [(authenticated ? 200 : 401), { 'Content-Type' => 'text/plain' }, []]
end
- _key_id, _key_secret = key_id, key_secret
+ outer_key_id = key_id
+ outer_key_secret = key_secret
client = Rack::Client.new do
- use Ey::Hmac::Rack, _key_id, _key_secret
+ use Ey::Hmac::Rack, outer_key_id, outer_key_secret
run app
end
- expect(client.get("/resource").status).to eq(200)
+ expect(client.get('/resource').status).to eq(200)
end
- it "should accept multiple digest signatures" do # default
+ it 'accepts multiple digest signatures' do # default
require 'ey-hmac/faraday'
Bundler.require(:rack)
app = lambda do |env|
authenticated = Ey::Hmac.authenticated?(env, adapter: Ey::Hmac::Adapter::Rack) do |auth_id|
(auth_id == key_id) && key_secret
end
- [(authenticated ? 200 : 401), {"Content-Type" => "text/plain"}, []]
+ [(authenticated ? 200 : 401), { 'Content-Type' => 'text/plain' }, []]
end
connection = Faraday.new do |c|
- c.use :hmac, key_id, key_secret, digest: [:sha1, :sha256]
+ c.use :hmac, key_id, key_secret, digest: %i[sha1 sha256]
c.adapter(:rack, app)
end
- expect(connection.get("/resources").status).to eq(200)
+ expect(connection.get('/resources').status).to eq(200)
end
end
end