peat 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e5fa245529382701a1bfd48b654da15cd8f3cd21
4
- data.tar.gz: 6493470249ed7d19be5c0168bfded39baec7eca1
3
+ metadata.gz: 41c65100d648379520dc5052704759855a56fa65
4
+ data.tar.gz: 85cb807ffd5ec5e054e11e21337b364b34923df1
5
5
  SHA512:
6
- metadata.gz: 2720755ef61407418d8503d9943987afbc3998cd21951a78e3d418e598b40f09f45dd4c399a45a0722953a021a41bd56c10f52b637bc2558a9ce14b5f894ada0
7
- data.tar.gz: 6af89e948d1167dbf4fbb4f04ab19e66e4860823075795219dbb37a67f1320f4ed31113b13e860da788ba97e0d20b7b2e6ccbcd9cd7862c2a4f13cce20fab91d
6
+ metadata.gz: aa237a24c04a8d10f5d63afe3ab9c2d72db5f3d861b5478b8e4aa6e6e474a8d12b681daa580ff789273ee2ac70a13ae27e46fac15630f3bf1ca75fe60fd16bbf
7
+ data.tar.gz: 25fdde4566320c272e6f60d2cd67ebb82c01718376f853a7ef6284f54c9a318cc0ec3cafe429aa604a72e4701f8a5da141735586be5e716d79b2f02a78a8d9cb
@@ -2,21 +2,25 @@ module Peat
2
2
  module TokenManager
3
3
  module_function
4
4
 
5
- def token
5
+ def token(fuel_client_id: nil, fuel_secret: nil)
6
6
  fetch_token do
7
+ client_id = fuel_client_id || ENV['FUEL_CLIENT_ID'] || $fuel_client_id
8
+ secret = fuel_secret || ENV['FUEL_SECRET'] || $fuel_secret
9
+ raise MissingConfiguration, 'You must set values for fuel client id and secret' unless client_id && secret
10
+
7
11
  connection.post do |req|
8
12
  req.url 'requestToken'
9
13
  req.headers['Content-Type'] = 'application/json'
10
14
  req.body = {
11
- 'clientId' => ENV['FUEL_CLIENT_ID'] || $fuel_client_id,
12
- 'clientSecret' => ENV['FUEL_SECRET'] || $fuel_secret,
15
+ 'clientId' => client_id,
16
+ 'clientSecret' => secret,
13
17
  }.to_json
14
18
  end.body.merge('created_at' => Time.now)
15
19
  end
16
20
  end
17
21
 
18
22
  def connection
19
- @connection = Faraday.new(url: 'https://auth.exacttargetapis.com/v1/') do |conn|
23
+ @connection ||= Faraday.new(url: 'https://auth.exacttargetapis.com/v1/') do |conn|
20
24
  conn.request :json
21
25
 
22
26
  conn.response :logger
data/lib/peat/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Peat
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/peat.rb CHANGED
@@ -2,6 +2,8 @@ require "peat/version"
2
2
  require 'faraday_middleware'
3
3
 
4
4
  module Peat
5
+ class MissingConfiguration < Exception; end
6
+
5
7
  autoload :TokenManager, 'peat/token_manager'
6
8
  autoload :Client, 'peat/client'
7
9
  end
@@ -4,27 +4,86 @@ require 'active_support/core_ext'
4
4
 
5
5
  module Peat
6
6
  describe TokenManager do
7
+ before do
8
+ test = Faraday.new(url: 'https://auth.exacttargetapis.com/v1/') do |builder|
9
+ builder.adapter :test do |stub|
10
+ stub.post('v1/requestToken') { |env|
11
+ [ 200, {}, {'accessToken' => 'foobar123' }]
12
+ }
13
+ end
14
+ end
15
+ allow(TokenManager).to receive(:connection).and_return(test)
16
+ end
17
+
18
+ after do
19
+ TokenManager.instance_variable_set('@token', nil)
20
+ end
21
+
22
+ context 'configuring fuel client id and secret' do
23
+ context 'no creds set' do
24
+ it 'raises MissingConfiguration if no fuel credentials set' do
25
+ expect { Peat::TokenManager.token }.to raise_error(MissingConfiguration, 'You must set values for fuel client id and secret')
26
+ end
27
+ end
28
+
29
+ context 'client and secret passed in' do
30
+ it 'uses passed in client and secret' do
31
+ expect { Peat::TokenManager.token(fuel_client_id: 'foo', fuel_secret: 'bar') }.not_to raise_error
32
+ end
33
+ end
34
+
35
+ context 'client and secret set in env' do
36
+ around(:each) do |example|
37
+ ENV['FUEL_CLIENT_ID'] = 'foo'
38
+ ENV['FUEL_SECRET'] = 'bar'
39
+ example.run
40
+ ENV['FUEL_CLIENT_ID'] = nil
41
+ ENV['FUEL_SECRET'] = nil
42
+ end
43
+
44
+ it 'uses FUEL_CLIENT_ID and FUEL_SECRET from env if not passed in values' do
45
+ expect { Peat::TokenManager.token }.not_to raise_error
46
+ end
47
+ end
48
+
49
+ context 'client and secret set globally' do
50
+ around(:each) do |example|
51
+ $fuel_client_id, $fuel_secret = %w(foo bar)
52
+ example.run
53
+ $fuel_client_id, $fuel_secret = %w(nil nil)
54
+ end
55
+
56
+ it 'uses global $fuel_client_id and $fuel_secret if no values passed in or set in env' do
57
+ expect { Peat::TokenManager.token }.not_to raise_error
58
+ end
59
+ end
60
+ end
61
+
7
62
  context 'token is nil' do
8
63
  it 'fetches token' do
9
- expect(TokenManager).to receive(:fetch_token)
10
- TokenManager.token
64
+ expect(TokenManager.token).to eq('foobar123')
11
65
  end
12
66
  end
13
67
 
14
68
  context 'token is expired' do
69
+ before do
70
+ TokenManager.instance_variable_set('@token', { 'accessToken' => 'expired', 'created_at' => 1.hour.ago })
71
+ end
72
+
15
73
  it 'fetches token' do
16
- TokenManager.instance_variable_set('@token', { 'created_at' => 1.hour.ago })
17
- expect(TokenManager).to receive(:fetch_token)
18
- TokenManager.token
74
+ expect(TokenManager.token).to eq('foobar123')
19
75
  end
20
76
  end
21
77
 
22
78
  context 'token is present and not expired' do
23
- it 'returns token' do
24
- token = { 'accessToken' => 'foobar123', 'created_at' => 1.day.from_now }
25
- TokenManager.instance_variable_set('@token', token)
26
- expect(TokenManager.token).to eql('foobar123')
27
- end
79
+ before
80
+ token = { 'accessToken' => 'valid', 'created_at' => 1.day.from_now }
81
+ TokenManager.instance_variable_set('@token', token)
82
+ end
83
+
84
+ it 'returns token' do
85
+ expect(TokenManager.token).to eql('valid')
28
86
  end
29
87
  end
88
+
30
89
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hubert Huang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-07 00:00:00.000000000 Z
11
+ date: 2015-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday