forge_auth 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 88d16a943201e69c2c87ea2a8e59377b921dae4b
4
- data.tar.gz: be2d1fcb4f125aad32a0ff8f06edef8c863b90e0
3
+ metadata.gz: 1494abffde1497552453b684f4196918bf29aff5
4
+ data.tar.gz: 75644aa28ace3793b135c7f32595df71b718d35c
5
5
  SHA512:
6
- metadata.gz: 89724bc355054877c56e630b5811a04e20c456a622ddfae2321f80415904497f91ed186e542df602e25ecdaed10fa1d527d3f315c5c77c67b63d677ca2dc9f39
7
- data.tar.gz: e7ea4385940f3c9d13422369ed2838b289390a55e68beff05b9f369a7d599aedfa844c2b98172969055886842c0eaddd2cb7cecd984fe7d4b0492308f204727b
6
+ metadata.gz: 5ddb3fff97198c4c39ae089b97abe28e28c3334cc0c10e27072d66bb08117c6a5c24bb017090bf8841a796da60d26b94115dc25fd976ff1383bab573b678fe16
7
+ data.tar.gz: 384dbeeeb2262153c08d45cfb144029d85cf7f1c6436ee100cc9c409672522201a69a59731737ded0be0bde0cba40530d8fb021ac13aa5925651f54ee6bac335
@@ -0,0 +1,37 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://developer-dev.api.autodesk.com/authentication/v1/authenticate
6
+ body:
7
+ encoding: UTF-8
8
+ string: client_id=Marcos_mom&client_secret=<CLIENT_SECRET>&grant_type=client_credentials
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Content-Type:
13
+ - application/x-www-form-urlencoded
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 403
21
+ message: Unauthorized
22
+ headers:
23
+ Content-Type:
24
+ - application/json
25
+ Date:
26
+ - Wed, 20 Dec 2017 10:10:26 GMT
27
+ Content-Length:
28
+ - '212'
29
+ Connection:
30
+ - keep-alive
31
+ body:
32
+ encoding: UTF-8
33
+ string: '{ "developerMessage":"The client_id specified does not have access
34
+ to the api product","userMessage":"","errorCode":"AUTH-001","more info":"http://developer-dev.api.autodesk.com/documentation/v1/errors/AUTH-001"}'
35
+ http_version:
36
+ recorded_at: Wed, 20 Dec 2017 10:10:20 GMT
37
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,37 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://developer-dev.api.autodesk.com/authentication/v1/authenticate
6
+ body:
7
+ encoding: UTF-8
8
+ string: client_id=<CLIENT_ID>&client_secret=Marcos_mom&grant_type=client_credentials
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Content-Type:
13
+ - application/x-www-form-urlencoded
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 401
21
+ message: Unauthorized
22
+ headers:
23
+ Content-Type:
24
+ - application/json
25
+ Date:
26
+ - Wed, 20 Dec 2017 10:10:26 GMT
27
+ Content-Length:
28
+ - '207'
29
+ Connection:
30
+ - keep-alive
31
+ body:
32
+ encoding: UTF-8
33
+ string: '{"developerMessage":"The client_id (application key)/client_secret
34
+ are not valid","userMessage":"","errorCode":"AUTH-003","more info":"http://developer-dev.api.autodesk.com/documentation/v1/errors/AUTH-003"}'
35
+ http_version:
36
+ recorded_at: Wed, 20 Dec 2017 10:10:21 GMT
37
+ recorded_with: VCR 3.0.3
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "forge_auth"
6
- s.version = "0.0.2"
6
+ s.version = "0.0.3"
7
7
  s.authors = ["Nir Levi"]
8
8
  s.email = ["nir.levi@autodesk.com"]
9
9
  s.homepage = "https://git.autodesk.com/BIM360/forge_auth"
@@ -1,2 +1,3 @@
1
1
  require 'forge_auth/tokenizer'
