apruve 0.11.0 → 1.0.0

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.
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Apruve::LineItem do
3
+ describe Apruve::OrderItem do
4
4
  let (:line_item) do
5
- Apruve::LineItem.new(
5
+ Apruve::OrderItem.new(
6
6
  title: 'line 2',
7
7
  amount_cents: '40'
8
8
  )
@@ -0,0 +1,220 @@
1
+ require 'spec_helper'
2
+
3
+ describe Apruve::Order do
4
+ before :each do
5
+ Apruve.configure('f5fbe71d68772d1f562ed6f598b995b3', 'local')
6
+ end
7
+
8
+ let (:order_items) do
9
+ [
10
+ Apruve::OrderItem.new(
11
+ title: 'line 1',
12
+ amount_cents: '1230',
13
+ price_ea_cents: '123',
14
+ quantity: 10,
15
+ description: 'A line item',
16
+ variant_info: 'small',
17
+ sku: 'LINE1SKU',
18
+ vendor: 'acme, inc.',
19
+ view_product_url: 'http://www.apruve.com/doc'
20
+ ),
21
+ Apruve::OrderItem.new(
22
+ title: 'line 2',
23
+ amount_cents: '40'
24
+ )
25
+ ]
26
+ end
27
+
28
+ let (:payment_request) do
29
+ Apruve::Order.new(
30
+ merchant_id: '9999',
31
+ merchant_order_id: 'ABC',
32
+ amount_cents: 12340,
33
+ tax_cents: 0,
34
+ shipping_cents: 0,
35
+ expire_at: '2014-07-22T00:00:00+00:00',
36
+ order_items: order_items,
37
+ finalize_on_create: false,
38
+ invoice_on_create: false
39
+ )
40
+ end
41
+ subject { payment_request }
42
+
43
+ it { should respond_to(:merchant_id) }
44
+ it { should respond_to(:merchant_order_id) }
45
+ it { should respond_to(:amount_cents) }
46
+ it { should respond_to(:tax_cents) }
47
+ it { should respond_to(:shipping_cents) }
48
+ it { should respond_to(:order_items) }
49
+ it { should respond_to(:links) }
50
+ it { should respond_to(:created_at) }
51
+ it { should respond_to(:updated_at) }
52
+ it { should respond_to(:accepts_payment_terms) }
53
+ it { should respond_to(:finalize_on_create) }
54
+ it { should respond_to(:invoice_on_create) }
55
+
56
+ describe '#to_json' do
57
+ let(:expected) do
58
+ "{\"merchant_id\":\"9999\",\"merchant_order_id\":\"ABC\",\"amount_cents\":12340,\"tax_cents\":0,"\
59
+ "\"shipping_cents\":0,\"expire_at\":\"2014-07-22T00:00:00+00:00\",\"order_items\":[{\"title\":\"line 1\",\"amount_cents\":\"1230\","\
60
+ "\"price_ea_cents\":\"123\",\"quantity\":10,\"description\":\"A line item\",\"variant_info\":\"small\","\
61
+ "\"sku\":\"LINE1SKU\",\"vendor\":\"acme, inc.\",\"view_product_url\":\"http://www.apruve.com/doc\"},"\
62
+ "{\"title\":\"line 2\",\"amount_cents\":\"40\"}],\"finalize_on_create\":false,\"invoice_on_create\":false}"
63
+ end
64
+ its(:to_json) { should eq expected }
65
+ end
66
+
67
+ describe '#value_string' do
68
+ let(:expected) do
69
+ '9999ABC12340002014-07-22T00:00:00+00:00falsefalseline 1123012310A line itemsmallLINE1SKUacme, inc.http://www.apruve.com/docline 240'
70
+ end
71
+ its(:value_string) { should eq expected }
72
+ end
73
+
74
+ describe '#secure_hash' do
75
+ describe 'no api_key' do
76
+ let (:error) { 'api_key has not been set. Set it with Apruve.configure(api_key, environment, options)' }
77
+ before :each do
78
+ Apruve.configure
79
+ end
80
+ it 'should raise' do
81
+ expect { payment_request.secure_hash }.to raise_error(error)
82
+ end
83
+ end
84
+ describe 'with api_key' do
85
+ let (:hash) { '9aa1dda31ecd611ed759e132c2c4afec810409e49866db0090d8fa51fe4ad597' }
86
+ let (:api_key) { 'an_api_key' }
87
+ before :each do
88
+ Apruve.configure(api_key)
89
+ end
90
+ it 'should hash' do
91
+ expect(payment_request.secure_hash).to eq hash
92
+ end
93
+ end
94
+ end
95
+
96
+ describe '#validate' do
97
+ describe 'no errors' do
98
+ it 'should not raise' do
99
+ expect { payment_request.validate }.not_to raise_error
100
+ end
101
+ end
102
+ describe 'errors' do
103
+ before :each do
104
+ payment_request.merchant_id = nil
105
+ end
106
+ it 'should raise on no merchant_id' do
107
+ expect { payment_request.validate }.to raise_error(Apruve::ValidationError, '["merchant_id must be set"]')
108
+ end
109
+ end
110
+ end
111
+
112
+ describe '#find' do
113
+ let (:id) { '89ea2488fe0a5c7bb38aa7f9b088874a' }
114
+ describe 'success' do
115
+ let! (:stubs) do
116
+ faraday_stubs do |stub|
117
+ stub.get("/api/v4/orders/#{id}") { [200, {}, '{}'] }
118
+ end
119
+ end
120
+ it 'should do a get' do
121
+ Apruve::Order.find(id)
122
+ stubs.verify_stubbed_calls
123
+ end
124
+ end
125
+
126
+ describe 'not found' do
127
+ let! (:stubs) do
128
+ faraday_stubs do |stub|
129
+ stub.get("/api/v4/orders/#{id}") { [404, {}, 'Not Found'] }
130
+ end
131
+ end
132
+ it 'should raise' do
133
+ expect { Apruve::Order.find(id) }.to raise_error(Apruve::NotFound)
134
+ stubs.verify_stubbed_calls
135
+ end
136
+ end
137
+ end
138
+
139
+ describe '#finalize' do
140
+ let (:id) { '89ea2488fe0a5c7bb38aa7f9b088874a' }
141
+ describe 'success' do
142
+ let! (:stubs) do
143
+ faraday_stubs do |stub|
144
+ stub.post("/api/v4/orders/#{id}/finalize") { [200, {}, '{}'] }
145
+ end
146
+ end
147
+ it 'should do a get' do
148
+ Apruve::Order.finalize!(id)
149
+ stubs.verify_stubbed_calls
150
+ end
151
+ end
152
+
153
+ describe 'not found' do
154
+ let! (:stubs) do
155
+ faraday_stubs do |stub|
156
+ stub.post("/api/v4/orders/#{id}/finalize") { [404, {}, 'Not Found'] }
157
+ end
158
+ end
159
+ it 'should raise' do
160
+ expect { Apruve::Order.finalize!(id) }.to raise_error(Apruve::NotFound)
161
+ stubs.verify_stubbed_calls
162
+ end
163
+ end
164
+ end
165
+
166
+ describe '#cancel' do
167
+ let (:id) { '89ea2488fe0a5c7bb38aa7f9b088874a' }
168
+ describe 'success' do
169
+ let! (:stubs) do
170
+ faraday_stubs do |stub|
171
+ stub.post("/api/v4/orders/#{id}/cancel") { [200, {}, '{}'] }
172
+ end
173
+ end
174
+ it 'should do a get' do
175
+ Apruve::Order.cancel!(id)
176
+ stubs.verify_stubbed_calls
177
+ end
178
+ end
179
+
180
+ describe 'not found' do
181
+ let! (:stubs) do
182
+ faraday_stubs do |stub|
183
+ stub.post("/api/v4/orders/#{id}/cancel") { [404, {}, 'Not Found'] }
184
+ end
185
+ end
186
+ it 'should raise' do
187
+ expect { Apruve::Order.cancel!(id) }.to raise_error(Apruve::NotFound)
188
+ stubs.verify_stubbed_calls
189
+ end
190
+ end
191
+ end
192
+
193
+ describe '#update' do
194
+ let (:id) { '89ea2488fe0a5c7bb38aa7f9b088874a' }
195
+ let (:order) { Apruve::Order.new id: id, merchant_id: 9999 }
196
+ describe 'success' do
197
+ let! (:stubs) do
198
+ faraday_stubs do |stub|
199
+ stub.patch("/api/v4/orders/#{id}", {order: order}.to_json) { [200, {}, '{}'] }
200
+ end
201
+ end
202
+ it 'should do a get' do
203
+ order.update!
204
+ stubs.verify_stubbed_calls
205
+ end
206
+ end
207
+
208
+ describe 'not found' do
209
+ let! (:stubs) do
210
+ faraday_stubs do |stub|
211
+ stub.patch("/api/v4/orders/#{id}", {order: order}.to_json) { [404, {}, 'Not Found'] }
212
+ end
213
+ end
214
+ it 'should raise' do
215
+ expect { order.update! }.to raise_error(Apruve::NotFound)
216
+ stubs.verify_stubbed_calls
217
+ end
218
+ end
219
+ end
220
+ end
@@ -89,6 +89,25 @@ describe Apruve::PaymentRequest do
89
89
  end
90
90
  end
91
91
 
92
+ describe '#finalize!' do
93
+ let (:id) { '89ea2488fe0a5c7bb38aa7f9b088874a' }
94
+ describe 'success' do
95
+ # stub out a successful post
96
+ let! (:stubs) do
97
+ faraday_stubs do |stub|
98
+ stub.post("/api/v3/payment_requests/#{id}/finalize") { [201, {}, '{}'] }
99
+ end
100
+ end
101
+
102
+ it 'should do a post' do
103
+ Apruve::PaymentRequest.finalize!(id)
104
+ stubs.verify_stubbed_calls
105
+ end
106
+ end
107
+ # stub out a failed post
108
+
109
+ end
110
+
92
111
  describe '#validate' do
93
112
  describe 'no errors' do
94
113
  it 'should not raise' do
@@ -53,7 +53,7 @@ describe Apruve::SubscriptionAdjustment do
53
53
  describe 'success' do
54
54
  let! (:stubs) do
55
55
  faraday_stubs do |stub|
56
- stub.get("/api/v3/subscriptions/#{subscription_id}/adjustments/#{id}") { [200, {}, '{}'] }
56
+ stub.get("/api/v4/subscriptions/#{subscription_id}/adjustments/#{id}") { [200, {}, '{}'] }
57
57
  end
58
58
  end
59
59
  it 'should do a get' do
@@ -64,7 +64,7 @@ describe Apruve::SubscriptionAdjustment do
64
64
  describe 'not found' do
65
65
  let! (:stubs) do
66
66
  faraday_stubs do |stub|
67
- stub.get("/api/v3/subscriptions/#{subscription_id}/adjustments/#{id}") { [404, {}, 'Not Found'] }
67
+ stub.get("/api/v4/subscriptions/#{subscription_id}/adjustments/#{id}") { [404, {}, 'Not Found'] }
68
68
  end
69
69
  end
70
70
  it 'should raise' do
@@ -78,7 +78,7 @@ describe Apruve::SubscriptionAdjustment do
78
78
  describe 'success' do
79
79
  let! (:stubs) do
80
80
  faraday_stubs do |stub|
81
- stub.delete("/api/v3/subscriptions/#{subscription_id}/adjustments/#{id}") { [200, {}, '{}'] }
81
+ stub.delete("/api/v4/subscriptions/#{subscription_id}/adjustments/#{id}") { [200, {}, '{}'] }
82
82
  end
83
83
  end
84
84
  it 'should do a delete' do
@@ -89,7 +89,7 @@ describe Apruve::SubscriptionAdjustment do
89
89
  describe 'not found' do
90
90
  let! (:stubs) do
91
91
  faraday_stubs do |stub|
92
- stub.delete("/api/v3/subscriptions/#{subscription_id}/adjustments/#{id}") { [404, {}, 'Not Found'] }
92
+ stub.delete("/api/v4/subscriptions/#{subscription_id}/adjustments/#{id}") { [404, {}, 'Not Found'] }
93
93
  end
94
94
  end
95
95
  it 'should raise' do
@@ -103,7 +103,7 @@ describe Apruve::SubscriptionAdjustment do
103
103
  describe 'success' do
104
104
  let! (:stubs) do
105
105
  faraday_stubs do |stub|
106
- stub.delete("/api/v3/subscriptions/#{adjustment.subscription_id}/adjustments/#{adjustment.id}") { [200, {}, '{}'] }
106
+ stub.delete("/api/v4/subscriptions/#{adjustment.subscription_id}/adjustments/#{adjustment.id}") { [200, {}, '{}'] }
107
107
  end
108
108
  end
109
109
  it 'should do a delete' do
@@ -114,7 +114,7 @@ describe Apruve::SubscriptionAdjustment do
114
114
  describe 'not found' do
115
115
  let! (:stubs) do
116
116
  faraday_stubs do |stub|
117
- stub.delete("/api/v3/subscriptions/#{adjustment.subscription_id}/adjustments/#{adjustment.id}") { [404, {}, 'Not Found'] }
117
+ stub.delete("/api/v4/subscriptions/#{adjustment.subscription_id}/adjustments/#{adjustment.id}") { [404, {}, 'Not Found'] }
118
118
  end
119
119
  end
120
120
  it 'should raise' do
@@ -134,7 +134,7 @@ describe Apruve::SubscriptionAdjustment do
134
134
  describe 'success' do
135
135
  let! (:stubs) do
136
136
  faraday_stubs do |stub|
137
- stub.get("/api/v3/subscriptions/#{subscription_id}/adjustments") { [200, {}, '{}'] }
137
+ stub.get("/api/v4/subscriptions/#{subscription_id}/adjustments") { [200, {}, '{}'] }
138
138
  end
139
139
  end
140
140
  it 'should do a get' do
@@ -145,7 +145,7 @@ describe Apruve::SubscriptionAdjustment do
145
145
  describe 'not found' do
146
146
  let! (:stubs) do
147
147
  faraday_stubs do |stub|
148
- stub.get("/api/v3/subscriptions/#{subscription_id}/adjustments") { [404, {}, 'Not Found'] }
148
+ stub.get("/api/v4/subscriptions/#{subscription_id}/adjustments") { [404, {}, 'Not Found'] }
149
149
  end
150
150
  end
151
151
  it 'should raise' do
@@ -175,7 +175,7 @@ describe Apruve::SubscriptionAdjustment do
175
175
  let! (:stubs) do
176
176
  faraday_stubs do |stub|
177
177
  stub.post(
178
- "/api/v3/subscriptions/#{subscription_id}/adjustments", adjustment.to_json) { [200, {}, response.to_json] }
178
+ "/api/v4/subscriptions/#{subscription_id}/adjustments", adjustment.to_json) { [200, {}, response.to_json] }
179
179
  end
