lob 5.4.5 → 5.4.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/forked_tests_job.yml +36 -0
- data/CHANGELOG.md +2 -0
- data/examples/README.md +8 -0
- data/examples/cards.rb +51 -0
- data/lib/lob/client.rb +5 -0
- data/lib/lob/resources/bulk_intl_verifications.rb +1 -0
- data/lib/lob/resources/bulk_us_verifications.rb +1 -0
- data/lib/lob/resources/card.rb +46 -0
- data/lib/lob/version.rb +1 -1
- data/spec/lob/resources/bulk_intl_verifications_spec.rb +9 -0
- data/spec/lob/resources/bulk_us_verifications_spec.rb +14 -0
- data/spec/lob/resources/card_spec.rb +145 -0
- data/spec/samples/card.pdf +744 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba5df9cb717ab1c37b9ee4741304e8d5afa77d2e78c323d25f6d81e541f463ae
|
4
|
+
data.tar.gz: f0b0e80db2cfafa53427676ff2ff66edf02f85f1e7b1c98acaeb7f5e5426de84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40ad0b305524f54b28a1a08c83108aed912e6c23c096fb55be0d8f713bb6a2a1108f334c0d8949e88aa0139ab0e0fed71077b4e9af140829ab41643c9d0cc235
|
7
|
+
data.tar.gz: 7e9cbf18e676c609a09ff2bc32c60931c69c5fd5334ef82b905d2f7bc62c36086121ccd48e67e4b3a3f1cf5b64e87c5237f6ccd5bbcaaa36ef0d680bbccbd070
|
@@ -0,0 +1,36 @@
|
|
1
|
+
name: Run tests from Forked Repo
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request_target:
|
5
|
+
types: [labeled]
|
6
|
+
jobs:
|
7
|
+
ruby_tests:
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
if: contains(github.event.pull_request.labels.*.name, 'Approved')
|
10
|
+
|
11
|
+
strategy:
|
12
|
+
matrix:
|
13
|
+
ruby-version: ['jruby-9.2.9.0', '2.6', '2.7', '3.0']
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v2
|
16
|
+
- name: Setup
|
17
|
+
uses: ruby/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: ${{ matrix.ruby-version }}
|
20
|
+
- name: Install Dependencies
|
21
|
+
run: bundle install
|
22
|
+
- name: Run Tests
|
23
|
+
env:
|
24
|
+
API_KEY: ${{ secrets.API_KEY }}
|
25
|
+
JRUBY_OPT: --2.0
|
26
|
+
run: bundle exec rake test
|
27
|
+
- name: Send coverage to Coveralls
|
28
|
+
uses: coverallsapp/github-action@master
|
29
|
+
with:
|
30
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
31
|
+
path-to-lcov: ./coverage/lcov/lcov.info
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
## [**5.4.6**](https://github.com/lob/lob-ruby/releases/tag/v5.4.6) (2022-01-25)
|
2
|
+
- [**206**](https://github/com/lob/lob-ruby/pull/206) added additional parsing to make sure we can pass hashes into bulk verify methods
|
1
3
|
## [**5.4.5**](https://github.com/lob/lob-ruby/releases/tag/v5.4.5) (2022-01-11)
|
2
4
|
- [**203**](https://github.com/lob/lob-ruby/pull/203) Pass through proxy to rest-client if supplied
|
3
5
|
## [**5.4.4**](https://github.com/lob/lob-ruby/releases/tag/v5.4.4) (2021-12-16)
|
data/examples/README.md
CHANGED
@@ -38,6 +38,14 @@ Please note that if you are running this with a Test API Key, the verification A
|
|
38
38
|
bundle exec ruby examples/csv_verify/verify.rb
|
39
39
|
```
|
40
40
|
|
41
|
+
## [/cards.rb](./cards.rb)
|
42
|
+
|
43
|
+
An example showing how to create a card using Lob's [Cards API](https://docs.lob.com/#tag/Cards).
|
44
|
+
|
45
|
+
```
|
46
|
+
bundle exec ruby examples/cards.rb
|
47
|
+
```
|
48
|
+
|
41
49
|
## [/checks.rb](./checks.rb)
|
42
50
|
|
43
51
|
An example showing how to create a check using Lob's [Checks API](https://lob.com/services/checks).
|
data/examples/cards.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
$:.unshift File.expand_path("../lib", File.dirname(__FILE__))
|
2
|
+
require 'lob.rb'
|
3
|
+
require 'pp'
|
4
|
+
|
5
|
+
# initialize Lob object
|
6
|
+
LOB_LIVE_API_KEY = ENV['LOB_LIVE_API_KEY']
|
7
|
+
lob = Lob::Client.new(api_key: LOB_LIVE_API_KEY)
|
8
|
+
|
9
|
+
front_template = 'https://s3-us-west-2.amazonaws.com/public.lob.com/assets/card_horizontal.pdf'
|
10
|
+
back_template = 'https://s3-us-west-2.amazonaws.com/public.lob.com/assets/card_horizontal.pdf'
|
11
|
+
|
12
|
+
# create a card
|
13
|
+
pp lob.cards.create(
|
14
|
+
front: front_template, # required
|
15
|
+
back: back_template, # optional; default: 'https://s3.us-west-2.amazonaws.com/public.lob.com/assets/card_blank_horizontal.pdf'
|
16
|
+
description: 'Test Card', # optional
|
17
|
+
size: '2.125x3.375' # optional, default: '2.125x3.375'
|
18
|
+
)
|
19
|
+
|
20
|
+
# find a card
|
21
|
+
card_id = 'YOUR_CARD_ID'
|
22
|
+
pp lob.cards.find(
|
23
|
+
card_id # required
|
24
|
+
)
|
25
|
+
|
26
|
+
# update a card
|
27
|
+
card_id = 'YOUR_CARD_ID'
|
28
|
+
pp lob.cards.update(
|
29
|
+
card_id, # required
|
30
|
+
{ description: 'Updated Test Card Desc' }
|
31
|
+
)
|
32
|
+
|
33
|
+
# delete a card
|
34
|
+
card_id = 'YOUR_CARD_ID'
|
35
|
+
pp lob.cards.destroy(
|
36
|
+
card_id # required
|
37
|
+
)
|
38
|
+
|
39
|
+
# create a card order
|
40
|
+
card_id = 'YOUR_CARD_ID'
|
41
|
+
pp lob.cards.create_order(
|
42
|
+
card_id, # required
|
43
|
+
{ quantity: 10000 } # required
|
44
|
+
)
|
45
|
+
|
46
|
+
# List orders for a given card a card order
|
47
|
+
card_id = 'YOUR_CARD_ID'
|
48
|
+
pp lob.cards.list_orders(
|
49
|
+
card_id # required
|
50
|
+
)
|
51
|
+
|
data/lib/lob/client.rb
CHANGED
@@ -2,6 +2,7 @@ require "lob/resources/address"
|
|
2
2
|
require "lob/resources/bank_account"
|
3
3
|
require "lob/resources/bulk_intl_verifications"
|
4
4
|
require "lob/resources/bulk_us_verifications"
|
5
|
+
require "lob/resources/card"
|
5
6
|
require "lob/resources/check"
|
6
7
|
require "lob/resources/group"
|
7
8
|
require "lob/resources/groups_member"
|
@@ -43,6 +44,10 @@ module Lob
|
|
43
44
|
Lob::Resources::BulkUSVerifications.new(config)
|
44
45
|
end
|
45
46
|
|
47
|
+
def cards
|
48
|
+
Lob::Resources::Card.new(config)
|
49
|
+
end
|
50
|
+
|
46
51
|
def checks
|
47
52
|
Lob::Resources::Check.new(config)
|
48
53
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "lob/resources/resource_base"
|
2
|
+
|
3
|
+
module Lob
|
4
|
+
module Resources
|
5
|
+
class Card < Lob::Resources::ResourceBase
|
6
|
+
|
7
|
+
def initialize(config)
|
8
|
+
super(config)
|
9
|
+
@endpoint = "cards"
|
10
|
+
end
|
11
|
+
|
12
|
+
def update(resource_id, body={}, headers={})
|
13
|
+
request = {
|
14
|
+
method: :post,
|
15
|
+
url: resource_url(resource_id),
|
16
|
+
body: body,
|
17
|
+
headers: headers
|
18
|
+
}
|
19
|
+
|
20
|
+
submit(request)
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_order(resource_id, body={}, headers={})
|
24
|
+
request = {
|
25
|
+
method: :post,
|
26
|
+
url: "#{resource_url(resource_id)}/orders",
|
27
|
+
body: body,
|
28
|
+
headers: headers
|
29
|
+
}
|
30
|
+
|
31
|
+
submit(request)
|
32
|
+
end
|
33
|
+
|
34
|
+
def list_orders(resource_id, query={})
|
35
|
+
request = {
|
36
|
+
method: :get,
|
37
|
+
url: "#{resource_url(resource_id)}/orders",
|
38
|
+
query: query
|
39
|
+
}
|
40
|
+
|
41
|
+
submit(request)
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/lob/version.rb
CHANGED
@@ -5,6 +5,13 @@ describe Lob::Resources::BulkIntlVerifications do
|
|
5
5
|
before :each do
|
6
6
|
@sample_params = {
|
7
7
|
addresses: [
|
8
|
+
{
|
9
|
+
primary_line: "123 Test St",
|
10
|
+
city: "HEARST",
|
11
|
+
state: "ONTARIO",
|
12
|
+
postal_code: "P0L1N0",
|
13
|
+
country: "CA"
|
14
|
+
},
|
8
15
|
{
|
9
16
|
primary_line: "123 Test St",
|
10
17
|
city: "HEARST",
|
@@ -24,6 +31,8 @@ describe Lob::Resources::BulkIntlVerifications do
|
|
24
31
|
addresses = result["addresses"]
|
25
32
|
address = addresses.first
|
26
33
|
address["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
34
|
+
address = addresses[1]
|
35
|
+
address["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
27
36
|
end
|
28
37
|
end
|
29
38
|
|
@@ -11,6 +11,13 @@ describe Lob::Resources::BulkUSVerifications do
|
|
11
11
|
city: "SAN FRANCISCO",
|
12
12
|
state: "CA",
|
13
13
|
zip_code: "94107"
|
14
|
+
},
|
15
|
+
{
|
16
|
+
recipient: "Harry Zhou",
|
17
|
+
primary_line: "325 BERRY ST",
|
18
|
+
city: "SAN FRANCISCO",
|
19
|
+
state: "CA",
|
20
|
+
zip_code: "94107"
|
14
21
|
}
|
15
22
|
]
|
16
23
|
}
|
@@ -24,6 +31,10 @@ describe Lob::Resources::BulkUSVerifications do
|
|
24
31
|
addresses = result["addresses"]
|
25
32
|
address = addresses.first
|
26
33
|
address["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
34
|
+
address = addresses[1]
|
35
|
+
address["recipient"].must_equal("TEST KEYS DO NOT VERIFY ADDRESSES")
|
36
|
+
|
37
|
+
|
27
38
|
end
|
28
39
|
|
29
40
|
it "should allow 'case' in query params" do
|
@@ -31,6 +42,9 @@ describe Lob::Resources::BulkUSVerifications do
|
|
31
42
|
addresses = result["addresses"]
|
32
43
|
address = addresses.first
|
33
44
|
address["recipient"].must_equal("Test Keys Do Not Verify Addresses")
|
45
|
+
address = addresses[1]
|
46
|
+
address["recipient"].must_equal("Test Keys Do Not Verify Addresses")
|
47
|
+
|
34
48
|
end
|
35
49
|
end
|
36
50
|
|
@@ -0,0 +1,145 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lob::Resources::Card do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@horizontal_card_url = "https://s3-us-west-2.amazonaws.com/public.lob.com/assets/card_horizontal.pdf"
|
7
|
+
@horizontal_card_front = File.new(File.expand_path("../../../samples/card.pdf", __FILE__))
|
8
|
+
@horizontal_card_back = File.new(File.expand_path("../../../samples/card.pdf", __FILE__))
|
9
|
+
|
10
|
+
@sample_card_params = {
|
11
|
+
description: "Test Card",
|
12
|
+
front: @horizontal_card_url
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
subject { Lob::Client.new(api_key: API_KEY) }
|
17
|
+
|
18
|
+
describe "list" do
|
19
|
+
it "should list cards" do
|
20
|
+
assert subject.cards.list({ include: ['total_count'] })["object"] == "list"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "create" do
|
25
|
+
it "should create a card with a front url" do
|
26
|
+
result = subject.cards.create(@sample_card_params)
|
27
|
+
|
28
|
+
result["description"].must_equal(@sample_card_params[:description])
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should create a card with front and back as urls" do
|
32
|
+
result = subject.cards.create(
|
33
|
+
@sample_card_params.merge(back: @horizontal_card_url)
|
34
|
+
)
|
35
|
+
|
36
|
+
result["description"].must_equal(@sample_card_params[:description])
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should create a card with a front PDF" do
|
40
|
+
result = subject.cards.create(
|
41
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
42
|
+
)
|
43
|
+
|
44
|
+
result["description"].must_equal(@sample_card_params[:description])
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should create a card with front and back as PDFs" do
|
48
|
+
result = subject.cards.create(
|
49
|
+
@sample_card_params.merge({
|
50
|
+
front: @horizontal_card_front,
|
51
|
+
back: @horizontal_card_back
|
52
|
+
})
|
53
|
+
)
|
54
|
+
|
55
|
+
result["description"].must_equal(@sample_card_params[:description])
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should return an error without a front" do
|
59
|
+
assert_raises Lob::InvalidRequestError do
|
60
|
+
subject.cards.create(
|
61
|
+
@sample_card_params.merge({ front: nil })
|
62
|
+
)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
describe "find" do
|
69
|
+
it "should find a card" do
|
70
|
+
new_card = subject.cards.create(
|
71
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
72
|
+
)
|
73
|
+
|
74
|
+
result = subject.cards.find(new_card["id"])
|
75
|
+
result["description"].must_equal(@sample_card_params[:description])
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
describe "update" do
|
81
|
+
it "should update a card" do
|
82
|
+
new_card = subject.cards.create(
|
83
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
84
|
+
)
|
85
|
+
|
86
|
+
result = subject.cards.update(
|
87
|
+
new_card["id"],
|
88
|
+
{ description: "Updated card description" }
|
89
|
+
)
|
90
|
+
result["description"].must_equal("Updated card description")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
describe "destroy" do
|
96
|
+
it "should destroy a card" do
|
97
|
+
new_card = subject.cards.create(
|
98
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
99
|
+
)
|
100
|
+
|
101
|
+
result = subject.cards.destroy(new_card["id"])
|
102
|
+
result["id"].must_equal(new_card["id"])
|
103
|
+
result["deleted"].must_equal(true)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
describe "create_order" do
|
109
|
+
it "should create an order for a card" do
|
110
|
+
new_card = subject.cards.create(
|
111
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
112
|
+
)
|
113
|
+
|
114
|
+
card_order_params = {
|
115
|
+
quantity: 10001
|
116
|
+
}
|
117
|
+
|
118
|
+
result = subject.cards.create_order(new_card["id"], card_order_params)
|
119
|
+
result["card_id"].must_equal(new_card["id"])
|
120
|
+
result["quantity_ordered"].must_equal(card_order_params[:quantity])
|
121
|
+
result["object"].must_equal("card_order")
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
describe "list_orders" do
|
127
|
+
it "should list all orders for a card" do
|
128
|
+
new_card = subject.cards.create(
|
129
|
+
@sample_card_params.merge(front: @horizontal_card_front)
|
130
|
+
)
|
131
|
+
card_order_params = {
|
132
|
+
quantity: 10001
|
133
|
+
}
|
134
|
+
new_card_order = subject.cards.create_order(
|
135
|
+
new_card["id"],
|
136
|
+
card_order_params
|
137
|
+
)
|
138
|
+
|
139
|
+
result = subject.cards.list_orders(new_card["id"])
|
140
|
+
result["object"].must_equal("list")
|
141
|
+
result["count"].must_equal(1)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|