live_paper 0.0.16 → 0.0.20

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: 08f7b71dda58a9c4818afd3d35ce049498826b34
4
- data.tar.gz: 0c84394e22237d9f7a6133ae0c9aa2b8ae808038
3
+ metadata.gz: 9b78bada6a9a8ab8ff6c8cb229635947544c4e7f
4
+ data.tar.gz: b350744d43232723db63f9770f449a3c4104aede
5
5
  SHA512:
6
- metadata.gz: d7b7cedb9406f264f7cb4166e121ec0c921c0a6efe45ef519dab0ee22158daa2a8925773485462650a71aba61c72417dc00cb472d232e9280ede847afb5ed78c
7
- data.tar.gz: 0755f093df5f9cbbeff91ca58a285edb4099c25b0d8f10fc912ff629bab5aff3b06a2fc73aae1e039592ad606d96107fc4699f2e3b5126acbc86a2c3cd768223
6
+ metadata.gz: 7fa9418f1a5ecc2d26c6473fac545f0fc792aab1d95bb737fc4299b2c3bd2873d6ba6278203e574fc25474a3f971e03dd1423cfabdaca5989ed0d81306c3f7a0
7
+ data.tar.gz: 63b41015e36b75060691730b83596848f3adf6b83d333dc523cae7a064624ec6de02a3270923a4c2829f0b431289bb9af969af3c13f5f0fe519b0c7683ee0418
data/README.md CHANGED
@@ -145,7 +145,7 @@ You can list existing resources with the list operation.
145
145
 
146
146
  ## Contributing
147
147
 
