solidus_paypal_braintree 0.4.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.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +40 -0
  3. data/.gem_release.yml +5 -0
  4. data/.github/stale.yml +17 -0
  5. data/.gitignore +18 -0
  6. data/.rspec +2 -0
  7. data/.rubocop.yml +68 -0
  8. data/CHANGELOG.md +258 -0
  9. data/Gemfile +43 -0
  10. data/LICENSE +2 -2
  11. data/README.md +77 -23
  12. data/Rakefile +4 -25
  13. data/app/assets/javascripts/solidus_paypal_braintree/checkout.js +32 -3
  14. data/app/assets/javascripts/solidus_paypal_braintree/client.js +23 -4
  15. data/app/assets/javascripts/solidus_paypal_braintree/constants.js +19 -0
  16. data/app/assets/javascripts/solidus_paypal_braintree/frontend.js +1 -0
  17. data/app/assets/javascripts/solidus_paypal_braintree/hosted_form.js +15 -5
  18. data/app/assets/javascripts/solidus_paypal_braintree/paypal_button.js +47 -20
  19. data/app/assets/javascripts/solidus_paypal_braintree/paypal_messaging.js +22 -0
  20. data/app/decorators/controllers/solidus_paypal_braintree/admin_payments_controller_decorator.rb +11 -0
  21. data/app/decorators/controllers/solidus_paypal_braintree/checkout_controller_decorator.rb +11 -0
  22. data/app/decorators/controllers/solidus_paypal_braintree/client_tokens_controller.rb +41 -0
  23. data/app/decorators/controllers/solidus_paypal_braintree/orders_controller_decorator.rb +11 -0
  24. data/app/decorators/models/solidus_paypal_braintree/spree/store_decorator.rb +20 -0
  25. data/app/decorators/models/solidus_paypal_braintree/spree/user_decorator.rb +13 -0
  26. data/app/helpers/solidus_paypal_braintree/braintree_admin_helper.rb +23 -0
  27. data/app/helpers/solidus_paypal_braintree/braintree_checkout_helper.rb +46 -0
  28. data/app/models/application_record.rb +2 -0
  29. data/app/models/solidus_paypal_braintree/address.rb +30 -0
  30. data/app/models/solidus_paypal_braintree/configuration.rb +26 -3
  31. data/app/models/solidus_paypal_braintree/customer.rb +7 -3
  32. data/app/models/solidus_paypal_braintree/gateway.rb +52 -20
  33. data/app/models/solidus_paypal_braintree/response.rb +3 -2
  34. data/app/models/solidus_paypal_braintree/source.rb +21 -7
  35. data/app/models/solidus_paypal_braintree/transaction.rb +2 -0
  36. data/app/models/solidus_paypal_braintree/transaction_address.rb +30 -12
  37. data/app/models/solidus_paypal_braintree/transaction_import.rb +13 -9
  38. data/app/views/spree/api/payments/source_views/_paypal_braintree.json.jbuilder +3 -0
  39. data/app/views/spree/checkout/existing_payment/_paypal_braintree.html.erb +10 -0
  40. data/app/views/spree/shared/_apple_pay_button.html.erb +2 -2
  41. data/app/views/spree/shared/_braintree_errors.html.erb +11 -17
  42. data/app/views/spree/shared/_braintree_hosted_fields.html.erb +24 -9
  43. data/app/views/spree/shared/_paypal_braintree_head_scripts.html.erb +9 -6
  44. data/app/views/spree/shared/_paypal_cart_button.html.erb +16 -2
  45. data/app/views/spree/shared/_paypal_messaging.html.erb +13 -0
  46. data/bin/console +17 -0
  47. data/bin/rails +15 -0
  48. data/bin/setup +8 -0
  49. data/config/locales/en.yml +10 -0
  50. data/config/locales/it.yml +51 -8
  51. data/config/routes.rb +2 -0
  52. data/db/migrate/20160906201711_create_solidus_paypal_braintree_customers.rb +3 -1
  53. data/db/migrate/20161125172005_add_braintree_configuration_to_stores.rb +5 -7
  54. data/db/migrate/20170505193712_add_null_constraint_to_sources.rb +3 -1
  55. data/db/migrate/20190705115327_add_paypal_button_preferences_to_braintree_configurations.rb +5 -0
  56. data/db/migrate/20190911141712_add_3d_secure_to_braintree_configuration.rb +5 -0
  57. data/lib/controllers/backend/solidus_paypal_braintree/configurations_controller.rb +20 -5
  58. data/lib/controllers/frontend/solidus_paypal_braintree/checkouts_controller.rb +25 -21
  59. data/lib/controllers/frontend/solidus_paypal_braintree/transactions_controller.rb +55 -51
  60. data/lib/generators/solidus_paypal_braintree/install/install_generator.rb +7 -5
  61. data/lib/solidus_paypal_braintree.rb +4 -0
  62. data/lib/solidus_paypal_braintree/country_mapper.rb +4 -2
  63. data/lib/solidus_paypal_braintree/engine.rb +11 -11
  64. data/lib/solidus_paypal_braintree/factories.rb +8 -4
  65. data/lib/solidus_paypal_braintree/request_protection.rb +3 -0
  66. data/lib/solidus_paypal_braintree/version.rb +3 -1
  67. data/lib/views/backend/solidus_paypal_braintree/configurations/list.html.erb +30 -5
  68. data/lib/views/backend/spree/admin/payments/source_forms/_paypal_braintree.html.erb +2 -2
  69. data/lib/views/backend/spree/admin/payments/source_views/_paypal_braintree.html.erb +2 -2
  70. data/lib/views/backend_v1.2/spree/admin/payments/source_forms/_paypal_braintree.html.erb +2 -2
  71. data/lib/views/frontend/spree/checkout/payment/_paypal_braintree.html.erb +4 -2
  72. data/lib/views/frontend/spree/shared/_paypal_checkout_button.html.erb +30 -0
  73. data/solidus_paypal_braintree.gemspec +42 -0
  74. data/spec/controllers/solidus_paypal_braintree/checkouts_controller_spec.rb +99 -0
  75. data/spec/controllers/solidus_paypal_braintree/client_tokens_controller_spec.rb +55 -0
  76. data/spec/controllers/solidus_paypal_braintree/configurations_controller_spec.rb +73 -0
  77. data/spec/controllers/solidus_paypal_braintree/transactions_controller_spec.rb +183 -0
  78. data/spec/features/backend/configuration_spec.rb +23 -0
  79. data/spec/features/backend/new_payment_spec.rb +137 -0
  80. data/spec/features/frontend/braintree_credit_card_checkout_spec.rb +187 -0
  81. data/spec/features/frontend/paypal_checkout_spec.rb +166 -0
  82. data/spec/fixtures/cassettes/admin/invalid_credit_card.yml +63 -0
  83. data/spec/fixtures/cassettes/admin/resubmit_credit_card.yml +352 -0
  84. data/spec/fixtures/cassettes/admin/valid_credit_card.yml +412 -0
  85. data/spec/fixtures/cassettes/braintree/create_profile.yml +71 -0
  86. data/spec/fixtures/cassettes/braintree/generate_token.yml +63 -0
  87. data/spec/fixtures/cassettes/braintree/token.yml +63 -0
  88. data/spec/fixtures/cassettes/checkout/invalid_credit_card.yml +63 -0
  89. data/spec/fixtures/cassettes/checkout/resubmit_credit_card.yml +216 -0
  90. data/spec/fixtures/cassettes/checkout/update.yml +71 -0
  91. data/spec/fixtures/cassettes/checkout/valid_credit_card.yml +156 -0
  92. data/spec/fixtures/cassettes/gateway/authorize.yml +86 -0
  93. data/spec/fixtures/cassettes/gateway/authorize/credit_card/address.yml +86 -0
  94. data/spec/fixtures/cassettes/gateway/authorize/merchant_account/EUR.yml +154 -0
  95. data/spec/fixtures/cassettes/gateway/authorize/paypal/EUR.yml +90 -0
  96. data/spec/fixtures/cassettes/gateway/authorize/paypal/address.yml +90 -0
  97. data/spec/fixtures/cassettes/gateway/authorized_transaction.yml +73 -0
  98. data/spec/fixtures/cassettes/gateway/cancel/missing.yml +63 -0
  99. data/spec/fixtures/cassettes/gateway/cancel/refunds.yml +272 -0
  100. data/spec/fixtures/cassettes/gateway/cancel/void.yml +201 -0
  101. data/spec/fixtures/cassettes/gateway/capture.yml +141 -0
  102. data/spec/fixtures/cassettes/gateway/complete.yml +157 -0
  103. data/spec/fixtures/cassettes/gateway/credit.yml +208 -0
  104. data/spec/fixtures/cassettes/gateway/purchase.yml +87 -0
  105. data/spec/fixtures/cassettes/gateway/settled_transaction.yml +140 -0
  106. data/spec/fixtures/cassettes/gateway/void.yml +137 -0
  107. data/spec/fixtures/cassettes/source/card_type.yml +267 -0
  108. data/spec/fixtures/cassettes/source/last4.yml +267 -0
  109. data/spec/fixtures/cassettes/transaction/import/valid.yml +71 -0
  110. data/spec/fixtures/cassettes/transaction/import/valid/capture.yml +224 -0
  111. data/spec/fixtures/views/spree/orders/edit.html.erb +50 -0
  112. data/spec/helpers/solidus_paypal_braintree/braintree_admin_helper_spec.rb +17 -0
  113. data/spec/models/solidus_paypal_braintree/address_spec.rb +51 -0
  114. data/spec/models/solidus_paypal_braintree/avs_result_spec.rb +317 -0
  115. data/spec/models/solidus_paypal_braintree/gateway_spec.rb +692 -0
  116. data/spec/models/solidus_paypal_braintree/response_spec.rb +280 -0
  117. data/spec/models/solidus_paypal_braintree/source_spec.rb +360 -0
  118. data/spec/models/solidus_paypal_braintree/transaction_address_spec.rb +253 -0
  119. data/spec/models/solidus_paypal_braintree/transaction_import_spec.rb +283 -0
  120. data/spec/models/solidus_paypal_braintree/transaction_spec.rb +85 -0
  121. data/spec/models/spree/store_spec.rb +14 -0
  122. data/spec/requests/spree/api/orders_controller_spec.rb +36 -0
  123. data/spec/spec_helper.rb +26 -0
  124. data/spec/support/capybara.rb +7 -0
  125. data/spec/support/factories.rb +2 -0
  126. data/spec/support/gateway_helpers.rb +29 -0
  127. data/spec/support/order_ready_for_payment.rb +37 -0
  128. data/spec/support/vcr.rb +42 -0
  129. data/spec/support/views.rb +1 -0
  130. metadata +182 -194
  131. data/app/controllers/solidus_paypal_braintree/client_tokens_controller.rb +0 -22
  132. data/app/helpers/braintree_admin_helper.rb +0 -18
  133. data/app/models/spree/store_decorator.rb +0 -11
  134. data/app/views/spree/shared/_paypal_checkout_button.html.erb +0 -27
  135. data/config/initializers/braintree.rb +0 -1
