jamm 0.0.1 → 1.0.2
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 +4 -4
- data/.gitignore +6 -57
- data/.rubocop.yml +18 -25
- data/Gemfile +4 -0
- data/Gemfile.lock +99 -0
- data/README.md +4 -4
- data/Rakefile +2 -0
- data/jamm.gemspec +16 -3
- data/lib/jamm/api/api/customer_api.rb +265 -0
- data/lib/jamm/api/api/healthcheck_api.rb +76 -0
- data/lib/jamm/api/api/payment_api.rb +203 -0
- data/lib/jamm/api/api_client.rb +385 -0
- data/lib/jamm/api/api_error.rb +58 -0
- data/lib/jamm/api/configuration.rb +293 -0
- data/lib/jamm/api/models/customer_service_update_customer_body.rb +247 -0
- data/lib/jamm/api/models/protobuf_any.rb +209 -0
- data/lib/jamm/api/models/rpc_status.rb +218 -0
- data/lib/jamm/api/models/v1_buyer.rb +274 -0
- data/lib/jamm/api/models/v1_charge.rb +233 -0
- data/lib/jamm/api/models/v1_contract.rb +225 -0
- data/lib/jamm/api/models/v1_create_contract_with_charge_request.rb +217 -0
- data/lib/jamm/api/models/v1_create_contract_with_charge_response.rb +222 -0
- data/lib/jamm/api/models/v1_create_contract_without_charge_request.rb +212 -0
- data/lib/jamm/api/models/v1_create_contract_without_charge_response.rb +217 -0
- data/lib/jamm/api/models/v1_create_customer_request.rb +207 -0
- data/lib/jamm/api/models/v1_create_customer_response.rb +207 -0
- data/lib/jamm/api/models/v1_customer.rb +223 -0
- data/lib/jamm/api/models/v1_delete_customer_response.rb +207 -0
- data/lib/jamm/api/models/v1_get_contract_response.rb +212 -0
- data/lib/jamm/api/models/v1_get_customer_response.rb +207 -0
- data/lib/jamm/api/models/v1_initial_charge.rb +225 -0
- data/lib/jamm/api/models/v1_merchant.rb +212 -0
- data/lib/jamm/api/models/v1_merchant_customer.rb +213 -0
- data/lib/jamm/api/models/v1_payment_link.rb +221 -0
- data/lib/jamm/api/models/v1_ping_response.rb +207 -0
- data/lib/jamm/api/models/v1_update_customer_response.rb +207 -0
- data/lib/jamm/api/models/v1_url.rb +216 -0
- data/lib/jamm/api/version.rb +15 -0
- data/lib/jamm/api.rb +65 -0
- data/lib/jamm/client.rb +14 -0
- data/lib/jamm/customer.rb +28 -0
- data/lib/jamm/errors.rb +4 -14
- data/lib/jamm/oauth.rb +5 -5
- data/lib/jamm/payment.rb +19 -11
- data/lib/jamm/version.rb +3 -1
- data/lib/jamm.rb +37 -117
- metadata +62 -37
- data/.github/workflows/build.yml +0 -23
- data/.github/workflows/ruby-publish.yml +0 -24
- data/CONTRIBUTORS +0 -1
- data/images/jamm_logo.png +0 -0
- data/lib/jamm/api_operations/create.rb +0 -16
- data/lib/jamm/api_operations/get.rb +0 -16
- data/lib/jamm/api_operations/list.rb +0 -16
- data/lib/jamm/api_operations/update.rb +0 -16
- data/lib/jamm/api_resource.rb +0 -5
- data/lib/jamm/charge.rb +0 -10
- data/lib/jamm/jamm_object.rb +0 -249
- data/lib/jamm/request.rb +0 -13
- data/lib/jamm/time_util.rb +0 -41
- data/lib/jamm/token.rb +0 -10
- data/lib/jamm/util.rb +0 -76
- data/test/jamm/charge_test.rb +0 -56
- data/test/jamm/oauth_test.rb +0 -47
- data/test/jamm/payment_test.rb +0 -17
- data/test/jamm/time_util_test.rb +0 -18
- data/test/jamm/token_test.rb +0 -52
- data/test/test_data.rb +0 -118
- data/test/test_helper.rb +0 -59
data/test/jamm/charge_test.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require File.expand_path('../test_helper', __dir__)
|
2
|
-
|
3
|
-
module Jamm
|
4
|
-
class ChargeTest < Test::Unit::TestCase
|
5
|
-
should 'return a list of charge when Charge.list return valid response' do
|
6
|
-
# Arrange
|
7
|
-
@mock.expects(:post).once.returns(test_response(test_cognito_response))
|
8
|
-
@mock.expects(:get).once.returns(test_response(test_charges))
|
9
|
-
# Act
|
10
|
-
actual = Jamm::Charge.list
|
11
|
-
# Assert
|
12
|
-
assert actual.is_a? Array
|
13
|
-
assert_equal actual[0].charge_id, 'ct_h5e599d3-0000-4d46-9a52-1a37e7b5b8ef'
|
14
|
-
assert_equal actual[0].contract_id, 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef'
|
15
|
-
assert_equal actual[0].status, 'CREATED'
|
16
|
-
assert_equal actual[0].description, 'Gold Gym'
|
17
|
-
assert_equal actual[0].currency, 'JPY'
|
18
|
-
assert_equal actual[0].amount, 1000
|
19
|
-
assert_equal actual[0].amount_refunded, 800
|
20
|
-
assert_equal actual[0].merchant_metadata.key1, 'value1'
|
21
|
-
assert_equal actual[0].merchant_metadata.key2, 'value2'
|
22
|
-
assert_equal actual[0].created_at, '2023-11-07T15:30:00.000+03:00'
|
23
|
-
assert_equal actual[0].updated_at, '2023-11-11T15:30:00.000+03:00'
|
24
|
-
end
|
25
|
-
|
26
|
-
should 'raise an error when Charge.list return timeout' do
|
27
|
-
# Arrange
|
28
|
-
@mock.expects(:post).once.returns(test_response(test_cognito_response))
|
29
|
-
@mock.expects(:get).once.raises(RestClient::RequestTimeout)
|
30
|
-
# Assert
|
31
|
-
assert_raise ApiConnectionError do
|
32
|
-
Jamm::Charge.list
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
should 'return a charge when Charge.get return valid response' do
|
37
|
-
# Arrange
|
38
|
-
@mock.expects(:post).once.returns(test_response(test_cognito_response))
|
39
|
-
@mock.expects(:get).once.returns(test_response(test_charge))
|
40
|
-
# Act
|
41
|
-
actual = Jamm::Charge.get('ct_h5e599d3-0000-4d46-9a52-1a37e7b5b8ef')
|
42
|
-
# Assert
|
43
|
-
assert_equal actual.charge_id, 'ct_h5e599d3-0000-4d46-9a52-1a37e7b5b8ef'
|
44
|
-
assert_equal actual.contract_id, 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef'
|
45
|
-
assert_equal actual.status, 'CREATED'
|
46
|
-
assert_equal actual.description, 'Gold Gym'
|
47
|
-
assert_equal actual.currency, 'JPY'
|
48
|
-
assert_equal actual.amount, 1000
|
49
|
-
assert_equal actual.amount_refunded, 800
|
50
|
-
assert_equal actual.merchant_metadata.key1, 'value1'
|
51
|
-
assert_equal actual.merchant_metadata.key2, 'value2'
|
52
|
-
assert_equal actual.created_at, '2023-11-07T15:30:00.000+03:00'
|
53
|
-
assert_equal actual.updated_at, '2023-11-11T15:30:00.000+03:00'
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
data/test/jamm/oauth_test.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
require File.expand_path('../test_helper', __dir__)
|
2
|
-
require 'rest-client'
|
3
|
-
|
4
|
-
module Jamm
|
5
|
-
class OAuthTest < Test::Unit::TestCase
|
6
|
-
should 'raise an error when bad request was returned' do
|
7
|
-
@mock.expects(:post).once.raises(RestClient::ExceptionWithResponse)
|
8
|
-
assert_raise OAuthError do
|
9
|
-
Jamm::OAuth.oauth_token
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
should 'raise an error when SocketError happened' do
|
14
|
-
@mock.expects(:post).once.raises(SocketError)
|
15
|
-
assert_raise OAuthError do
|
16
|
-
Jamm::OAuth.oauth_token
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
should 'raise an error when timeout happened' do
|
21
|
-
@mock.expects(:post).once.raises(RestClient::RequestTimeout)
|
22
|
-
assert_raise OAuthError do
|
23
|
-
Jamm::OAuth.oauth_token
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
should 'raise an error when an unexpected exception happened' do
|
28
|
-
@mock.expects(:post).once.raises(RestClient::Exception)
|
29
|
-
assert_raise OAuthError do
|
30
|
-
Jamm::OAuth.oauth_token
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
should 'raise an error when unexpected response was returned' do
|
35
|
-
@mock.expects(:post).once.returns(test_response({}, 200))
|
36
|
-
assert_raise OAuthError do
|
37
|
-
Jamm::OAuth.oauth_token
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
should 'return an access token when valid response was returned' do
|
42
|
-
@mock.expects(:post).once.returns(test_response(test_cognito_response))
|
43
|
-
actual = Jamm::OAuth.oauth_token
|
44
|
-
assert_equal actual, 'access_token'
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
data/test/jamm/payment_test.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
require File.expand_path('../test_helper', __dir__)
|
2
|
-
|
3
|
-
module Jamm
|
4
|
-
class PaymentTest < Test::Unit::TestCase
|
5
|
-
should 'return a result when Payment.create return valid response' do
|
6
|
-
# Arrange
|
7
|
-
@mock.stubs(:post).returns(test_response(test_cognito_response)).then.returns(test_response(test_create_payment_response))
|
8
|
-
# Act
|
9
|
-
actual = Jamm::Payment.create(test_create_payment_request)
|
10
|
-
# Assert
|
11
|
-
assert_equal actual.token_id, 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef'
|
12
|
-
assert_equal actual.charge_id, 'ct_h5e599d3-0000-4d46-9a52-1a37e7b5b8ef'
|
13
|
-
assert_equal actual.payment_url, 'https://jamm-pay.com/K5e599d3-8b9e-4d46-9a72-1a37e7b5b8ef'
|
14
|
-
assert_equal actual.created_at, '2023-11-07T15:30:00.000+03:00'
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/test/jamm/time_util_test.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require File.expand_path('../test_helper', __dir__)
|
2
|
-
require 'time'
|
3
|
-
|
4
|
-
module Jamm
|
5
|
-
class TimeUtilTest < Test::Unit::TestCase
|
6
|
-
should 'compute relative time when relative scale is specified' do
|
7
|
-
now = Time.now
|
8
|
-
Time.expects(:now).once.returns(now)
|
9
|
-
actual = Jamm::TimeUtil.relative_time_to_iso('6 minutes')
|
10
|
-
assert_equal actual, (now + 6 * 60).strftime('%Y-%m-%dT%H:%M:%SZ')
|
11
|
-
end
|
12
|
-
|
13
|
-
should 'return input when absolute scale is specified' do
|
14
|
-
actual = Jamm::TimeUtil.relative_time_to_iso('2024-04-11T16:28:07.420Z')
|
15
|
-
assert_equal actual, '2024-04-11T16:28:07.420Z'
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/test/jamm/token_test.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
require File.expand_path('../test_helper', __dir__)
|
2
|
-
|
3
|
-
module Jamm
|
4
|
-
class TokenTest < Test::Unit::TestCase
|
5
|
-
should 'return a list of contract tokens when Token.list return valid response' do
|
6
|
-
# Arrange
|
7
|
-
@mock.expects(:post).once.returns(test_response(test_cognito_response))
|
8
|
-
@mock.expects(:get).once.returns(test_response(test_token_list))
|
9
|
-
# Act
|
10
|
-
actual = Jamm::Token.list
|
11
|
-
# Assert
|
12
|
-
assert actual.is_a? Array
|
13
|
-
assert_equal actual[0].contract_id, 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef'
|
14
|
-
assert_equal actual[0].status, 'CREATED'
|
15
|
-
assert_equal actual[0].description, 'Gold Gym'
|
16
|
-
assert_equal actual[0].currency, 'JPY'
|
17
|
-
assert_equal actual[0].initial_amount, 1000
|
18
|
-
assert_equal actual[0].metadata.key1, 'value1'
|
19
|
-
assert_equal actual[0].metadata.key2, 'value2'
|
20
|
-
assert_equal actual[0].created_at, '2023-11-07T15:30:00.000+03:00'
|
21
|
-
assert_equal actual[0].updated_at, '2023-11-11T15:30:00.000+03:00'
|
22
|
-
end
|
23
|
-
|
24
|
-
should 'raise an error when Token.list return timeout' do
|
25
|
-
# Arrange
|
26
|
-
@mock.expects(:post).once.returns(test_response(test_cognito_response))
|
27
|
-
@mock.expects(:get).once.raises(RestClient::RequestTimeout)
|
28
|
-
# Assert
|
29
|
-
assert_raise ApiConnectionError do
|
30
|
-
Jamm::Token.list
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
should 'return a contract tokens when Token.get return valid response' do
|
35
|
-
# Arrange
|
36
|
-
@mock.expects(:post).once.returns(test_response(test_cognito_response))
|
37
|
-
@mock.expects(:get).once.returns(test_response(test_token))
|
38
|
-
# Act
|
39
|
-
actual = Jamm::Token.get('dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef')
|
40
|
-
# Assert
|
41
|
-
assert_equal actual.contract_id, 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef'
|
42
|
-
assert_equal actual.status, 'CREATED'
|
43
|
-
assert_equal actual.description, 'Gold Gym'
|
44
|
-
assert_equal actual.currency, 'JPY'
|
45
|
-
assert_equal actual.initial_amount, 1000
|
46
|
-
assert_equal actual.metadata.key1, 'value1'
|
47
|
-
assert_equal actual.metadata.key2, 'value2'
|
48
|
-
assert_equal actual.created_at, '2023-11-07T15:30:00.000+03:00'
|
49
|
-
assert_equal actual.updated_at, '2023-11-11T15:30:00.000+03:00'
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
data/test/test_data.rb
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
module Jamm
|
2
|
-
module TestData
|
3
|
-
def test_response(body, code = 200)
|
4
|
-
body = JSON.generate(body) unless body.is_a? String
|
5
|
-
m = mock
|
6
|
-
m.instance_variable_set('@jamm_values', { body: body, code: code })
|
7
|
-
def m.body
|
8
|
-
@jamm_values[:body]
|
9
|
-
end
|
10
|
-
|
11
|
-
def m.code
|
12
|
-
@jamm_values[:code]
|
13
|
-
end
|
14
|
-
m
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_bad_request
|
18
|
-
{
|
19
|
-
"timestamp": '2023-11-07T15:30:00.000+09:00',
|
20
|
-
"status": 400,
|
21
|
-
"error": 'Bad Request',
|
22
|
-
"message": 'some error message',
|
23
|
-
"path": '/api/v0/deduction_contract_tokens'
|
24
|
-
}
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_cognito_response
|
28
|
-
{
|
29
|
-
access_token: 'access_token'
|
30
|
-
}
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_token_list
|
34
|
-
[test_token]
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_token
|
38
|
-
{
|
39
|
-
contract_id: 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef',
|
40
|
-
status: 'CREATED',
|
41
|
-
description: 'Gold Gym',
|
42
|
-
initial_amount: 1000,
|
43
|
-
currency: 'JPY',
|
44
|
-
metadata: {
|
45
|
-
key1: 'value1',
|
46
|
-
key2: 'value2'
|
47
|
-
},
|
48
|
-
created_at: '2023-11-07T15:30:00.000+03:00',
|
49
|
-
updated_at: '2023-11-11T15:30:00.000+03:00'
|
50
|
-
}
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_create_payment_request
|
54
|
-
{
|
55
|
-
charge: {
|
56
|
-
description: 'Gold Gym',
|
57
|
-
amount: 10_000,
|
58
|
-
currency: 'JPY'
|
59
|
-
},
|
60
|
-
redirect: {
|
61
|
-
success_url: 'http://www.example.com/success',
|
62
|
-
failure_url: 'http://www.example.com/fail',
|
63
|
-
info_url: 'http://www.example.com/customer_service',
|
64
|
-
expired_at: '2024-04-11T16:28:07.420Z'
|
65
|
-
},
|
66
|
-
metadata: {
|
67
|
-
key1: 'value1',
|
68
|
-
key2: 'value2'
|
69
|
-
},
|
70
|
-
customer: {
|
71
|
-
name: 'Taro Taro',
|
72
|
-
katakanaFirstName: 'タロ',
|
73
|
-
katakanaLastName: 'タロ',
|
74
|
-
gender: 'MALE',
|
75
|
-
postNum: '112-0001',
|
76
|
-
address: '東京都渋谷区1−1−1',
|
77
|
-
email: 'test@jamm-pay.jp',
|
78
|
-
phone: '010-1234-5678',
|
79
|
-
birthdate: '2000-01-01'
|
80
|
-
},
|
81
|
-
options: {
|
82
|
-
force_kyc: true
|
83
|
-
}
|
84
|
-
}
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_create_payment_response
|
88
|
-
{
|
89
|
-
token_id: 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef',
|
90
|
-
charge_id: 'ct_h5e599d3-0000-4d46-9a52-1a37e7b5b8ef',
|
91
|
-
payment_url: 'https://jamm-pay.com/K5e599d3-8b9e-4d46-9a72-1a37e7b5b8ef',
|
92
|
-
created_at: '2023-11-07T15:30:00.000+03:00'
|
93
|
-
}
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_charges
|
97
|
-
[test_charge]
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_charge
|
101
|
-
{
|
102
|
-
charge_id: 'ct_h5e599d3-0000-4d46-9a52-1a37e7b5b8ef',
|
103
|
-
contract_id: 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef',
|
104
|
-
status: 'CREATED',
|
105
|
-
description: 'Gold Gym',
|
106
|
-
amount: 1000,
|
107
|
-
amount_refunded: 800,
|
108
|
-
currency: 'JPY',
|
109
|
-
merchant_metadata: {
|
110
|
-
key1: 'value1',
|
111
|
-
key2: 'value2'
|
112
|
-
},
|
113
|
-
created_at: '2023-11-07T15:30:00.000+03:00',
|
114
|
-
updated_at: '2023-11-11T15:30:00.000+03:00'
|
115
|
-
}
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.join(File.join(File.dirname(__FILE__), '..'), 'lib'))
|
2
|
-
require 'test/unit'
|
3
|
-
require 'mocha/test_unit'
|
4
|
-
require 'stringio'
|
5
|
-
require 'jamm'
|
6
|
-
require File.expand_path('test_data', __dir__)
|
7
|
-
|
8
|
-
# monkeypatch request methods
|
9
|
-
module Jamm
|
10
|
-
@mock_rest_client = nil
|
11
|
-
|
12
|
-
class << self
|
13
|
-
attr_writer :mock_rest_client
|
14
|
-
|
15
|
-
remove_method :execute_request
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.execute_request(options)
|
19
|
-
get_params = (options[:headers] || {})[:params]
|
20
|
-
post_params = options[:payload]
|
21
|
-
case options[:method]
|
22
|
-
when :get then @mock_rest_client.get options[:url], get_params, post_params
|
23
|
-
when :post then @mock_rest_client.post options[:url], get_params, post_params
|
24
|
-
when :patch then @mock_rest_client.patch options[:url], get_params, post_params
|
25
|
-
when :delete then @mock_rest_client.delete options[:url], get_params, post_params
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
module Test
|
31
|
-
module Unit
|
32
|
-
class TestCase
|
33
|
-
include Jamm::TestData
|
34
|
-
include Mocha
|
35
|
-
|
36
|
-
class << self
|
37
|
-
alias context sub_test_case
|
38
|
-
alias should test
|
39
|
-
end
|
40
|
-
|
41
|
-
def encode_credentials(client_id, client_secret)
|
42
|
-
"Basic #{Base64.strict_encode64("#{client_id}:#{client_secret}")}"
|
43
|
-
end
|
44
|
-
|
45
|
-
setup do
|
46
|
-
@mock = mock
|
47
|
-
Jamm.mock_rest_client = @mock
|
48
|
-
Jamm.client_id = 'client id'
|
49
|
-
Jamm.client_secret = 'client secret'
|
50
|
-
end
|
51
|
-
|
52
|
-
teardown do
|
53
|
-
Jamm.mock_rest_client = nil
|
54
|
-
Jamm.client_id = nil
|
55
|
-
Jamm.client_secret = nil
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|