148
- 1. Fork it ( https://github.com/IPGPTP/live_paper/fork )
148
+ 1. Fork it ( https://github.com/IPGPTP/live_paper_rubygem/fork )
149
149
  2. Create your feature branch (`git checkout -b my-new-feature`)
150
150
  3. Commit your changes (`git commit -am 'Add some feature'`)
151
151
  4. Push to the branch (`git push origin my-new-feature`)
@@ -1,9 +1,14 @@
1
- require_relative 'http_client'
2
1
  require 'json'
3
2
 
3
+ class NotAuthenticatedError < Exception
4
+ end
5
+
4
6
  module LivePaper
5
7
  class BaseObject
6
- extend HttpClient
8
+
9
+ LP_API_HOST="https://www.livepaperapi.com"
10
+ AUTH_URL = "#{LP_API_HOST}/auth/token"
11
+
7
12
  attr_accessor :id, :name, :date_created, :date_modified, :link
8
13
 
9
14
  def assign_attributes(data)
@@ -23,71 +28,66 @@ module LivePaper
23
28
 
24
29
  def save
25
30
  validate_attributes!
26
- BaseObject.request_handling_auth(self.class.api_url, 'POST') do |request|
27
- response = BaseObject.send_request(request, content_type: 'application/json', body: create_body.to_json)
31
+ unless present? @id
32
+ response = BaseObject.rest_request( self.class.api_url, :post, body: create_body.to_json )
28
33
  parse(response.body)
29
- end unless present? @id
34
+ end
30
35
  self
31
36
  end
32
37
 
33
38
  def self.get(id)
34
- request_handling_auth("#{api_url}/#{id}", 'GET') do |request|
35
- response = send_request(request, content_type: 'application/json')
36
- parse response.body
37
- end rescue nil
39
+ response = rest_request( "#{api_url}/#{id}", :get )
40
+ case response.code
41
+ when 200
42
+ parse response.body
43
+ else #when 404
44
+ nil
45
+ end
38
46
  end
39
47
 
40
48
  def self.list
41
49
  objects=[]
42
- request_handling_auth("#{api_url}", 'GET') do |request|
43
- response = send_request(request, content_type: 'application/json')
44
- JSON.parse(response.body, symbolize_names: true)[list_key].each do |linkdata|
45
- objects << self.parse({item_key => linkdata}.to_json)
46
- end
47
- end #rescue nil
50
+ # $lpp_access_token = 'force retry'
51
+
52
+ response = rest_request( api_url, :get )
53
+ JSON.parse(response.body, symbolize_names: true)[list_key].each do |linkdata|
54
+ objects << self.parse({item_key => linkdata}.to_json)
55
+ end
48
56
  objects
49
57
  end
50
58
 
51
59
  def update
52
60
  response_code = 'Object Invalid'
53
61
  if self.id
54
- BaseObject.request_handling_auth("#{self.class.api_url}/#{id}", 'PUT') do |request|
55
- response = BaseObject.send_request(request,
56
- content_type: 'application/json',
57
- body: update_body.to_json,
58
- allow_codes: [200, 400, 404, 409])
59
- response_code = case response.code.to_i
60
- when 200
61
- parse(response.body)
62
- 'OK'
63
- when 400
64
- @errors=response.body
65
- 'Bad Request'
66
- when 409
67
- @errors=response.body
68
- 'Conflict'
69
- else
70
- 'Object Invalid'
71
- end
62
+ response = BaseObject.rest_request( "#{self.class.api_url}/#{id}", :put, body: update_body.to_json )
63
+ response_code = case response.code
64
+ when 200
65
+ parse(response.body)
66
+ '200 OK'
67
+ when 400
68
+ @errors=response.body
69
+ 'Bad Request'
70
+ when 409
71
+ @errors=response.body
72
+ 'Conflict'
73
+ else
74
+ 'Object Invalid'
72
75
  end
73
76
  end
74
77
  response_code
75
78
  end
76
79
 
77
80
  def delete
78
- response_code = nil
79
81
  if self.id
80
- BaseObject.request_handling_auth("#{self.class.api_url}/#{id}", 'DELETE') do |request|
81
- response = BaseObject.send_request(request, content_type: 'application/json', allow_codes: [200, 204, 409])
82
- response_code = case response.code.to_i
83
- when 200
84
- 'OK'
85
- when 204
86
- 'OK'
87
- when 409
88
- @errors=response.body
89
- 'Conflict'
90
- end
82
+ response = BaseObject.rest_request( "#{self.class.api_url}/#{id}", :delete )
83
+ response_code = case response.code
84
+ when 200
85
+ '200 OK'
86
+ when 409
87
+ @errors=response.body
88
+ 'Conflict'
89
+ else
90
+ 'unknown'
91
91
  end
92
92
  else
93
93
  response_code = "Object Invalid"
@@ -95,6 +95,54 @@ module LivePaper
95
95
  response_code
96
96
  end
97
97
 
98
+ def self.rest_request(url, method, options={})
99
+ tries = 0
100
+ verb = (method||"get").downcase.to_sym
101
+ raise "Method '#{verb}' not supported." unless [:get, :post, :put, :delete].include?(verb)
102
+
103
+ request_access_token unless $lpp_access_token
104
+ headers = {}
105
+ headers[:authorization] = "Bearer #{$lpp_access_token}"
106
+ headers[:accept] = options[:accept] || "application/json"
107
+ headers[:x_user_info] = 'app=rubygem' unless options[:skip] == :user_info #watermark download fails if set
108
+ headers[:content_type] = 'application/json' unless options[:body].nil?
109
+
110
+ h = {:method => verb, :url => url.to_s, :headers => headers}
111
+ h.merge!({:payload => options[:body]}) unless options[:body].nil?
112
+
113
+ begin
114
+ response = RestClient::Request.execute(h) { |response, request, result| response }
115
+ raise NotAuthenticatedError if response.code == 401
116
+ rescue NotAuthenticatedError => e
117
+ tries += 1
118
+ if tries < 3
119
+ request_access_token
120
+ headers[:authorization] = "Bearer #{$lpp_access_token}"
121
+ retry
122
+ else
123
+ raise e
124
+ end
125
+ end
126
+ response
127
+ end
128
+
129
+ def self.request_access_token
130
+ h = { method: :post,
131
+ url: AUTH_URL,
132
+ headers: { authorization: "Basic #{$lpp_basic_auth}",
133
+ content_type: 'application/x-www-form-urlencoded',
134
+ accept: 'application/json' },
135
+ payload: 'grant_type=client_credentials&scope=all'
136
+ }
137
+
138
+ response = RestClient::Request.execute(h) { |response, request, result| response }
139
+
140
+ parsed = JSON.parse(response.body)
141
+ @access_token = parsed['accessToken']
142
+ $lpp_access_token = @access_token
143
+ end
144
+
145
+
98
146
  def errors
99
147
  begin
100
148
  JSON.parse(@errors)
@@ -3,7 +3,6 @@ require 'rest-client'
3
3
 
4
4
  module LivePaper
5
5
  class Image
6
- extend HttpClient
7
6
 
8
7
  attr_accessor :url
9
8
 
@@ -16,14 +15,15 @@ module LivePaper
16
15
  end
17
16
  begin
18
17
  src_image = RestClient.get(img, Accept: 'image/jpg')
19
- request_access_token unless @access_token
18
+ BaseObject.request_access_token unless $lpp_access_token
20
19
  response = RestClient.post API_URL,
21
20
  src_image.body,
22
- Authorization: "Bearer #{@access_token}",
21
+ authorization: "Bearer #{$lpp_access_token}",
23
22
  content_type: 'image/jpg'
24
23
  response.headers[:location]
25
24
  rescue Exception => e
26
25
  puts "Exception! ******\n#{e}"
26
+ puts e.response
27
27
  img
28
28
  end
29
29
  end
@@ -5,7 +5,6 @@ module LivePaper
5
5
  attr_accessor :payoff_id, :trigger_id
6
6
 
7
7
  def parse(jsondata)
8
- puts "parsing data and it is #{jsondata}"
9
8
  data = JSON.parse(jsondata, symbolize_names: true)[self.class.item_key]
10
9
  assign_attributes data
11
10
  self
@@ -14,11 +14,8 @@ module LivePaper
14
14
  end
15
15
 
16
16
  def download_qrcode
17
- QrTrigger.request_handling_auth(self.qrcode_url, 'GET') do |request|
18
- request['Accept'] = "image/jpg"
19
- response = QrTrigger.send_request(request)
20
- response.body.empty? ? nil : response.body
21
- end
17
+ response = QrTrigger.rest_request( self.qrcode_url, :get, accept: "image/jpg" )
18
+ response.body.empty? ? nil : response.body
22
19
  end
23
20
 
24
21
  private
@@ -1,3 +1,3 @@
1
1
  module LivePaper
2
- VERSION = "0.0.16"
2
+ VERSION = "0.0.20"
3
3
  end
@@ -15,11 +15,11 @@ module LivePaper
15
15
  end
16
16
 
17
17
  def download_watermark
18
- WmTrigger.request_handling_auth(self.wm_url, 'GET') do |request|
19
- request['Accept'] = "image/jpg"
20
- response = WmTrigger.send_request(request)
21
- response.body.empty? ? nil : response.body
22
- end
18
+ response = WmTrigger.rest_request( self.wm_url, :get, accept: "image/jpg", skip: :x_user_info )
19
+ response.body.empty? ? nil : response.body
20
+ rescue Exception => e
21
+ puts 'Exception!\n'
22
+ puts e.response
23
23
  end
24
24
 
25
25
  private
data/lib/live_paper.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require "live_paper/base_object"
2
- require "live_paper/http_client"
3
2
  require "live_paper/image"
4
3
  require "live_paper/link"
5
4
  require "live_paper/payoff"
@@ -159,7 +159,7 @@ describe LivePaper::BaseObject do
159
159
  id: obj_id,
160
160
  date_created: 'date_created',
161
161
  date_modified: 'date_modified'} }