@@ -0,0 +1,85 @@
1
+ require 'spec_helper'
2
+
3
+ describe SolidusPaypalBraintree::Transaction do
4
+ describe "#valid?" do
5
+ subject { transaction.valid? }
6
+
7
+ let(:valid_attributes) do
8
+ {
9
+ nonce: 'abcde-fghjkl-lmnop',
10
+ payment_method: SolidusPaypalBraintree::Gateway.new,
11
+ payment_type: 'ApplePayCard',
12
+ email: "test@example.com"
13
+ }
14
+ end
15
+ let(:valid_address_attributes) do
16
+ {
17
+ address_attributes: {
18
+ name: "Bruce Wayne",
19
+ address_line_1: "42 Spruce Lane",
20
+ city: "Gotham",
21
+ zip: "98201",
22
+ state_code: "WA",
23
+ country_code: "US"
24
+ }
25
+ }
26
+ end
27
+ let(:transaction) { described_class.new(valid_attributes) }
28
+
29
+ before do
30
+ create(:country, iso: "US")
31
+ end
32
+
33
+ it { is_expected.to be true }
34
+
35
+ context 'without nonce' do
36
+ let(:valid_attributes) { super().except(:nonce) }
37
+
38
+ it { is_expected.to be false }
39
+ end
40
+
41
+ context 'without gateway' do
42
+ let(:valid_attributes) { super().except(:payment_method) }
43
+
44
+ it { is_expected.to be false }
45
+ end
46
+
47
+ context 'with bad gateway' do
48
+ let(:valid_attributes) { super().merge(payment_method: Spree::PaymentMethod.new) }
49
+
50
+ it { is_expected.to be false }
51
+ end
52
+
53
+ context 'without payment_type' do
54
+ let(:valid_attributes) { super().except(:payment_type) }
55
+
56
+ it { is_expected.to be false }
57
+ end
58
+
59
+ context 'without email' do
60
+ let(:valid_attributes) { super().except(:email) }
61
+
62
+ it { is_expected.to be false }
63
+ end
64
+
65
+ context "with valid address" do
66
+ let(:valid_attributes) { super().merge(valid_address_attributes) }
67
+
68
+ it { is_expected.to be true }
69
+ end
70
+
71
+ context "with invalid address" do
72
+ let(:valid_attributes) { super().merge(valid_address_attributes) }
73
+
74
+ before { valid_address_attributes[:address_attributes][:zip] = nil }
75
+
76
+ it { is_expected.to be false }
77
+
78
+ it "sets useful error messages" do
79
+ transaction.valid?
80
+ expect(transaction.errors.full_messages).
81
+ to eq ["Address zip can't be blank"]
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Store do
4
+ describe 'before_create :build_default_configuration' do
5
+ context 'when a braintree_configuration record already exists' do
6
+ it 'does not overwrite it' do
7
+ store = build(:store)
8
+ custom_braintree_configuration = store.build_braintree_configuration
9
+ store.save!
10
+ expect(store.braintree_configuration).to be custom_braintree_configuration
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Api::OrdersController, type: :request do
4
+ stub_authorization!
5
+
6
+ describe 'get show' do
7
+ let(:gateway) { create_gateway }
8
+ let(:order) { create(:order_with_line_items) }
9
+ let(:source) do
10
+ SolidusPaypalBraintree::Source.new(
11
+ nonce: 'fake-valid-nonce',
12
+ user: order.user,
13
+ payment_type: SolidusPaypalBraintree::Source::PAYPAL,
14
+ payment_method: gateway
15
+ )
16
+ end
17
+
18
+ context 'when using braintree as the payment' do
19
+ before do
20
+ allow_any_instance_of(Spree::Payment).to receive(:create_payment_profile).and_return(true)
21
+
22
+ order.payments.create!(
23
+ payment_method: gateway,
24
+ source: source,
25
+ amount: 55
26
+ )
27
+ end
28
+
29
+ it "can be rendered correctly" do
30
+ get "/api/orders/#{order.number}"
31
+
32
+ expect(response.status).to eq 200
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Configure Rails Environment
4
+ ENV['RAILS_ENV'] ||= 'test'
5
+
6
+ # Run Coverage report
7
+ require 'solidus_dev_support/rspec/coverage'
8
+
9
+ require File.expand_path('dummy/config/environment.rb', __dir__)
10
+
11
+ # Requires factories and other useful helpers defined in spree_core.
12
+ require 'solidus_dev_support/rspec/feature_helper'
13
+
14
+ # Requires supporting ruby files with custom matchers and macros, etc,
15
+ # in spec/support/ and its subdirectories.
16
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].sort.each { |f| require f }
17
+
18
+ # Requires factories defined in lib/solidus_paypal_braintree/factories.rb
19
+ require 'solidus_paypal_braintree/factories'
20
+
21
+ RSpec.configure do |config|
22
+ config.infer_spec_type_from_file_location!
23
+ config.use_transactional_fixtures = false
24
+ config.raise_errors_for_deprecations!
25
+ config.example_status_persistence_file_path = "./spec/examples.txt"
26
+ end
@@ -0,0 +1,7 @@
1
+ RSpec.configure do |config|
2
+ config.before(:each, type: :feature, js: true) do
3
+ page.driver.browser.manage.window.resize_to(1600, 1024)
4
+ end
5
+ end
6
+
7
+ Capybara.javascript_driver = (ENV['CAPYBARA_DRIVER'] || :selenium_chrome).to_sym
@@ -0,0 +1,2 @@
1
+ # Requires factories defined in lib/solidus_paypal_braintree/factories.rb
2
+ require 'solidus_paypal_braintree/factories'
@@ -0,0 +1,29 @@
1
+ module SolidusPaypalBraintree
2
+ module GatewayHelpers
3
+ def new_gateway(opts = {})
4
+ SolidusPaypalBraintree::Gateway.new({
5
+ name: "Braintree",
6
+ preferences: {
7
+ environment: 'sandbox',
8
+ public_key: ENV.fetch('BRAINTREE_PUBLIC_KEY', 'dummy_public_key'),
9
+ private_key: ENV.fetch('BRAINTREE_PRIVATE_KEY', 'dummy_private_key'),
10
+ merchant_id: ENV.fetch('BRAINTREE_MERCHANT_ID', 'dummy_merchant_id'),
11
+ merchant_currency_map: {
12
+ 'EUR' => 'stembolt_EUR'
13
+ },
14
+ paypal_payee_email_map: {
15
+ 'EUR' => ENV.fetch('BRAINTREE_PAYPAL_PAYEE_EMAIL', 'paypal+europe@example.com')
16
+ }
17
+ }
18
+ }.merge(opts))
19
+ end
20
+
21
+ def create_gateway(opts = {})
22
+ new_gateway(opts).tap(&:save!)
23
+ end
24
+ end
25
+ end
26
+
27
+ RSpec.configure do |config|
28
+ config.include SolidusPaypalBraintree::GatewayHelpers
29
+ end
@@ -0,0 +1,37 @@
1
+ shared_context 'when order is ready for payment' do
2
+ let!(:country) { create :country }
3
+
4
+ let(:user) { create :user }
5
+ let(:address) { create :address, zipcode: "90210", lastname: "Doe", country: country }
6
+
7
+ before do
8
+ create :shipping_method, cost: 5
9
+ end
10
+
11
+ let(:gateway) do
12
+ new_gateway(auto_capture: true)
13
+ end
14
+
15
+ let(:order) do
16
+ order = Spree::Order.create!(
17
+ line_items: [create(:line_item, price: 50)],
18
+ email: 'test@example.com',
19
+ bill_address: address,
20
+ ship_address: address,
21
+ user: user
22
+ )
23
+ order.recalculate
24
+
25
+ expect(order.state).to eq "cart"
26
+
27
+ # push through cart, address and delivery
28
+ # its sadly unsafe to use any reasonable factory here accross
29
+ # supported solidus versions
30
+ order.next!
31
+ order.next!
32
+ order.next!
33
+
34
+ expect(order.state).to eq "payment"
35
+ order
36
+ end
37
+ end
@@ -0,0 +1,42 @@
1
+ require 'vcr'
2
+ require 'webmock'
3
+
4
+ VCR.configure do |c|
5
+ c.cassette_library_dir = "spec/fixtures/cassettes"
6
+ c.hook_into :webmock
7
+ c.configure_rspec_metadata!
8
+ c.default_cassette_options = {
9
+ match_requests_on: [:method, :uri, :body]
10
+ }
11
+ c.allow_http_connections_when_no_cassette = false
12
+ c.ignore_localhost = true
13
+ c.ignore_hosts 'chromedriver.storage.googleapis.com'
14
+
15
+ # client token used for the fronted JS lib cannot be mocked:
16
+ # it contains a cryptographically signed string containing the merchant id
17
+ # that's sent back to braintree's server by the JS lib
18
+ c.ignore_request do |request|
19
+ !(request.uri =~ %r{/merchants/\w+/client_token\z}).nil?
20
+ end
21
+
22
+ # match a request to Braintree sandbox APIs by ignoring the merchant ID
23
+ # in the request URI
24
+ c.register_request_matcher :braintree_uri do |request1, request2|
25
+ extract_url_resource = lambda do |uri|
26
+ uri_match_pattern =
27
+ %r{\Ahttps://api\.sandbox\.braintreegateway\.com/merchants/\w+(/.*)\z}
28
+
29
+ if match = uri.match(uri_match_pattern)
30
+ match.captures.first
31
+ end
32
+ end
33
+ r1_resource = extract_url_resource.call(request1.uri)
34
+ r2_resource = extract_url_resource.call(request2.uri)
35
+
36
+ !r1_resource.nil? && r1_resource == r2_resource
37
+ end
38
+
39
+ # https://github.com/titusfortner/webdrivers/wiki/Using-with-VCR-or-WebMock
40
+ driver_hosts = Webdrivers::Common.subclasses.map { |driver| URI(driver.base_url).host }
41
+ c.ignore_hosts(*driver_hosts)
42
+ end
@@ -0,0 +1 @@
1
+ ApplicationController.prepend_view_path "spec/fixtures/views"
metadata CHANGED
@@ -1,49 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_paypal_braintree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stembolt
8
- autorequire:
9
- bindir: bin
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-20 00:00:00.000000000 Z
11
+ date: 2020-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: solidus
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '1.0'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '3'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '1.0'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '3'
33
- - !ruby/object:Gem::Dependency
34
- name: solidus_support
14
+ name: activemerchant
35
15
  requirement: !ruby/object:Gem::Requirement
36
16
  requirements:
37
- - - ">="
17
+ - - "~>"
38
18
  - !ruby/object:Gem::Version
39
- version: 0.1.3
19
+ version: '1.48'
40
20
  type: :runtime
41
21
  prerelease: false
42
22
  version_requirements: !ruby/object:Gem::Requirement
43
23
  requirements:
44
- - - ">="
24
+ - - "~>"
45
25
  - !ruby/object:Gem::Version
46
- version: 0.1.3
26
+ version: '1.48'
47
27
  - !ruby/object:Gem::Dependency
48
28
  name: braintree
49
29
  requirement: !ruby/object:Gem::Requirement
@@ -59,175 +39,61 @@ dependencies:
59
39
  - !ruby/object:Gem::Version
60
40
  version: '2.65'
61
41
  - !ruby/object:Gem::Dependency
62
- name: activemerchant
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '1.48'
68
- type: :runtime
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '1.48'
75
- - !ruby/object:Gem::Dependency
76
- name: capybara
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- - !ruby/object:Gem::Dependency
90
- name: puma
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- - !ruby/object:Gem::Dependency
104
- name: capybara-screenshot
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
- - !ruby/object:Gem::Dependency
118
- name: launchy
42
+ name: solidus_api
119
43
  requirement: !ruby/object:Gem::Requirement
120
44
  requirements:
121
45
  - - ">="
122
46
  - !ruby/object:Gem::Version
123
- version: '0'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: '0'
131
- - !ruby/object:Gem::Dependency
132
- name: poltergeist
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: '0'
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: '0'
145
- - !ruby/object:Gem::Dependency
146
- name: coffee-rails
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
47
+ version: 2.0.0
48
+ - - "<"
150
49
  - !ruby/object:Gem::Version
151
- version: '0'
152
- type: :development
50
+ version: '3'
51
+ type: :runtime
153
52
  prerelease: false
154
53
  version_requirements: !ruby/object:Gem::Requirement
155
54
  requirements:
156
55
  - - ">="
157
56
  - !ruby/object:Gem::Version
158
- version: '0'
159
- - !ruby/object:Gem::Dependency
160
- name: sass-rails
161
- requirement: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- version: '0'
166
- type: :development
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - ">="
57
+ version: 2.0.0
58
+ - - "<"
171
59
  - !ruby/object:Gem::Version
172
- version: '0'
60
+ version: '3'
173
61
  - !ruby/object:Gem::Dependency
174
- name: database_cleaner
62
+ name: solidus_core
175
63
  requirement: !ruby/object:Gem::Requirement
176
64
  requirements:
177
65
  - - ">="
178
66
  - !ruby/object:Gem::Version
179
- version: '0'
180
- type: :development
181
- prerelease: false
182
- version_requirements: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - ">="
185
- - !ruby/object:Gem::Version
186
- version: '0'
187
- - !ruby/object:Gem::Dependency
188
- name: factory_bot
189
- requirement: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - ">="
67
+ version: 2.0.0
68
+ - - "<"
192
69
  - !ruby/object:Gem::Version
193
- version: '0'
194
- type: :development
70
+ version: '3'
71
+ type: :runtime
195
72
  prerelease: false
196
73
  version_requirements: !ruby/object:Gem::Requirement
197
74
  requirements:
198
75
  - - ">="
199
76
  - !ruby/object:Gem::Version
200
- version: '0'
201
- - !ruby/object:Gem::Dependency
202
- name: rspec-rails
203
- requirement: !ruby/object:Gem::Requirement
204
- requirements:
205
- - - ">="
206
- - !ruby/object:Gem::Version
207
- version: '0'
208
- type: :development
209
- prerelease: false
210
- version_requirements: !ruby/object:Gem::Requirement
211
- requirements:
212
- - - ">="
77
+ version: 2.0.0
78
+ - - "<"
213
79
  - !ruby/object:Gem::Version
214
- version: '0'
80
+ version: '3'
215
81
  - !ruby/object:Gem::Dependency
216
- name: rubocop
82
+ name: solidus_support
217
83
  requirement: !ruby/object:Gem::Requirement
218
84
  requirements:
219
85
  - - "~>"
220
86
  - !ruby/object:Gem::Version
221
- version: 0.53.0
222
- type: :development
87
+ version: 0.5.0
88
+ type: :runtime
223
89
  prerelease: false
224
90
  version_requirements: !ruby/object:Gem::Requirement
225
91
  requirements:
226
92
  - - "~>"
227
93
  - !ruby/object:Gem::Version
228
- version: 0.53.0
94
+ version: 0.5.0
229
95
  - !ruby/object:Gem::Dependency
230
- name: rubocop-rspec
96
+ name: selenium-webdriver
231
97
  requirement: !ruby/object:Gem::Requirement
232
98
  requirements:
233
99
  - - ">="
@@ -241,7 +107,7 @@ dependencies:
241
107
  - !ruby/object:Gem::Version
242
108
  version: '0'
243
109
  - !ruby/object:Gem::Dependency
244
- name: simplecov
110
+ name: solidus_dev_support
245
111
  requirement: !ruby/object:Gem::Requirement
246
112
  requirements:
247
113
  - - ">="
@@ -255,7 +121,7 @@ dependencies:
255
121
  - !ruby/object:Gem::Version
256
122
  version: '0'
257
123
  - !ruby/object:Gem::Dependency
258
- name: sqlite3
124
+ name: vcr
259
125
  requirement: !ruby/object:Gem::Requirement
260
126
  requirements:
261
127
  - - ">="
@@ -282,26 +148,20 @@ dependencies:
282
148
  - - ">="
283
149
  - !ruby/object:Gem::Version
284
150
  version: '0'
285
- - !ruby/object:Gem::Dependency
286
- name: vcr
287
- requirement: !ruby/object:Gem::Requirement
288
- requirements:
289
- - - ">="
290
- - !ruby/object:Gem::Version
291
- version: '0'
292
- type: :development
293
- prerelease: false
294
- version_requirements: !ruby/object:Gem::Requirement
295
- requirements:
296
- - - ">="
297
- - !ruby/object:Gem::Version
298
- version: '0'
299
151
  description: Uses the javascript API for seamless braintree payments
300
152
  email: braintree+gemfile@stembolt.com
301
153
  executables: []
302
154
  extensions: []
303
155
  extra_rdoc_files: []
304
156
  files:
157
+ - ".circleci/config.yml"
158
+ - ".gem_release.yml"
159
+ - ".github/stale.yml"
160
+ - ".gitignore"
161
+ - ".rspec"
162
+ - ".rubocop.yml"
163
+ - CHANGELOG.md
164
+ - Gemfile
305
165
  - LICENSE
306
166
  - README.md
307
167
  - Rakefile
@@ -312,15 +172,23 @@ files:
312
172
  - app/assets/javascripts/solidus_paypal_braintree/frontend.js
313
173
  - app/assets/javascripts/solidus_paypal_braintree/hosted_form.js
314
174
  - app/assets/javascripts/solidus_paypal_braintree/paypal_button.js
175
+ - app/assets/javascripts/solidus_paypal_braintree/paypal_messaging.js
315
176
  - app/assets/javascripts/solidus_paypal_braintree/promise.js
316
177
  - app/assets/javascripts/spree/backend/solidus_paypal_braintree.js
317
178
  - app/assets/javascripts/spree/frontend/paypal_button.js
318
179
  - app/assets/javascripts/spree/frontend/solidus_paypal_braintree.js
319
180
  - app/assets/stylesheets/spree/backend/solidus_paypal_braintree.scss
320
181
  - app/assets/stylesheets/spree/frontend/solidus_paypal_braintree.css
321
- - app/controllers/solidus_paypal_braintree/client_tokens_controller.rb
322
- - app/helpers/braintree_admin_helper.rb
182
+ - app/decorators/controllers/solidus_paypal_braintree/admin_payments_controller_decorator.rb
183
+ - app/decorators/controllers/solidus_paypal_braintree/checkout_controller_decorator.rb
184
+ - app/decorators/controllers/solidus_paypal_braintree/client_tokens_controller.rb
185
+ - app/decorators/controllers/solidus_paypal_braintree/orders_controller_decorator.rb
186
+ - app/decorators/models/solidus_paypal_braintree/spree/store_decorator.rb
187
+ - app/decorators/models/solidus_paypal_braintree/spree/user_decorator.rb
188
+ - app/helpers/solidus_paypal_braintree/braintree_admin_helper.rb
189
+ - app/helpers/solidus_paypal_braintree/braintree_checkout_helper.rb
323
190
  - app/models/application_record.rb
191
+ - app/models/solidus_paypal_braintree/address.rb
324
192
  - app/models/solidus_paypal_braintree/avs_result.rb
325
193
  - app/models/solidus_paypal_braintree/configuration.rb
326
194
  - app/models/solidus_paypal_braintree/customer.rb
@@ -330,14 +198,17 @@ files:
330
198
  - app/models/solidus_paypal_braintree/transaction.rb
331
199
  - app/models/solidus_paypal_braintree/transaction_address.rb
332
200
  - app/models/solidus_paypal_braintree/transaction_import.rb
333
- - app/models/spree/store_decorator.rb
201
+ - app/views/spree/api/payments/source_views/_paypal_braintree.json.jbuilder
202
+ - app/views/spree/checkout/existing_payment/_paypal_braintree.html.erb
334
203
  - app/views/spree/shared/_apple_pay_button.html.erb
335
204
  - app/views/spree/shared/_braintree_errors.html.erb
336
205
  - app/views/spree/shared/_braintree_hosted_fields.html.erb
337
206
  - app/views/spree/shared/_paypal_braintree_head_scripts.html.erb
338
207
  - app/views/spree/shared/_paypal_cart_button.html.erb
339
- - app/views/spree/shared/_paypal_checkout_button.html.erb
340
- - config/initializers/braintree.rb
208
+ - app/views/spree/shared/_paypal_messaging.html.erb
209
+ - bin/console
210
+ - bin/rails
211
+ - bin/setup
341
212
  - config/locales/en.yml
342
213
  - config/locales/it.yml
343
214
  - config/routes.rb
@@ -348,6 +219,8 @@ files:
348
219
  - db/migrate/20170203191030_add_credit_card_to_braintree_configuration.rb
349
220
  - db/migrate/20170505193712_add_null_constraint_to_sources.rb
350
221
  - db/migrate/20170508085402_add_not_null_constraint_to_sources_payment_type.rb
222
+ - db/migrate/20190705115327_add_paypal_button_preferences_to_braintree_configurations.rb
223
+ - db/migrate/20190911141712_add_3d_secure_to_braintree_configuration.rb
351
224
  - lib/controllers/backend/solidus_paypal_braintree/configurations_controller.rb
352
225
  - lib/controllers/frontend/solidus_paypal_braintree/checkouts_controller.rb
353
226
  - lib/controllers/frontend/solidus_paypal_braintree/transactions_controller.rb
@@ -364,28 +237,143 @@ files:
364
237
  - lib/views/backend_v1.2/spree/admin/payments/source_forms/_paypal_braintree.html.erb
365
238
  - lib/views/backend_v2.4/spree/admin/shared/preference_fields/_hash.html.erb
366
239
  - lib/views/frontend/spree/checkout/payment/_paypal_braintree.html.erb
367
- homepage: https://stembolt.com
240
+ - lib/views/frontend/spree/shared/_paypal_checkout_button.html.erb
241
+ - solidus_paypal_braintree.gemspec
242
+ - spec/controllers/solidus_paypal_braintree/checkouts_controller_spec.rb
243
+ - spec/controllers/solidus_paypal_braintree/client_tokens_controller_spec.rb
244
+ - spec/controllers/solidus_paypal_braintree/configurations_controller_spec.rb
245
+ - spec/controllers/solidus_paypal_braintree/transactions_controller_spec.rb
246
+ - spec/features/backend/configuration_spec.rb
247
+ - spec/features/backend/new_payment_spec.rb
248
+ - spec/features/frontend/braintree_credit_card_checkout_spec.rb
249
+ - spec/features/frontend/paypal_checkout_spec.rb
250
+ - spec/fixtures/cassettes/admin/invalid_credit_card.yml
251
+ - spec/fixtures/cassettes/admin/resubmit_credit_card.yml
252
+ - spec/fixtures/cassettes/admin/valid_credit_card.yml
253
+ - spec/fixtures/cassettes/braintree/create_profile.yml
254
+ - spec/fixtures/cassettes/braintree/generate_token.yml
255
+ - spec/fixtures/cassettes/braintree/token.yml
256
+ - spec/fixtures/cassettes/checkout/invalid_credit_card.yml
257
+ - spec/fixtures/cassettes/checkout/resubmit_credit_card.yml
258
+ - spec/fixtures/cassettes/checkout/update.yml
259
+ - spec/fixtures/cassettes/checkout/valid_credit_card.yml
260
+ - spec/fixtures/cassettes/gateway/authorize.yml
261
+ - spec/fixtures/cassettes/gateway/authorize/credit_card/address.yml
262
+ - spec/fixtures/cassettes/gateway/authorize/merchant_account/EUR.yml
263
+ - spec/fixtures/cassettes/gateway/authorize/paypal/EUR.yml
264
+ - spec/fixtures/cassettes/gateway/authorize/paypal/address.yml
265
+ - spec/fixtures/cassettes/gateway/authorized_transaction.yml
266
+ - spec/fixtures/cassettes/gateway/cancel/missing.yml
267
+ - spec/fixtures/cassettes/gateway/cancel/refunds.yml
268
+ - spec/fixtures/cassettes/gateway/cancel/void.yml
269
+ - spec/fixtures/cassettes/gateway/capture.yml
270
+ - spec/fixtures/cassettes/gateway/complete.yml
271
+ - spec/fixtures/cassettes/gateway/credit.yml
272
+ - spec/fixtures/cassettes/gateway/purchase.yml
273
+ - spec/fixtures/cassettes/gateway/settled_transaction.yml
274
+ - spec/fixtures/cassettes/gateway/void.yml
275
+ - spec/fixtures/cassettes/source/card_type.yml
276
+ - spec/fixtures/cassettes/source/last4.yml
277
+ - spec/fixtures/cassettes/transaction/import/valid.yml
278
+ - spec/fixtures/cassettes/transaction/import/valid/capture.yml
279
+ - spec/fixtures/views/spree/orders/edit.html.erb
280
+ - spec/helpers/solidus_paypal_braintree/braintree_admin_helper_spec.rb
281
+ - spec/models/solidus_paypal_braintree/address_spec.rb
282
+ - spec/models/solidus_paypal_braintree/avs_result_spec.rb
283
+ - spec/models/solidus_paypal_braintree/gateway_spec.rb
284
+ - spec/models/solidus_paypal_braintree/response_spec.rb
285
+ - spec/models/solidus_paypal_braintree/source_spec.rb
286
+ - spec/models/solidus_paypal_braintree/transaction_address_spec.rb
287
+ - spec/models/solidus_paypal_braintree/transaction_import_spec.rb
288
+ - spec/models/solidus_paypal_braintree/transaction_spec.rb
289
+ - spec/models/spree/store_spec.rb
290
+ - spec/requests/spree/api/orders_controller_spec.rb
291
+ - spec/spec_helper.rb
292
+ - spec/support/capybara.rb
293
+ - spec/support/factories.rb
294
+ - spec/support/gateway_helpers.rb
295
+ - spec/support/order_ready_for_payment.rb
296
+ - spec/support/vcr.rb
297
+ - spec/support/views.rb
298
+ homepage: https://github.com/solidusio/solidus_paypal_braintree
368
299
  licenses:
369
300
  - BSD-3-Clause
370
- metadata: {}
371
- post_install_message:
301
+ metadata:
302
+ homepage_uri: https://github.com/solidusio/solidus_paypal_braintree
303
+ source_code_uri: https://github.com/solidusio/solidus_paypal_braintree
304
+ post_install_message:
372
305
  rdoc_options: []
373
306
  require_paths:
374
307
  - lib
375
308
  required_ruby_version: !ruby/object:Gem::Requirement
376
309
  requirements:
377
- - - ">="
310
+ - - "~>"
378
311
  - !ruby/object:Gem::Version
379
- version: '0'
312
+ version: '2.4'
380
313
  required_rubygems_version: !ruby/object:Gem::Requirement
381
314
  requirements:
382
315
  - - ">="
383
316
  - !ruby/object:Gem::Version
384
317
  version: '0'
385
318
  requirements: []
386
- rubyforge_project:
387
- rubygems_version: 2.7.6
388
- signing_key:
319
+ rubygems_version: 3.1.4
320
+ signing_key:
389
321
  specification_version: 4
390
322
  summary: Officially supported Paypal/Braintree extension
391
- test_files: []
323
+ test_files:
324
+ - spec/spec_helper.rb
325
+ - spec/features/frontend/braintree_credit_card_checkout_spec.rb
326
+ - spec/features/frontend/paypal_checkout_spec.rb
327
+ - spec/features/backend/configuration_spec.rb
328
+ - spec/features/backend/new_payment_spec.rb
329
+ - spec/models/solidus_paypal_braintree/transaction_import_spec.rb
330
+ - spec/models/solidus_paypal_braintree/gateway_spec.rb
331
+ - spec/models/solidus_paypal_braintree/transaction_address_spec.rb
332
+ - spec/models/solidus_paypal_braintree/transaction_spec.rb
333
+ - spec/models/solidus_paypal_braintree/source_spec.rb
334
+ - spec/models/solidus_paypal_braintree/avs_result_spec.rb
335
+ - spec/models/solidus_paypal_braintree/response_spec.rb
336
+ - spec/models/solidus_paypal_braintree/address_spec.rb
337
+ - spec/models/spree/store_spec.rb
338
+ - spec/requests/spree/api/orders_controller_spec.rb
339
+ - spec/support/capybara.rb
340
+ - spec/support/views.rb
341
+ - spec/support/vcr.rb
342
+ - spec/support/gateway_helpers.rb
343
+ - spec/support/factories.rb
344
+ - spec/support/order_ready_for_payment.rb
345
+ - spec/fixtures/cassettes/transaction/import/valid.yml
346
+ - spec/fixtures/cassettes/transaction/import/valid/capture.yml
347
+ - spec/fixtures/cassettes/braintree/create_profile.yml
348
+ - spec/fixtures/cassettes/braintree/generate_token.yml
349
+ - spec/fixtures/cassettes/braintree/token.yml
350
+ - spec/fixtures/cassettes/source/last4.yml
351
+ - spec/fixtures/cassettes/source/card_type.yml
352
+ - spec/fixtures/cassettes/admin/valid_credit_card.yml
353
+ - spec/fixtures/cassettes/admin/invalid_credit_card.yml
354
+ - spec/fixtures/cassettes/admin/resubmit_credit_card.yml
355
+ - spec/fixtures/cassettes/checkout/valid_credit_card.yml
356
+ - spec/fixtures/cassettes/checkout/invalid_credit_card.yml
357
+ - spec/fixtures/cassettes/checkout/update.yml
358
+ - spec/fixtures/cassettes/checkout/resubmit_credit_card.yml
359
+ - spec/fixtures/cassettes/gateway/cancel/missing.yml
360
+ - spec/fixtures/cassettes/gateway/cancel/refunds.yml
361
+ - spec/fixtures/cassettes/gateway/cancel/void.yml
362
+ - spec/fixtures/cassettes/gateway/capture.yml
363
+ - spec/fixtures/cassettes/gateway/settled_transaction.yml
364
+ - spec/fixtures/cassettes/gateway/authorized_transaction.yml
365
+ - spec/fixtures/cassettes/gateway/void.yml
366
+ - spec/fixtures/cassettes/gateway/credit.yml
367
+ - spec/fixtures/cassettes/gateway/authorize.yml
368
+ - spec/fixtures/cassettes/gateway/authorize/credit_card/address.yml
369
+ - spec/fixtures/cassettes/gateway/authorize/paypal/EUR.yml
370
+ - spec/fixtures/cassettes/gateway/authorize/paypal/address.yml
371
+ - spec/fixtures/cassettes/gateway/authorize/merchant_account/EUR.yml
372
+ - spec/fixtures/cassettes/gateway/complete.yml
373
+ - spec/fixtures/cassettes/gateway/purchase.yml
374
+ - spec/fixtures/views/spree/orders/edit.html.erb
375
+ - spec/controllers/solidus_paypal_braintree/configurations_controller_spec.rb
376
+ - spec/controllers/solidus_paypal_braintree/transactions_controller_spec.rb
377
+ - spec/controllers/solidus_paypal_braintree/client_tokens_controller_spec.rb
378
+ - spec/controllers/solidus_paypal_braintree/checkouts_controller_spec.rb
379
+ - spec/helpers/solidus_paypal_braintree/braintree_admin_helper_spec.rb