180
180
  end
181
181
  it 'should do a post' do
@@ -187,7 +187,7 @@ describe Apruve::SubscriptionAdjustment do
187
187
  let! (:stubs) do
188
188
  faraday_stubs do |stub|
189
189
  stub.post(
190
- "/api/v3/subscriptions/#{subscription_id}/adjustments", adjustment.to_json) { [404, {}, 'Not Found'] }
190
+ "/api/v4/subscriptions/#{subscription_id}/adjustments", adjustment.to_json) { [404, {}, 'Not Found'] }
191
191
  end
192
192
  end
193
193
  it 'should raise' do
@@ -41,7 +41,7 @@ describe Apruve::Subscription do
41
41
  describe 'success' do
42
42
  let! (:stubs) do
43
43
  faraday_stubs do |stub|
44
- stub.get("/api/v3/subscriptions/#{id}") { [200, {}, '{}'] }
44
+ stub.get("/api/v4/subscriptions/#{id}") { [200, {}, '{}'] }
45
45
  end
46
46
  end
47
47
  it 'should do a get' do
@@ -53,7 +53,7 @@ describe Apruve::Subscription do
53
53
  describe 'not found' do
54
54
  let! (:stubs) do
55
55
  faraday_stubs do |stub|
56
- stub.get("/api/v3/subscriptions/#{id}") { [404, {}, 'Not Found'] }
56
+ stub.get("/api/v4/subscriptions/#{id}") { [404, {}, 'Not Found'] }
57
57
  end