2
- require 'forge_auth/token'
2
+ require 'forge_auth/token'
3
+ require 'forge_auth/invalid_credentials_error'
@@ -0,0 +1,4 @@
1
+ module ForgeAuth
2
+ class InvalidCredentialsError < RuntimeError
3
+ end
4
+ end
@@ -3,7 +3,7 @@ require "faraday/detailed_logger"
3
3
  require "faraday_middleware"
4
4
 
5
5
  module ForgeAuth
6
- class Tokenizer
6
+ class Tokenizer
7
7
  def initialize(auth_host:, auth_path:, client_id:, client_secret:, grant_type: "client_credentials", cache: nil, scope: nil, logger: nil)
8
8
  @auth_host = auth_host
9
9
  @auth_path = auth_path
@@ -68,9 +68,16 @@ module ForgeAuth
68
68
  end
69
69
 
70
70
  def get_token_from_remote
71
- raw_token_data = connection.post(@auth_path, @params).body
72
- raw_token_data = Hash[raw_token_data.map { |(k, v)| [k.to_sym, v] }]
73
- ForgeAuth::Token.new(**raw_token_data)
71
+ response = connection.post(@auth_path, @params)
72
+ if response.status == 200
73
+ raw_token_data = response.body
74
+ raw_token_data = Hash[raw_token_data.map { |(k, v)| [k.to_sym, v] }]
75
+ ForgeAuth::Token.new(**raw_token_data)
76
+ elsif [401, 403].include?(response.status)
77
+ err_msg = "Invalid credentials! \n#{response.body}"
78
+ @logger.info "[Tokenizer] - #{err_msg}" if @logger
79
+ raise ForgeAuth::InvalidCredentialsError, err_msg
80
+ end
74
81
  end
75
82
  end
76
83
  end
@@ -73,6 +73,21 @@ describe ForgeAuth::Tokenizer do
73
73
  it_behaves_like "fetches a token with cache"
74
74
  end
75
75
  end
76
+ context "with wrong credentials" do
77
+ shared_examples "raises error" do
78
+ it "raises InvalidCredentialsError" do
79
+ expect { tokenizer.get_token }.to raise_error ForgeAuth::InvalidCredentialsError, /Invalid credentials/
80
+ end
81
+ end
82
+ context "with invalid client id", vcr: { cassette_name: "tokenizer/invalid_client_id" } do
83
+ let(:tokenizer) { ForgeAuth::Tokenizer.new base_params.merge(client_id: "Marcos_mom") }
84
+ it_behaves_like "raises error"
85
+ end
86
+ context "with invalid client secret", vcr: { cassette_name: "tokenizer/invalid_client_secret" } do
87
+ let(:tokenizer) { ForgeAuth::Tokenizer.new base_params.merge(client_secret: "Marcos_mom") }
88
+ it_behaves_like "raises error"
89
+ end
90
+ end
76
91
  context "when error is raised" do
77
92
  let(:logger) { double("Logger") }
78
93
  let(:tokenizer) { ForgeAuth::Tokenizer.new base_params.merge(logger: logger) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forge_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nir Levi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-19 00:00:00.000000000 Z
11
+ date: 2017-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -135,8 +135,11 @@ files:
135
135
  - fixtures/vcr_cassettes/tokenizer/cached_current_without_scope.yml
136
136
  - fixtures/vcr_cassettes/tokenizer/current_with_scope.yml
137
137
  - fixtures/vcr_cassettes/tokenizer/current_without_scope.yml
138
+ - fixtures/vcr_cassettes/tokenizer/invalid_client_id.yml
139
+ - fixtures/vcr_cassettes/tokenizer/invalid_client_secret.yml
138
140
  - forge_auth.gemspec
139
141
  - lib/forge_auth.rb
142
+ - lib/forge_auth/invalid_credentials_error.rb
140
143
  - lib/forge_auth/token.rb
141
144
  - lib/forge_auth/tokenizer.rb
142
145
  - spec/spec_helper.rb