162
- let(:resp_body) { }
162
+ let(:resp_body) {}
163
163
 
164
164
  before do
165
165
  stub_unimplemented_methods
@@ -167,21 +167,21 @@ describe LivePaper::BaseObject do
167
167
  end
168
168
 
169
169
  context 'with valid data' do
170
- let(:resp_body) { { object: {name: new_name,
171
- id: obj_id,
172
- date_created: 'date_created',
173
- date_modified: 'new_date_modified'}} }
170
+ let(:resp_body) { {object: {name: new_name,
171
+ id: obj_id,
172
+ date_created: 'date_created',
173
+ date_modified: 'new_date_modified'}} }
174
174
  let(:new_name) { 'my_valid_name_change' }
175
- before do
176
- @response = resp_body
177
- stub_request(:put, "#{@api_url}/#{obj_id}").to_return(:body => @response, :status => 200)
175
+ before do
176
+ @response = resp_body
177
+ stub_request(:put, "#{@api_url}/#{obj_id}").to_return(:body => resp_body.to_json, :status => 200)
178
178
  @obj=LivePaper::BaseObject.new data1
179
179
  @obj.name = new_name
180
180
  end
181
181
  it 'should return success' do
182
182
  ret_val = @obj.update
183
183
  assert_requested :put, "#{@api_url}/#{obj_id}"