58
58
  end
59
59
  it 'should raise' do
@@ -74,7 +74,7 @@ describe Apruve::Subscription do
74
74
  let! (:stubs) do
75
75
  faraday_stubs do |stub|
76
76
  stub.put(
77
- "/api/v3/subscriptions/#{id}",
77
+ "/api/v4/subscriptions/#{id}",
78
78
  subscription.to_json,
79
79
  ) { [200, {}, response.to_json] }
80
80
  end
@@ -89,7 +89,7 @@ describe Apruve::Subscription do
89
89
  let! (:stubs) do
90
90
  faraday_stubs do |stub|
91
91
  stub.put(
92
- "/api/v3/subscriptions/#{id}",
92
+ "/api/v4/subscriptions/#{id}",
93
93
  subscription.to_json,
94
94
  ) { [404, {}, 'Not Found'] }
95
95
  end
@@ -115,7 +115,7 @@ describe Apruve::Subscription do
115
115
  describe 'success' do
116
116
  let! (:stubs) do
117
117
  faraday_stubs do |stub|
118
- stub.post("/api/v3/subscriptions/#{id}/cancel") { [200, {}, response.to_json] }
118
+ stub.post("/api/v4/subscriptions/#{id}/cancel") { [200, {}, response.to_json] }
119
119
  end
