judopay 2.1.0 → 2.1.3

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 (122) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +24 -23
  3. data/.rspec +1 -1
  4. data/.rubocop.yml +54 -51
  5. data/.travis.yml +6 -6
  6. data/CHANGELOG.md +17 -17
  7. data/Gemfile +4 -4
  8. data/LICENSE +21 -21
  9. data/README.md +96 -94
  10. data/Rakefile +22 -22
  11. data/judopay.gemspec +38 -38
  12. data/lib/certs/digicert_sha256_ca.pem +49 -49
  13. data/lib/certs/rapidssl_ca.crt +63 -63
  14. data/lib/faraday/judo_mashify.rb +11 -11
  15. data/lib/faraday/raise_http_exception.rb +19 -19
  16. data/lib/judopay.rb +70 -70
  17. data/lib/judopay/api.rb +10 -10
  18. data/lib/judopay/connection.rb +77 -77
  19. data/lib/judopay/core_ext/hash.rb +29 -29
  20. data/lib/judopay/core_ext/string.rb +32 -32
  21. data/lib/judopay/error.rb +117 -115
  22. data/lib/judopay/mash.rb +11 -11
  23. data/lib/judopay/model.rb +134 -134
  24. data/lib/judopay/models/android_payment.rb +26 -26
  25. data/lib/judopay/models/android_preauth.rb +8 -8
  26. data/lib/judopay/models/apple_payment.rb +26 -26
  27. data/lib/judopay/models/apple_preauth.rb +9 -9
  28. data/lib/judopay/models/card_address.rb +11 -11
  29. data/lib/judopay/models/card_payment.rb +33 -33
  30. data/lib/judopay/models/card_preauth.rb +11 -11
  31. data/lib/judopay/models/collection.rb +16 -16
  32. data/lib/judopay/models/encrypt_details.rb +18 -0
  33. data/lib/judopay/models/inner/pk_payment.rb +17 -17
  34. data/lib/judopay/models/inner/pk_payment_token.rb +13 -13
  35. data/lib/judopay/models/inner/transmitted_field.rb +39 -39
  36. data/lib/judopay/models/inner/wallet.rb +30 -30
  37. data/lib/judopay/models/market/collection.rb +10 -10
  38. data/lib/judopay/models/market/payment.rb +10 -10
  39. data/lib/judopay/models/market/preauth.rb +10 -10
  40. data/lib/judopay/models/market/refund.rb +10 -10
  41. data/lib/judopay/models/market/transaction.rb +10 -10
  42. data/lib/judopay/models/one_use_token_payment.rb +29 -0
  43. data/lib/judopay/models/payment.rb +8 -8
  44. data/lib/judopay/models/preauth.rb +8 -8
  45. data/lib/judopay/models/refund.rb +16 -16
  46. data/lib/judopay/models/register_card.rb +27 -27
  47. data/lib/judopay/models/save_card.rb +24 -25
  48. data/lib/judopay/models/token_payment.rb +30 -30
  49. data/lib/judopay/models/token_preauth.rb +10 -10
  50. data/lib/judopay/models/transaction.rb +8 -8
  51. data/lib/judopay/models/void.rb +19 -19
  52. data/lib/judopay/models/web_payments/payment.rb +28 -28
  53. data/lib/judopay/models/web_payments/preauth.rb +10 -10
  54. data/lib/judopay/models/web_payments/transaction.rb +19 -19
  55. data/lib/judopay/models/web_payments/web_payment_operation.rb +8 -8
  56. data/lib/judopay/null_logger.rb +9 -11
  57. data/lib/judopay/request.rb +50 -50
  58. data/lib/judopay/response.rb +7 -7
  59. data/lib/judopay/serializer.rb +27 -27
  60. data/lib/judopay/version.rb +4 -4
  61. data/spec/factories.rb +227 -208
  62. data/spec/faraday/response_spec.rb +27 -27
  63. data/spec/fixtures/card_payments/create.json +21 -21
  64. data/spec/fixtures/card_payments/create_3dsecure.json +7 -7
  65. data/spec/fixtures/card_payments/create_bad_request.json +12 -12
  66. data/spec/fixtures/card_payments/create_declined.json +23 -23
  67. data/spec/fixtures/card_payments/validate.json +4 -4
  68. data/spec/fixtures/token_payments/create.json +21 -21
  69. data/spec/fixtures/transactions/all.json +237 -237
  70. data/spec/fixtures/transactions/android_payment.json +26 -26
  71. data/spec/fixtures/transactions/apple_payment.json +26 -26
  72. data/spec/fixtures/transactions/find.json +22 -22
  73. data/spec/fixtures/transactions/find_not_found.json +4 -4
  74. data/spec/fixtures/transactions/register_card.json +28 -28
  75. data/spec/fixtures/transactions/save_card.json +27 -27
  76. data/spec/fixtures/transactions/void.json +26 -26
  77. data/spec/fixtures/web_payments/payments/create.json +3 -3
  78. data/spec/fixtures/web_payments/payments/find.json +38 -38
  79. data/spec/judopay/android_payment_spec.rb +74 -74
  80. data/spec/judopay/apple_payment_spec.rb +80 -80
  81. data/spec/judopay/card_address_spec.rb +10 -10
  82. data/spec/judopay/card_payment_spec.rb +51 -63
  83. data/spec/judopay/card_preauth_spec.rb +35 -35
  84. data/spec/judopay/collection_spec.rb +26 -26
  85. data/spec/judopay/core_ext/hash_spec.rb +24 -24
  86. data/spec/judopay/core_ext/string_spec.rb +16 -16
  87. data/spec/judopay/error_spec.rb +70 -70
  88. data/spec/judopay/judopay_spec.rb +19 -19
  89. data/spec/judopay/market/collection_spec.rb +26 -26
  90. data/spec/judopay/market/payment_spec.rb +14 -14
  91. data/spec/judopay/market/preauth_spec.rb +14 -14
  92. data/spec/judopay/market/refund_spec.rb +26 -26
  93. data/spec/judopay/market/transaction_spec.rb +14 -14
  94. data/spec/judopay/payment_spec.rb +14 -14
  95. data/spec/judopay/preauth_spec.rb +14 -14
  96. data/spec/judopay/refund_spec.rb +26 -26
  97. data/spec/judopay/register_card_spec.rb +24 -24
  98. data/spec/judopay/save_card_spec.rb +23 -23
  99. data/spec/judopay/token_payment_spec.rb +22 -22
  100. data/spec/judopay/token_preauth_spec.rb +22 -22
  101. data/spec/judopay/transaction_spec.rb +51 -51
  102. data/spec/judopay/void_spec.rb +24 -24
  103. data/spec/judopay/web_payments/payment_spec.rb +16 -16
  104. data/spec/judopay/web_payments/preauth_spec.rb +16 -16
  105. data/spec/judopay/web_payments/transaction_spec.rb +15 -15
  106. data/spec/spec_helper.rb +41 -41
  107. data/test/additions_payment_test.rb +30 -0
  108. data/test/authentication_test.rb +23 -23
  109. data/test/base/integration_base.rb +20 -20
  110. data/test/base/payments_tests.rb +47 -47
  111. data/test/base/token_payment_tests.rb +98 -98
  112. data/test/card_details_test.rb +21 -21
  113. data/test/configuration_test.rb +35 -35
  114. data/test/helper/assertion_helper.rb +29 -29
  115. data/test/payment_test.rb +10 -10
  116. data/test/preauth_test.rb +10 -10
  117. data/test/register_card_test.rb +42 -42
  118. data/test/save_card_test.rb +23 -0
  119. data/test/token_payment_test.rb +10 -10
  120. data/test/token_preauth_test.rb +10 -10
  121. data/test/void_test.rb +45 -45
  122. metadata +18 -12
