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.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -57
  3. data/.rubocop.yml +18 -25
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +99 -0
  6. data/README.md +4 -4
  7. data/Rakefile +2 -0
  8. data/jamm.gemspec +16 -3
  9. data/lib/jamm/api/api/customer_api.rb +265 -0
  10. data/lib/jamm/api/api/healthcheck_api.rb +76 -0
  11. data/lib/jamm/api/api/payment_api.rb +203 -0
  12. data/lib/jamm/api/api_client.rb +385 -0
  13. data/lib/jamm/api/api_error.rb +58 -0
  14. data/lib/jamm/api/configuration.rb +293 -0
  15. data/lib/jamm/api/models/customer_service_update_customer_body.rb +247 -0
  16. data/lib/jamm/api/models/protobuf_any.rb +209 -0
  17. data/lib/jamm/api/models/rpc_status.rb +218 -0
  18. data/lib/jamm/api/models/v1_buyer.rb +274 -0
  19. data/lib/jamm/api/models/v1_charge.rb +233 -0
  20. data/lib/jamm/api/models/v1_contract.rb +225 -0
  21. data/lib/jamm/api/models/v1_create_contract_with_charge_request.rb +217 -0
  22. data/lib/jamm/api/models/v1_create_contract_with_charge_response.rb +222 -0
  23. data/lib/jamm/api/models/v1_create_contract_without_charge_request.rb +212 -0
  24. data/lib/jamm/api/models/v1_create_contract_without_charge_response.rb +217 -0
  25. data/lib/jamm/api/models/v1_create_customer_request.rb +207 -0
  26. data/lib/jamm/api/models/v1_create_customer_response.rb +207 -0
  27. data/lib/jamm/api/models/v1_customer.rb +223 -0
  28. data/lib/jamm/api/models/v1_delete_customer_response.rb +207 -0
  29. data/lib/jamm/api/models/v1_get_contract_response.rb +212 -0
  30. data/lib/jamm/api/models/v1_get_customer_response.rb +207 -0
  31. data/lib/jamm/api/models/v1_initial_charge.rb +225 -0
  32. data/lib/jamm/api/models/v1_merchant.rb +212 -0
  33. data/lib/jamm/api/models/v1_merchant_customer.rb +213 -0
  34. data/lib/jamm/api/models/v1_payment_link.rb +221 -0
  35. data/lib/jamm/api/models/v1_ping_response.rb +207 -0
  36. data/lib/jamm/api/models/v1_update_customer_response.rb +207 -0
  37. data/lib/jamm/api/models/v1_url.rb +216 -0
  38. data/lib/jamm/api/version.rb +15 -0
  39. data/lib/jamm/api.rb +65 -0
  40. data/lib/jamm/client.rb +14 -0
  41. data/lib/jamm/customer.rb +28 -0
  42. data/lib/jamm/errors.rb +4 -14
  43. data/lib/jamm/oauth.rb +5 -5
  44. data/lib/jamm/payment.rb +19 -11
  45. data/lib/jamm/version.rb +3 -1
  46. data/lib/jamm.rb +37 -117
  47. metadata +62 -37
  48. data/.github/workflows/build.yml +0 -23
  49. data/.github/workflows/ruby-publish.yml +0 -24
  50. data/CONTRIBUTORS +0 -1
  51. data/images/jamm_logo.png +0 -0
  52. data/lib/jamm/api_operations/create.rb +0 -16
  53. data/lib/jamm/api_operations/get.rb +0 -16
  54. data/lib/jamm/api_operations/list.rb +0 -16
  55. data/lib/jamm/api_operations/update.rb +0 -16
  56. data/lib/jamm/api_resource.rb +0 -5
  57. data/lib/jamm/charge.rb +0 -10
  58. data/lib/jamm/jamm_object.rb +0 -249
  59. data/lib/jamm/request.rb +0 -13
  60. data/lib/jamm/time_util.rb +0 -41
  61. data/lib/jamm/token.rb +0 -10
  62. data/lib/jamm/util.rb +0 -76
  63. data/test/jamm/charge_test.rb +0 -56
  64. data/test/jamm/oauth_test.rb +0 -47
  65. data/test/jamm/payment_test.rb +0 -17
  66. data/test/jamm/time_util_test.rb +0 -18
  67. data/test/jamm/token_test.rb +0 -52
  68. data/test/test_data.rb +0 -118
  69. data/test/test_helper.rb +0 -59
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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