184
- expect(ret_val).to eq 'OK'
184
+ expect(ret_val).to eq '200 OK'
185
185
  end
186
186
  xit 'should reflect the updated object' do
187
187
  allow(@response).to receive(:body).and_return(@response[:object])
@@ -266,7 +266,7 @@ describe LivePaper::BaseObject do
266
266
  it 'should DELETE when there is an ID' do
267
267
  result=@obj.delete
268
268
  assert_requested :delete, "#{@api_url}/#{@obj.id}"
269
- expect(result).to eq 'OK'
269
+ expect(result).to eq '200 OK'
270
270
  end
271
271
  end
272
272
 
@@ -383,4 +383,57 @@ describe LivePaper::BaseObject do
383
383
  expect { LivePaper::BaseObject.new.send :create_body }.to raise_error
384
384
  end
385
385
  end
386
+
387
+ describe '.request_access_token' do
388
+ it 'should corerectly get the token' do
389
+ $lpp_access_token = nil
390
+ LivePaper::BaseObject.request_access_token
391
+ expect($lpp_access_token).to eq 'SECRETTOKEN'
392
+ end
393
+ end
394
+
395
+ describe 'rest_request' do
396
+ before do
397
+
398
+ end
399
+
400
+ context 'when there is no access token' do
401
+ before do
402
+ $lpp_access_token = nil
403
+ end
404
+ it 'should request the access token' do
405
+ expect(LivePaper::BaseObject).to receive(:request_access_token)
406
+ LivePaper::BaseObject.rest_request(@api_url, :post)
407
+ end
408
+ end
409
+
410
+ context 'when there is an access token' do
411
+ before do
412
+ $lpp_access_token = 'TOPSECRET'
413
+ end
414
+
415
+ it 'should NOT call request_access_token' do
416
+ expect(LivePaper::BaseObject).to receive(:request_access_token).exactly(0).times
417
+ LivePaper::BaseObject.rest_request(@api_url, :post)
418
+ end
419
+
420
+ context 'when the access token is invalid' do
421
+ before do
422
+ $lpp_access_token = 'invalid'
423
+
424
+ @response = double('A mock for a response')
425
+ allow(@response).to receive(:body)
426
+ @response.stub(:code).and_return(401, 401, 200) #fail first two calls
427
+ RestClient::Request.stub(:execute).and_return(@response)
428
+ end
429
+
430
+ it 'should request access an token' do
431
+ expect(LivePaper::BaseObject).to receive(:request_access_token).exactly(2).times
432
+ LivePaper::BaseObject.rest_request(@api_url, :put, body: @data.to_json)
433
+ end
434
+
435
+ end
436
+ end
437
+
438
+ end
386
439
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: live_paper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Whitmarsh
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-11 00:00:00.000000000 Z
12
+ date: 2014-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -95,7 +95,6 @@ files:
95
95
  - Rakefile