120
120
  end
121
121
  it 'should do a post' do
@@ -129,7 +129,7 @@ describe Apruve::Subscription do
129
129
  describe 'subscription not found' do
130
130
  let! (:stubs) do
131
131
  faraday_stubs do |stub|
132
- stub.post("/api/v3/subscriptions/#{id}/cancel") { [404, {}, 'Not Found'] }
132
+ stub.post("/api/v4/subscriptions/#{id}/cancel") { [404, {}, 'Not Found'] }
133
133
  end
134
134
  end
135
135
  it 'should raise' do
@@ -0,0 +1,137 @@
1
+ require 'spec_helper'
2
+
3
+ describe Apruve::WebhookEndpoint do
4
+ before :each do
5
+ Apruve.configure('f5fbe71d68772d1f562ed6f598b995b3', 'local')
6
+ end
7
+
8
+ let (:id) { 1234 }
9
+ let (:version) { 'A title' }
10
+ let (:url) { Faker::Internet.url }
11
+ let (:merchant_id) { 'f5fbe71d68772d1f562ed6f598b995b3' }
12
+ let (:webhook_endpoint) do
13
+ Apruve::WebhookEndpoint.new(
14
+ id: id,
15
+ version: version,
16
+ url: url,
17
+ merchant_id: merchant_id,
18
+ )
19
+ end
20
+ let (:json) { {id: id, version: version, url: url} }
21
+ subject { webhook_endpoint }
22
+
23
+ it { should respond_to(:id) }
24
+ it { should respond_to(:version) }
25
+ it { should respond_to(:url) }
26
+ it { should respond_to(:merchant_id) }
27
+
28
+ describe '#where' do
29
+ describe 'success' do
30
+ let! (:stubs) do
31
+ faraday_stubs do |stub|
32
+ stub.get("/api/v4/merchants/#{merchant_id}/webhook_endpoints") { [200, {}, [json,json].to_json] }
33
+ end
34
+ end
35
+ it 'should do a get' do
36
+ endpoints = Apruve::WebhookEndpoint.where(merchant_id)
37
+ stubs.verify_stubbed_calls
38
+ endpoints.each do |endpoint|
39
+ expect(endpoint.merchant_id).to eq merchant_id
40
+ end
41
+ end
42
+ end
43
+
44
+ describe 'not found' do
45
+ let! (:stubs) do
46
+ faraday_stubs do |stub|
47
+ stub.get("/api/v4/merchants/#{merchant_id}/webhook_endpoints") { [404, {}, 'Not Found'] }
48
+ end
49
+ end
50
+ it 'should raise' do
51
+ expect { Apruve::WebhookEndpoint.where(merchant_id) }.to raise_error(Apruve::NotFound)
52
+ stubs.verify_stubbed_calls
53
+ end
54
+ end
55
+ end
56
+
57
+ describe '#find' do
58
+ describe 'success' do
59
+ let! (:stubs) do
60
+ faraday_stubs do |stub|
61
+ stub.get("/api/v4/merchants/#{merchant_id}/webhook_endpoints/#{id}") { [200, {}, json.to_json] }
62
+ end
63
+ end
64
+ it 'should do a get' do
65
+ endpoint = Apruve::WebhookEndpoint.find(merchant_id, id)
66
+ stubs.verify_stubbed_calls
67
+ expect(endpoint.merchant_id).to eq merchant_id
68
+ end
69
+ end
70
+
71
+ describe 'not found' do
72
+ let! (:stubs) do
73
+ faraday_stubs do |stub|
74
+ stub.get("/api/v4/merchants/#{merchant_id}/webhook_endpoints/#{id}") { [404, {}, 'Not Found'] }
75
+ end
76
+ end
77
+ it 'should raise' do
78
+ expect { Apruve::WebhookEndpoint.find(merchant_id, id) }.to raise_error(Apruve::NotFound)
79
+ stubs.verify_stubbed_calls
80
+ end
81
+ end
82
+ end
83
+
84
+ describe '#destroy!' do
85
+ let(:webhook_endpoint) { Apruve::WebhookEndpoint.new merchant_id: merchant_id, id: id }
86
+ describe 'success' do
87
+ let! (:stubs) do
88
+ faraday_stubs do |stub|
89
+ stub.delete("/api/v4/merchants/#{merchant_id}/webhook_endpoints/#{id}") { [200, {}, '{}'] }
90
+ end
91
+ end
92
+ it 'should do a delete' do
93
+ webhook_endpoint.destroy!
94
+ stubs.verify_stubbed_calls
95
+ end
96
+ end
97
+
98
+ describe 'not found' do
99
+ let! (:stubs) do
100
+ faraday_stubs do |stub|
101
+ stub.delete("/api/v4/merchants/#{merchant_id}/webhook_endpoints/#{id}") { [404, {}, 'Not Found'] }
102
+ end
103
+ end
104
+ it 'should raise' do
105
+ expect { webhook_endpoint.destroy! }.to raise_error(Apruve::NotFound)
106
+ stubs.verify_stubbed_calls
107
+ end
108
+ end
109
+ end
110
+
111
+ describe '#create' do
112
+ let(:webhook_endpoint) { Apruve::WebhookEndpoint.new(merchant_id: merchant_id) }
113
+ describe 'success' do
114
+ let! (:stubs) do
115
+ faraday_stubs do |stub|
116
+ stub.post("/api/v4/merchants/#{merchant_id}/webhook_endpoints", {webhook_endpoint: webhook_endpoint}.to_json) { [201, {}, '{}'] }
117
+ end
118
+ end
119
+ it 'should do a create' do
120
+ webhook_endpoint.create!
121
+ stubs.verify_stubbed_calls
122
+ end
123
+ end
124
+
125
+ describe 'not found' do
126
+ let! (:stubs) do
127
+ faraday_stubs do |stub|
128
+ stub.post("/api/v4/merchants/#{merchant_id}/webhook_endpoints", {webhook_endpoint: webhook_endpoint}.to_json) { [404, {}, 'Not Found'] }
129
+ end
130
+ end
131
+ it 'should raise' do
132
+ expect { webhook_endpoint.create! }.to raise_error(Apruve::NotFound)
133
+ stubs.verify_stubbed_calls
134
+ end
135
+ end
136
+ end
137
+ end