Skip to content

[JR-AVL-987] Adicionado opção de token como autenticação #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Jul 15, 2024
Merged
13 changes: 10 additions & 3 deletions lib/convert_api/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,10 @@ def http(options = {})
end

def request_uri(path, params = {})
raise(SecretError, 'API secret not configured') if config.api_secret.nil?
raise(AuthenticationError, 'API secret or Token not configured') if authentication.nil?

params_with_secret = params.merge(Secret: config.api_secret)
query = URI.encode_www_form(params_with_secret)
params_with_authentication = params.merge(authentication)
query = URI.encode_www_form(params_with_authentication)

base_uri.path + path + '?' + query
end
Expand All @@ -123,6 +123,13 @@ def build_form_data(params)
data
end

def authentication
return { Token: config.token } unless config.token.nil?
return { Secret: config.api_secret } unless config.api_secret.nil?

nil
end

def base_uri
config.base_uri
end
Expand Down
1 change: 1 addition & 0 deletions lib/convert_api/configuration.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
module ConvertApi
class Configuration
attr_accessor :api_secret
attr_accessor :token
attr_accessor :base_uri
attr_accessor :connect_timeout
attr_accessor :read_timeout
Expand Down
2 changes: 1 addition & 1 deletion lib/convert_api/errors.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module ConvertApi
class Error < StandardError; end
class SecretError < Error; end
class AuthenticationError < Error; end
class FileNameError < Error; end
class TimeoutError < Error; end
class ConnectionFailed < Error; end
Expand Down
26 changes: 17 additions & 9 deletions spec/convert_api_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,18 @@

describe '.configure' do
let(:api_secret) { 'test_secret' }
let(:token) { 'test_token' }
let(:conversion_timeout) { 20 }

it 'configures' do
described_class.configure do |config|
config.api_secret = api_secret
config.token = token
config.conversion_timeout = conversion_timeout
end

expect(described_class.config.api_secret).to eq(api_secret)
expect(described_class.config.token).to eq(token)
expect(described_class.config.conversion_timeout).to eq(conversion_timeout)
end
end
Expand Down Expand Up @@ -89,19 +92,24 @@
it_behaves_like 'successful conversion'
end

context 'when secret is not set' do
before { ConvertApi.config.api_secret = nil }
context 'when has error' do
it 'raises error without secret or token' do
described_class.config.api_secret = nil
described_class.config.token = nil

it 'raises error' do
expect { subject }.to raise_error(ConvertApi::SecretError, /not configured/)
expect { subject }.to raise_error(ConvertApi::AuthenticationError, /not configured/)
end
end

context 'with invalid secret' do
before { ConvertApi.config.api_secret = 'invalid' }
it 'with invalid secret' do
described_class.config.api_secret = 'invalid'

it 'raises error' do
expect { subject }.to raise_error(ConvertApi::ClientError, /bad secret/)
expect { subject }.to raise_error(ConvertApi::ClientError)
end

it 'with invalid token' do
described_class.config.token = 'invalid'

expect { subject }.to raise_error(ConvertApi::ClientError)
end
end

Expand Down