96
96
  - lib/live_paper.rb
97
97
  - lib/live_paper/base_object.rb
98
- - lib/live_paper/http_client.rb
99
98
  - lib/live_paper/image.rb
100
99
  - lib/live_paper/link.rb
101
100
  - lib/live_paper/payoff.rb
@@ -106,7 +105,6 @@ files:
106
105
  - lib/live_paper/wm_trigger.rb
107
106
  - live_paper.gemspec
108
107
  - spec/live_paper/base_object_spec.rb
109
- - spec/live_paper/http_client_spec.rb
110
108
  - spec/live_paper/link_spec.rb
111
109
  - spec/live_paper/payoff_spec.rb
112
110
  - spec/live_paper/trigger_spec.rb
@@ -139,7 +137,6 @@ specification_version: 4
139
137
  summary: Ruby interface to the Live Paper service by HP.
140
138
  test_files:
141
139
  - spec/live_paper/base_object_spec.rb
142
- - spec/live_paper/http_client_spec.rb
143
140
  - spec/live_paper/link_spec.rb
144
141
  - spec/live_paper/payoff_spec.rb
145
142
  - spec/live_paper/trigger_spec.rb
@@ -1,87 +0,0 @@
1
- require 'open-uri'
2
- require 'net/https'
3
-
4
- class NotAuthenticatedError < Exception
5
- end
6
-
7
- module LivePaper
8
- module HttpClient
9
- LP_API_HOST="https://www.livepaperapi.com"
10
- AUTH_URL = "#{LP_API_HOST}/auth/token"
11
-
12
- def send_request(request, options={})
13
- request['Content-type'] = options[:content_type] if options[:content_type]
14
- request.body = options[:body] if options[:body]
15
- options[:allow_codes] ||= [200,201]
16
- response = @http.request(request)
17
- check_response(response, options[:allow_codes])
18
- response
19
- end
20
-
21
- def check_response(response, allow_codes)
22
- status = response.code.to_i
23
- raise NotAuthenticatedError.new("Unauthorized") if status == 401
24
- unless allow_codes.include?(status)
25
- raise "Request failed with code #{status}"
26
- end
27
- end
28
-
29
- def request_handling_auth(url, method)
30
- tries = 0
31
- begin
32
- request_access_token unless @access_token
33
- request = http_request(url, method)
34
- request['Authorization'] = "Bearer #{@access_token}"
35
- request['X-user-info'] = 'app=rubygem'
36
- request['Accept'] = "application/json"
37
- yield request
38
- rescue NotAuthenticatedError => e
39
- tries += 1
40
- if tries < 3
41
- @access_token = nil
42
- retry
43
- else
44
- raise e
45
- end
46
- end
47
- end
48
-
49
- def request_access_token
50
- request = http_request(AUTH_URL, 'POST')
51
- request['Authorization'] = "Basic #{$lpp_basic_auth}"
52
- request['Content-Type'] = 'application/x-www-form-urlencoded'
53
- request.body = 'grant_type=client_credentials&scope=all'
54
- response = @http.request(request)
55
- parsed = JSON.parse(response.body)
56
- @access_token = parsed['accessToken']
57
- end
58
-
59
- def http_request(url, method)
60
- uri = URI.parse(url)
61
- set_http uri
62
-
63
- case method.to_s.upcase
64
- when 'POST'
65
- Net::HTTP::Post.new(uri.request_uri)
66
- when 'GET'
67
- Net::HTTP::Get.new(uri.request_uri)
68
- when 'PUT'
69
- Net::HTTP::Put.new(uri.request_uri)
70
- when 'DELETE'
71
- Net::HTTP::Delete.new(uri.request_uri)
72
- else
73
- raise "Method '#{method}' not supported."
74
- end
75
- end
76
-
77
- private
78
- def set_http(uri)
79
- http_params = [uri.host, uri.port]
80
- http_params.concat ENV['HTTP_PROXY'].gsub('http://', '').split(':') unless ENV['HTTP_PROXY'].to_s.empty?
81
-
82
- @http = Net::HTTP.new(*http_params)
83
- @http.use_ssl = true
84
- @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
85
- end
86
- end
87
- end
@@ -1,196 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module LivePaper
4
- class DummyHTTP
5
- include HttpClient
6
- end
7
- end
8
-
9
- describe LivePaper::HttpClient do
10
- before do
11
- $lpp_basic_auth=Base64.strict_encode64("auth:pass")
12
- @http_client = LivePaper::DummyHTTP.new
13
- stub_request(:post, 'https://auth:pass@www.livepaperapi.com/auth/token').to_return(:body => lpp_auth_response_json, :status => 200)
14
- end
15
-
16
- describe '#send_request' do
17
-
18
- before(:each) do
19
- @http = double('Http mock')
20
- allow(@http).to receive(:request)
21
- @http_client.instance_variable_set(:@http, @http)
22
- @request = double('Request mock')
23
- allow(@http_client).to receive(:check_response)
24
- end
25
-
26
- it 'should add the content type to the request' do
27
- expect(@request).to receive(:[]=).with('Content-type', 'image/jpg')
28
- allow(@request).to receive(:body=)
29
- @http_client.send_request @request, content_type: 'image/jpg', body: 'body'
30
- end
31
-
32
- it 'should add the body to the request' do
33
- expect(@request).to receive(:body=).with('body')
34
- allow(@request).to receive(:[]=)
35
- @http_client.send(:send_request, @request, content_type: 'image/jpg', body: 'body')
36
- end
37
-
38
- it 'should call the request method from the http instance' do
39
- allow(@request).to receive(:body=)
40
- allow(@request).to receive(:[]=)
41
- expect(@http).to receive(:request)
42
- @http_client.send(:send_request, @request, content_type: 'image/jpg', body: 'body')
43
- end
44
-
45
- it 'should check the response with default allow_codes' do
46
- allow(@request).to receive(:body=)
47
- allow(@request).to receive(:[]=)
48
- expect(@http_client).to receive(:check_response).with(anything, [200, 201])
49
- @http_client.send(:send_request, @request, content_type: 'image/jpg', body: 'body')
50
- end
51
-
52
- it 'should call check_response with the provided allow_codes' do
53
- allow(@request).to receive(:body=)
54
- allow(@request).to receive(:[]=)
55
- allow_codes = [200, 201, 409]
56
- expect(@http_client).to receive(:check_response).with(anything, allow_codes)
57
- @http_client.send(:send_request, @request, content_type: 'image/jpg', body: 'body', allow_codes: allow_codes)
58
- end
59
- end
60
-
61
- describe 'check_response' do
62
-
63
- before(:each) do
64
- @response = double('A mock for a response')
65
- allow(@response).to receive(:body)
66
- @allow=[200, 201]
67
- end
68
-
69
- it 'should raise NotAuthenticatedError if the response code is 401' do
70
- allow(@response).to receive(:code).and_return('401')
71
- expect { @http_client.send(:check_response, @response, @allow) }.to raise_error NotAuthenticatedError
72
- end
73
-
74
- it 'should not raise any exception if the response code is 200..201' do
75
- allow(@response).to receive(:code).and_return('201')
76
- expect { @http_client.send(:check_response, @response, @allow) }.to_not raise_error
77
- end
78
-
79
- it 'should raise exception if the response code is other than 200..201|401' do
80
- allow(@response).to receive(:code).and_return('500')
81
- expect { @http_client.send(:check_response, @response, @allow) }.to raise_error
82
- end
83
- end
84
-
85
- describe 'request_handling_auth' do
86
-
87
- before(:each) do
88
- @url = 'https://dev.livepaperapi.com/auth/token'
89
- end
90
-
91
- context 'when there is no access token' do
92
-
93
- before(:each) do
94
- @http_client.instance_variable_set(:@access_token, nil)
95
- end
96
-
97
- it 'should request the access token' do
98
- expect(@http_client).to receive(:request_access_token)
99
- @http_client.send(:request_handling_auth, @url, "POST") { |request|}
100
- end
101
- end
102
-
103
- context 'when there is access token' do
104
-
105
- before(:each) do
106
- @http_client.instance_variable_set(:@access_token, 'TOPSECRET')
107
- end
108
-
109
- it 'should yield the given block' do
110
- a_mock = double('Some mock')
111
- expect(a_mock).to receive(:a_message)
112
- @http_client.send(:request_handling_auth, @url, 'POST') do |request|
113
- a_mock.a_message
114
- end
115
- end
116
-
117
- context 'when the access token is invalid' do
118
-
119
- before(:each) do
120
- @http_client.instance_variable_set(:@access_token, 'INVALID')
121
- end
122
-
123
- it 'should retry max 3 times' do
124
- a_mock = double('Some mock')
125
- expect(a_mock).to receive(:a_message).at_least(:twice)
126
- begin
127
- @http_client.send(:request_handling_auth, @url, 'POST') do |request|
128
- a_mock.a_message
129
- raise NotAuthenticatedError.new
130
- end
131
- rescue NotAuthenticatedError => e
132
- end
133
- end
134
-
135
- it 'should raise exception if retried more than 3 times' do
136
- allow(@http_client).to receive (:request_access_token)
137
- expect {
138
- @http_client.send(:request_handling_auth, @url, 'POST') do |request|
139
- raise NotAuthenticatedError.new
140
- end
141
- }.to raise_error
142
- end
143
- end
144
- end
145
- end
146
-
147
- describe 'request_access_token' do
148
-
149
- it 'should parse the response getting the accessToken entry' do
150
- @http_client.send :request_access_token
151
- expect(@http_client.instance_variable_get(:@access_token)).to eq 'SECRETTOKEN'
152
- end
153
- end
154
-
155
- describe 'http_request' do
156
-
157
- before do
158
- @host = 'https://dev.livepaperapi.com/auth/token'
159
- @http = double('Http mock')
160
- allow(@http).to receive(:verify_mode=)
161
- allow(@http).to receive(:use_ssl=)
162
- end
163
- it 'should create and return a Net::HTTP::Post instance if POST method is chosen.' do
164
- expect(Net::HTTP::Post).to receive(:new).and_call_original
165
- @http_client.send(:http_request, @host, 'POST')
166
- end
167
-
168
- it 'should create and return a Net::HTTP::Get instance if GET method is chosen.' do
169
- expect(Net::HTTP::Get).to receive(:new).and_call_original
170
- @http_client.send(:http_request, @host, 'GET')
171
- end
172
-
173
- it 'should create and return a Net::HTTP::Delete instance if DELETE method is chosen.' do
174
- expect(Net::HTTP::Delete).to receive(:new).and_call_original
175
- @http_client.send(:http_request, @host, 'DELETE')
176
- end
177
-
178
- it 'should use ssl' do
179
- allow(Net::HTTP).to receive(:new).and_return(@http)
180
- expect(@http).to receive(:use_ssl=)
181
- @http_client.send(:http_request, @host, 'POST')
182
- end
183
-
184
- it 'should handle proxy settings' do
185
- ENV['HTTP_PROXY'] = 'http://proxy.com:1234'
186
- expect(Net::HTTP).to receive(:new).with('dev.livepaperapi.com', 443, 'proxy.com', '1234').and_return(@http)
187
- @http_client.send(:http_request, @host, 'POST')
188
- end
189
-
190
- it 'should raise exception if the method provided is not supported.' do
191
- expect { @http_client.send(:http_request, @host, 'NOT_SUPPORTED') }.to raise_error
192
- end
193
-
194
- end
195
-
196
- end