@@ -1,33 +1,33 @@
1
- require_relative '../model'
2
- require_relative 'payment'
3
- require_relative 'card_address'
4
-
5
- module Judopay
6
- class CardPayment < Model
7
- @resource_path = 'transactions/payments'
8
- @valid_api_methods = [:create, :validate]
9
-
10
- attribute :your_consumer_reference, String # required
11
- attribute :your_payment_reference, String # required
12
- attribute :your_payment_meta_data, Hash
13
- attribute :judo_id, String # required
14
- attribute :amount, Float # required
15
- attribute :card_number, String # required for card transactions
16
- attribute :expiry_date, String # required for card transactions
17
- attribute :cv2, String # required for card transactions
18
- attribute :card_address, Judopay::CardAddress
19
- attribute :mobile_number, String
20
- attribute :email_address, String
21
- attribute :currency, String
22
- attribute :client_details, Hash
23
-
24
- validates_presence_of :your_consumer_reference,
25
- :your_payment_reference,
26
- :judo_id,
27
- :amount,
28
- :card_number,
29
- :expiry_date,
30
- :cv2,
31
- :currency
32
- end
33
- end
1
+ require_relative '../model'
2
+ require_relative 'payment'
3
+ require_relative 'card_address'
4
+
5
+ module Judopay
6
+ class CardPayment < Model
7
+ @resource_path = 'transactions/payments'
8
+ @valid_api_methods = [:create]
9
+
10
+ attribute :your_consumer_reference, String # required
11
+ attribute :your_payment_reference, String # required
12
+ attribute :your_payment_meta_data, Hash
13
+ attribute :judo_id, String # required
14
+ attribute :amount, Float # required
15
+ attribute :card_number, String # required for card transactions
16
+ attribute :expiry_date, String # required for card transactions
17
+ attribute :cv2, String # required for card transactions
18
+ attribute :card_address, Judopay::CardAddress
19
+ attribute :mobile_number, String
20
+ attribute :email_address, String
21
+ attribute :currency, String
22
+ attribute :client_details, Hash
23
+
24
+ validates_presence_of :your_consumer_reference,
25
+ :your_payment_reference,
26
+ :judo_id,
27
+ :amount,
28
+ :card_number,
29
+ :expiry_date,
30
+ :cv2,
31
+ :currency
32
+ end
33
+ end
@@ -1,11 +1,11 @@
1
- require_relative '../model'
2
- require_relative 'payment'
3
- require_relative 'card_address'
4
-
5
- module Judopay
6
- # Inherit from CardPayment - attributes are identical
7
- class CardPreauth < CardPayment
8
- @resource_path = 'transactions/preauths'
9
- @valid_api_methods = [:create, :validate]
10
- end
11
- end
1
+ require_relative '../model'
2
+ require_relative 'payment'
3
+ require_relative 'card_address'
4
+
5
+ module Judopay
6
+ # Inherit from CardPayment - attributes are identical
7
+ class CardPreauth < CardPayment
8
+ @resource_path = 'transactions/preauths'
9
+ @valid_api_methods = [:create]
10
+ end
11
+ end
@@ -1,16 +1,16 @@
1
- require_relative '../model'
2
-
3
- module Judopay
4
- class Collection < Model
5
- @resource_path = 'transactions/collections'
6
- @valid_api_methods = [:all, :create, :validate]
7
-
8
- attribute :receipt_id, Integer
9
- attribute :amount, Float
10
- attribute :your_payment_reference, String
11
-
12
- validates_presence_of :receipt_id,
13
- :amount,
14
- :your_payment_reference
15
- end
16
- end
1
+ require_relative '../model'
2
+
3
+ module Judopay
4
+ class Collection < Model
5
+ @resource_path = 'transactions/collections'
6
+ @valid_api_methods = [:all, :create]
7
+
8
+ attribute :receipt_id, Integer
9
+ attribute :amount, Float
10
+ attribute :your_payment_reference, String
11
+
12
+ validates_presence_of :receipt_id,
13
+ :amount,
14
+ :your_payment_reference
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../model'
2
+
3
+ module Judopay
4
+ class EncryptDetails < Model
5
+ @resource_path = 'encryptions/paymentDetails'
6
+ @valid_api_methods = [:create]
7
+
8
+ attribute :judo_id, String
9
+ attribute :card_number, String
10
+ attribute :expiry_date, String
11
+ attribute :cv2, String
12
+
13
+ validates_presence_of :judo_id,
14
+ :card_number,
15
+ :expiry_date,
16
+ :cv2
17
+ end
18
+ end
@@ -1,17 +1,17 @@
1
- require_relative 'transmitted_field'
2
- require_relative 'pk_payment_token'
3
-
4
- module Judopay
5
- class PkPayment < TransmittedField
6
- attribute :token, Judopay::PkPaymentToken
7
- attribute :billing_address, String
8
- attribute :shipping_address, String
9
-
10
- validate_nested_model :token
11
-
12
- def self.new(*args)
13
- self.field_name = 'pk_payment'
14
- super(*args)
15
- end
16
- end
17
- end
1
+ require_relative 'transmitted_field'
2
+ require_relative 'pk_payment_token'
3
+
4
+ module Judopay
5
+ class PkPayment < TransmittedField
6
+ attribute :token, Judopay::PkPaymentToken
7
+ attribute :billing_address, String
8
+ attribute :shipping_address, String
9
+
10
+ validate_nested_model :token
11
+
12
+ def self.new(*args)
13
+ self.field_name = 'pk_payment'
14
+ super(*args)
15
+ end
16
+ end
17
+ end
@@ -1,13 +1,13 @@
1
- require_relative '../../model'
2
-
3
- module Judopay
4
- class PkPaymentToken < Model
5
- attribute :payment_instrument_name, String
6
- attribute :payment_network, String
7
- attribute :payment_data, Hash
8
-
9
- validates_presence_of :payment_instrument_name,
10
- :payment_network,
11
- :payment_data
12
- end
13
- end
1
+ require_relative '../../model'
2
+
3
+ module Judopay
4
+ class PkPaymentToken < Model
5
+ attribute :payment_instrument_name, String
6
+ attribute :payment_network, String
7
+ attribute :payment_data, Hash
8
+
9
+ validates_presence_of :payment_instrument_name,
10
+ :payment_network,
11
+ :payment_data
12
+ end
13
+ end
@@ -1,39 +1,39 @@
1
- require_relative '../../model'
2
- require 'judopay/mash'
3
- require 'json'
4
-
5
- module Judopay
6
- class TransmittedField < Model
7
- WRONG_OBJECT_ERROR_MESSAGE = 'You passed wrong value to the %s. Please pass Hash or json-encoded string'.freeze
8
- WRONG_JSON_ERROR_MESSAGE = 'Can\'t decode %s object from JSON'.freeze
9
-
10
- class << self
11
- attr_accessor :field_name
12
-
13
- def new(*args)
14
- super(validate_data(*args))
15
- end
16
-
17
- protected
18
-
19
- def validate_data(data)
20
- data = parse_string(data) if data.is_a?(String)
21
- raise Judopay::ValidationError, format(WRONG_OBJECT_ERROR_MESSAGE, name) unless data.is_a?(Hash) || data.is_a?(Judopay::Mash)
22
- data = Judopay::Mash.new(data)
23
- data = data[field_name] if data.key?(field_name)
24
-
25
- data
26
- end
27
-
28
- def parse_string(string)
29
- JSON.parse(string)
30
- rescue
31
- raise Judopay::ValidationError, format(WRONG_JSON_ERROR_MESSAGE, name)
32
- end
33
- end
34
-
35
- def ==(other)
36
- to_yaml == other.to_yaml
37
- end
38
- end
39
- end
1
+ require_relative '../../model'
2
+ require 'judopay/mash'
3
+ require 'json'
4
+
5
+ module Judopay
6
+ class TransmittedField < Model
7
+ WRONG_OBJECT_ERROR_MESSAGE = 'You passed wrong value to the %<foo>s. Please pass Hash or json-encoded string'.freeze
8
+ WRONG_JSON_ERROR_MESSAGE = 'Can\'t decode %<foo>s object from JSON'.freeze
9
+
10
+ class << self
11
+ attr_accessor :field_name
12
+
13
+ def new(*args)
14
+ super(validate_data(*args))
15
+ end
16
+
17
+ protected
18
+
19
+ def validate_data(data)
20
+ data = parse_string(data) if data.is_a?(String)
21
+ raise Judopay::ValidationError, format(WRONG_OBJECT_ERROR_MESSAGE, :foo => name) unless data.is_a?(Hash) || data.is_a?(Judopay::Mash)
22
+ data = Judopay::Mash.new(data)
23
+ data = data[field_name] if data.key?(field_name)
24
+
25
+ data
26
+ end
27
+
28
+ def parse_string(string)
29
+ JSON.parse(string)
30
+ rescue StandardError
31
+ raise Judopay::ValidationError, format(WRONG_JSON_ERROR_MESSAGE, :foo => name)
32
+ end
33
+ end
34
+
35
+ def ==(other)
36
+ to_yaml == other.to_yaml
37
+ end
38
+ end
39
+ end
@@ -1,30 +1,30 @@
1
- require_relative 'transmitted_field'
2
-
3
- module Judopay
4
- class Wallet < TransmittedField
5
- attribute :encrypted_message, String
6
- attribute :environment, Integer
7
- attribute :ephemeral_public_key, String
8
- attribute :google_transaction_id, String
9
- attribute :instrument_details, String
10
- attribute :instrument_type, String
11
- attribute :public_key, String
12
- attribute :tag, String
13
- attribute :version, Integer
14
-
15
- validates_presence_of :encrypted_message,
16
- :environment,
17
- :ephemeral_public_key,
18
- :google_transaction_id,
19
- :instrument_details,
20
- :instrument_type,
21
- :public_key,
22
- :tag,
23
- :version
24
-
25
- def self.new(*args)
26
- self.field_name = 'wallet'
27
- super(*args)
28
- end
29
- end
30
- end
1
+ require_relative 'transmitted_field'
2
+
3
+ module Judopay
4
+ class Wallet < TransmittedField
5
+ attribute :encrypted_message, String
6
+ attribute :environment, Integer
7
+ attribute :ephemeral_public_key, String
8
+ attribute :google_transaction_id, String
9
+ attribute :instrument_details, String
10
+ attribute :instrument_type, String
11
+ attribute :public_key, String
12
+ attribute :tag, String
13
+ attribute :version, Integer
14
+
15
+ validates_presence_of :encrypted_message,
16
+ :environment,
17
+ :ephemeral_public_key,
18
+ :google_transaction_id,
19
+ :instrument_details,
20
+ :instrument_type,
21
+ :public_key,
22
+ :tag,
23
+ :version
24
+
25
+ def self.new(*args)
26
+ self.field_name = 'wallet'
27
+ super(*args)
28
+ end
29
+ end
30
+ end
@@ -1,10 +1,10 @@
1
- require_relative '../../model'
2
-
3
- module Judopay
4
- module Market
5
- class Collection < Judopay::Collection
6
- @resource_path = 'market/transactions/collections'
7
- @valid_api_methods = [:all, :create]
8
- end
9
- end
10
- end
1
+ require_relative '../../model'
2
+
3
+ module Judopay
4
+ module Market
5
+ class Collection < Judopay::Collection
6
+ @resource_path = 'market/transactions/collections'
7
+ @valid_api_methods = [:all, :create]
8
+ end
9
+ end
10
+ end
@@ -1,10 +1,10 @@
1
- require_relative '../../model'
2
-
3
- module Judopay
4
- module Market
5
- class Payment < Model
6
- @resource_path = 'market/transactions/payments'
7
- @valid_api_methods = [:all]
8
- end
9
- end
10
- end
1
+ require_relative '../../model'
2
+
3
+ module Judopay
4
+ module Market
5
+ class Payment < Model
6
+ @resource_path = 'market/transactions/payments'
7
+ @valid_api_methods = [:all]
8
+ end
9
+ end
10
+ end
@@ -1,10 +1,10 @@
1
- require_relative '../../model'
2
-
3
- module Judopay
4
- module Market
5
- class Preauth < Model
6
- @resource_path = 'market/transactions/preauths'
7
- @valid_api_methods = [:all]
8
- end
9
- end
10
- end
1
+ require_relative '../../model'
2
+
3
+ module Judopay
4
+ module Market
5
+ class Preauth < Model
6
+ @resource_path = 'market/transactions/preauths'
7
+ @valid_api_methods = [:all]
8
+ end
9
+ end
10
+ end
@@ -1,10 +1,10 @@
1
- require_relative '../../model'
2
-
3
- module Judopay
4
- module Market
5
- class Refund < Judopay::Refund
6
- @resource_path = 'market/transactions/refunds'
7
- @valid_api_methods = [:all, :create]
8
- end
9
- end
10
- end
1
+ require_relative '../../model'
2
+
3
+ module Judopay
4
+ module Market
5
+ class Refund < Judopay::Refund
6
+ @resource_path = 'market/transactions/refunds'
7
+ @valid_api_methods = [:all, :create]
8
+ end
9
+ end
10
+ end
@@ -1,10 +1,10 @@
1
- require_relative '../../model'
2
-
3
- module Judopay
4
- module Market
5
- class Transaction < Model
6
- @resource_path = 'market/transactions'
7
- @valid_api_methods = [:all]
8
- end
9
- end
10
- end
1
+ require_relative '../../model'
2
+
3
+ module Judopay
4
+ module Market
5
+ class Transaction < Model
6
+ @resource_path = 'market/transactions'
7
+ @valid_api_methods = [:all]
8
+ end
9
+ end
10
+ end