disco_app 0.14.4 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 201255aa9e92f2967fb8583ad43e2d13b4aea475d0222337d8956bf14df70841
4
- data.tar.gz: ab97fc9e8f149f70baaaa35addb08ea96f3dea8f203789fd04bd585b0f4f8557
3
+ metadata.gz: 5c891183749c2628841d04af2b7ba9aea55105e298c455007f0fe27e443267ec
4
+ data.tar.gz: b525b930e8e3e3282c297b9c2ac8754a0cd5629deb51584d5823aef0f3ec0008
5
5
  SHA512:
6
- metadata.gz: 6d7ccecfce96e4bac63df8153c9ef0931c34a8d6387fa77bc3a734669a44639ef76634527f0d74d8f0ae2ffd516aeb7b6a84e59fdf98c14eaaae1a86145baaa8
7
- data.tar.gz: 98a2e1d47d2fc19bb798a5579eac1f98b75ecdfcf645039dafe8cc5bb3dd39ee1845b780215fca0855d66fc9dbf429dede6f87ad962d3006c293941f3fec3562
6
+ metadata.gz: be4061a4dc377bdd9b9b2271899e5cca283d8503f31281a8741ce14387d1064ee251f1bf11d3c68c20a776ab9339114a50369ccb35f61b5b933f569fa1263979
7
+ data.tar.gz: 894629b3f1747cbe6cb2417ebf369e83e6a8817d352328d3513423d8aae9fa283b0a0a3a4995cc40647da482a96c6ce7da40f0515ae3f91858b05e3522822e5d
@@ -0,0 +1,18 @@
1
+ Forecast: [C-XXX](https://app.forecast.it/project/P-X/workflow/C-XXX)
2
+
3
+ ### Description
4
+ A brief overview of the work done. Be sure to provide some context to the issue/feature, so that the reviewer can jump right on in and review your sweet, sweet code.
5
+
6
+ Highlight any interesting design decisions that you may have taken.
7
+
8
+ ### Notes
9
+ * A bulleted list of any secondary information that you feel would be useful to the reviewer.
10
+ * Gotchas, new dependencies, unusual data migrations, etc., would all live here.
11
+
12
+ ### Checklist
13
+
14
+ - [ ] Updated README and any other relevant documentation.
15
+ - [ ] Tested changes locally.
16
+ - [ ] Updated test suite and made sure that it all passes.
17
+ - [ ] Ensured that Rubocop and friends are happy.
18
+ - [ ] Checked that this PR is referencing the correct base.
@@ -0,0 +1,48 @@
1
+ module DiscoApp::Concerns::WebhooksController
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ before_action :verify_webhook
6
+ protect_from_forgery with: :null_session
7
+ end
8
+
9
+ def process_webhook
10
+ # Get the topic and domain for this webhook.
11
+ topic = request.headers['HTTP_X_SHOPIFY_TOPIC']
12
+ shopify_domain = request.headers['HTTP_X_SHOPIFY_SHOP_DOMAIN']
13
+
14
+ # Ensure a domain was provided in the headers.
15
+ unless shopify_domain
16
+ head :bad_request
17
+ end
18
+
19
+ # Try to find a matching background job task for the given topic using class name.
20
+ job_class = DiscoApp::WebhookService.find_job_class(topic)
21
+
22
+ # Return bad request if we couldn't match a job class.
23
+ unless job_class.present?
24
+ head :bad_request
25
+ end
26
+
27
+ # Decode the body data and enqueue the appropriate job.
28
+ data = ActiveSupport::JSON::decode(request.body.read).with_indifferent_access
29
+ job_class.perform_later(shopify_domain, data)
30
+
31
+ render body: nil
32
+ end
33
+
34
+ private
35
+
36
+ def verify_webhook
37
+ unless webhook_is_valid?
38
+ head :unauthorized
39
+ end
40
+ request.body.rewind
41
+ end
42
+
43
+ def webhook_is_valid?
44
+ return true if Rails.env.development? and DiscoApp.configuration.skip_webhook_verification?
45
+ DiscoApp::WebhookService.is_valid_hmac?(request.body.read.to_s, ShopifyApp.configuration.secret, request.headers['HTTP_X_SHOPIFY_HMAC_SHA256'])
46
+ end
47
+
48
+ end
@@ -1,47 +1,3 @@
1
- module DiscoApp
2
- class WebhooksController < ActionController::Base
3
-
4
- before_action :verify_webhook
5
- protect_from_forgery with: :null_session
6
-
7
- def process_webhook
8
- # Get the topic and domain for this webhook.
9
- topic = request.headers['HTTP_X_SHOPIFY_TOPIC']
10
- shopify_domain = request.headers['HTTP_X_SHOPIFY_SHOP_DOMAIN']
11
-
12
- # Ensure a domain was provided in the headers.
13
- unless shopify_domain
14
- head :bad_request
15
- end
16
-
17
- # Try to find a matching background job task for the given topic using class name.
18
- job_class = DiscoApp::WebhookService.find_job_class(topic)
19
-
20
- # Return bad request if we couldn't match a job class.
21
- unless job_class.present?
22
- head :bad_request
23
- end
24
-
25
- # Decode the body data and enqueue the appropriate job.
26
- data = ActiveSupport::JSON::decode(request.body.read).with_indifferent_access
27
- job_class.perform_later(shopify_domain, data)
28
-
29
- render body: nil
30
- end
31
-
32
- private
33
-
34
- def verify_webhook
35
- unless webhook_is_valid?
36
- head :unauthorized
37
- end
38
- request.body.rewind
39
- end
40
-
41
- def webhook_is_valid?
42
- return true if Rails.env.development? and DiscoApp.configuration.skip_webhook_verification?
43
- DiscoApp::WebhookService.is_valid_hmac?(request.body.read.to_s, ShopifyApp.configuration.secret, request.headers['HTTP_X_SHOPIFY_HMAC_SHA256'])
44
- end
45
-
46
- end
1
+ class DiscoApp::WebhooksController < ActionController::Base
2
+ include DiscoApp::Concerns::WebhooksController
47
3
  end
@@ -1,3 +1,3 @@
1
1
  module DiscoApp
2
- VERSION = '0.14.4'
2
+ VERSION = '0.15.0'
3
3
  end
@@ -19,7 +19,9 @@ pickle-email-*.html
19
19
  ## Environment normalisation:
20
20
  /.bundle
21
21
  /vendor/bundle
22
+ /vendor/ruby
22
23
  /.env.local
24
+ .envrc
23
25
 
24
26
  # these should all be checked in to normalise the environment:
25
27
  # Gemfile.lock, .ruby-version, .ruby-gemset
@@ -37,3 +39,5 @@ bower.json
37
39
 
38
40
  # Editors
39
41
  .idea
42
+ .vscode
43
+ TAGS
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: disco_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.4
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Ballard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-23 00:00:00.000000000 Z
11
+ date: 2018-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -485,6 +485,7 @@ executables: []
485
485
  extensions: []
486
486
  extra_rdoc_files: []
487
487
  files:
488
+ - ".github/PULL_REQUEST_TEMPLATE.md"
488
489
  - Rakefile
489
490
  - app/assets/components/disco_app/buttons/model-destroy-button.es6.jsx
490
491
  - app/assets/components/disco_app/forms/model-form.es6.jsx
@@ -584,6 +585,7 @@ files:
584
585
  - app/controllers/disco_app/concerns/authenticated_controller.rb
585
586
  - app/controllers/disco_app/concerns/carrier_request_controller.rb
586
587
  - app/controllers/disco_app/concerns/user_authenticated_controller.rb
588
+ - app/controllers/disco_app/concerns/webhooks_controller.rb
587
589
  - app/controllers/disco_app/frame_controller.rb
588
590
  - app/controllers/disco_app/install_controller.rb
589
591
  - app/controllers/disco_app/subscriptions_controller.rb
@@ -899,164 +901,164 @@ required_rubygems_version: !ruby/object:Gem::Requirement
899
901
  version: '0'
900
902
  requirements: []
901
903
  rubyforge_project:
902
- rubygems_version: 2.7.3
904
+ rubygems_version: 2.7.7
903
905
  signing_key:
904
906
  specification_version: 4
905
907
  summary: Rails engine for Shopify applications.
906
908
  test_files:
907
- - test/clients/disco_app/api_client_test.rb
908
- - test/dummy/app/models/disco_app/shop.rb
909
- - test/dummy/app/models/product.rb
910
- - test/dummy/app/models/js_configuration.rb
911
- - test/dummy/app/models/widget_configuration.rb
912
- - test/dummy/app/models/application_record.rb
913
- - test/dummy/app/models/cart.rb
909
+ - test/dummy/public/500.html
910
+ - test/dummy/public/favicon.ico
911
+ - test/dummy/public/422.html
912
+ - test/dummy/public/404.html
913
+ - test/dummy/bin/rake
914
+ - test/dummy/bin/rails
915
+ - test/dummy/bin/setup
916
+ - test/dummy/bin/bundle
917
+ - test/dummy/Rakefile
918
+ - test/dummy/config.ru
919
+ - test/dummy/app/assets/stylesheets/application.scss
920
+ - test/dummy/app/assets/javascripts/application.js
921
+ - test/dummy/app/jobs/products_create_job.rb
922
+ - test/dummy/app/jobs/products_update_job.rb
914
923
  - test/dummy/app/jobs/disco_app/app_installed_job.rb
915
924
  - test/dummy/app/jobs/disco_app/app_uninstalled_job.rb
925
+ - test/dummy/app/jobs/application_job.rb
916
926
  - test/dummy/app/jobs/products_delete_job.rb
917
- - test/dummy/app/jobs/products_update_job.rb
918
- - test/dummy/app/jobs/products_create_job.rb
919
927
  - test/dummy/app/jobs/carts_update_job.rb
920
- - test/dummy/app/jobs/application_job.rb
921
- - test/dummy/app/controllers/application_controller.rb
922
- - test/dummy/app/controllers/carrier_request_controller.rb
928
+ - test/dummy/app/controllers/home_controller.rb
923
929
  - test/dummy/app/controllers/disco_app/admin/shops_controller.rb
930
+ - test/dummy/app/controllers/carrier_request_controller.rb
924
931
  - test/dummy/app/controllers/proxy_controller.rb
925
- - test/dummy/app/controllers/home_controller.rb
926
- - test/dummy/app/views/snippets/widget.liquid.erb
927
- - test/dummy/app/views/home/index.html.erb
932
+ - test/dummy/app/controllers/application_controller.rb
933
+ - test/dummy/app/helpers/application_helper.rb
934
+ - test/dummy/app/models/disco_app/shop.rb
935
+ - test/dummy/app/models/product.rb
936
+ - test/dummy/app/models/widget_configuration.rb
937
+ - test/dummy/app/models/js_configuration.rb
938
+ - test/dummy/app/models/application_record.rb
939
+ - test/dummy/app/models/cart.rb
940
+ - test/dummy/app/views/assets/script_tag.js.erb
928
941
  - test/dummy/app/views/assets/widget.scss.erb
929
- - test/dummy/app/views/assets/widget.js.erb
930
942
  - test/dummy/app/views/assets/test.js.erb
931
- - test/dummy/app/views/assets/script_tag.js.erb
932
- - test/dummy/app/assets/javascripts/application.js
933
- - test/dummy/app/assets/stylesheets/application.scss
934
- - test/dummy/app/helpers/application_helper.rb
935
- - test/dummy/bin/rake
936
- - test/dummy/bin/setup
937
- - test/dummy/bin/bundle
938
- - test/dummy/bin/rails
939
- - test/dummy/config/secrets.yml
940
- - test/dummy/config/routes.rb
943
+ - test/dummy/app/views/assets/widget.js.erb
944
+ - test/dummy/app/views/snippets/widget.liquid.erb
945
+ - test/dummy/app/views/home/index.html.erb
946
+ - test/dummy/db/migrate/20161105054746_create_carts.rb
947
+ - test/dummy/db/migrate/20160530160739_create_asset_models.rb
948
+ - test/dummy/db/migrate/20160307182229_create_products.rb
949
+ - test/dummy/db/schema.rb
941
950
  - test/dummy/config/locales/en.yml
942
- - test/dummy/config/environments/production.rb
943
- - test/dummy/config/environments/development.rb
944
- - test/dummy/config/environments/test.rb
945
- - test/dummy/config/environment.rb
946
- - test/dummy/config/application.rb
947
- - test/dummy/config/database.yml
948
- - test/dummy/config/database.codeship.yml
949
- - test/dummy/config/boot.rb
950
- - test/dummy/config/initializers/shopify_app.rb
951
- - test/dummy/config/initializers/backtrace_silencers.rb
952
- - test/dummy/config/initializers/mime_types.rb
953
951
  - test/dummy/config/initializers/filter_parameter_logging.rb
954
- - test/dummy/config/initializers/shopify_session_repository.rb
952
+ - test/dummy/config/initializers/assets.rb
955
953
  - test/dummy/config/initializers/session_store.rb
954
+ - test/dummy/config/initializers/inflections.rb
955
+ - test/dummy/config/initializers/mime_types.rb
956
956
  - test/dummy/config/initializers/wrap_parameters.rb
957
- - test/dummy/config/initializers/assets.rb
958
- - test/dummy/config/initializers/cookies_serializer.rb
959
957
  - test/dummy/config/initializers/disco_app.rb
958
+ - test/dummy/config/initializers/shopify_app.rb
959
+ - test/dummy/config/initializers/shopify_session_repository.rb
960
+ - test/dummy/config/initializers/backtrace_silencers.rb
960
961
  - test/dummy/config/initializers/omniauth.rb
961
- - test/dummy/config/initializers/inflections.rb
962
- - test/dummy/config.ru
963
- - test/dummy/Rakefile
964
- - test/dummy/public/favicon.ico
965
- - test/dummy/public/422.html
966
- - test/dummy/public/500.html
967
- - test/dummy/public/404.html
968
- - test/dummy/db/schema.rb
969
- - test/dummy/db/migrate/20161105054746_create_carts.rb
970
- - test/dummy/db/migrate/20160530160739_create_asset_models.rb
971
- - test/dummy/db/migrate/20160307182229_create_products.rb
972
- - test/integration/synchronises_test.rb
973
- - test/models/disco_app/session_test.rb
974
- - test/models/disco_app/renders_assets_test.rb
975
- - test/models/disco_app/has_metafields_test.rb
976
- - test/models/disco_app/plan_test.rb
977
- - test/models/disco_app/shop_test.rb
978
- - test/models/disco_app/can_be_liquified_test.rb
979
- - test/models/disco_app/subscription_test.rb
980
- - test/disco_app_test.rb
981
- - test/vcr/webhook_failure.yml
982
- - test/support/test_shopify_api.rb
983
- - test/support/test_file_fixtures.rb
984
- - test/fixtures/products.yml
985
- - test/fixtures/disco_app/application_charges.yml
986
- - test/fixtures/disco_app/shops.yml
987
- - test/fixtures/disco_app/plan_codes.yml
988
- - test/fixtures/disco_app/subscriptions.yml
989
- - test/fixtures/disco_app/sources.yml
990
- - test/fixtures/disco_app/recurring_application_charges.yml
991
- - test/fixtures/disco_app/plans.yml
992
- - test/fixtures/widget_configurations.yml
962
+ - test/dummy/config/initializers/cookies_serializer.rb
963
+ - test/dummy/config/secrets.yml
964
+ - test/dummy/config/routes.rb
965
+ - test/dummy/config/database.codeship.yml
966
+ - test/dummy/config/environments/production.rb
967
+ - test/dummy/config/environments/test.rb
968
+ - test/dummy/config/environments/development.rb
969
+ - test/dummy/config/environment.rb
970
+ - test/dummy/config/boot.rb
971
+ - test/dummy/config/database.yml
972
+ - test/dummy/config/application.rb
993
973
  - test/fixtures/liquid/model.liquid
974
+ - test/fixtures/api/subscriptions/valid_request.json
975
+ - test/fixtures/api/widget_store/users.json
994
976
  - test/fixtures/api/widget_store/carrier_services.json
995
- - test/fixtures/api/widget_store/webhooks.json
977
+ - test/fixtures/api/widget_store/assets/create_test_js_response.json
978
+ - test/fixtures/api/widget_store/assets/create_widget_js_response.json
979
+ - test/fixtures/api/widget_store/assets/create_test_js_request.json
980
+ - test/fixtures/api/widget_store/assets/update_script_tag_request.json
981
+ - test/fixtures/api/widget_store/assets/create_script_tag_response.json
982
+ - test/fixtures/api/widget_store/assets/create_script_tag_js_response.json
983
+ - test/fixtures/api/widget_store/assets/create_widget_scss_request.json
984
+ - test/fixtures/api/widget_store/assets/update_script_tag_response.json
985
+ - test/fixtures/api/widget_store/assets/create_widget_liquid_request.json
986
+ - test/fixtures/api/widget_store/assets/create_script_tag_js_request.json
987
+ - test/fixtures/api/widget_store/assets/create_script_tag_request.json
988
+ - test/fixtures/api/widget_store/assets/get_script_tags_preexisting_response.json
989
+ - test/fixtures/api/widget_store/assets/create_widget_scss_response.json
990
+ - test/fixtures/api/widget_store/assets/create_widget_liquid_response.json
991
+ - test/fixtures/api/widget_store/assets/get_script_tags_preexisting_request.json
992
+ - test/fixtures/api/widget_store/assets/get_script_tags_empty_response.json
993
+ - test/fixtures/api/widget_store/assets/get_script_tags_empty_request.json
994
+ - test/fixtures/api/widget_store/assets/create_widget_js_request.json
996
995
  - test/fixtures/api/widget_store/products/write_metafields_single_namespace_response.json
996
+ - test/fixtures/api/widget_store/products/write_metafields_multiple_namespaces_request.json
997
997
  - test/fixtures/api/widget_store/products/write_metafields_multiple_namespaces_response.json
998
998
  - test/fixtures/api/widget_store/products/write_metafields_single_namespace_request.json
999
- - test/fixtures/api/widget_store/products/write_metafields_multiple_namespaces_request.json
1000
- - test/fixtures/api/widget_store/charges/activate_recurring_application_charge_request.json
1001
- - test/fixtures/api/widget_store/charges/activate_application_charge_request.json
1002
- - test/fixtures/api/widget_store/charges/get_pending_application_charge_response.json
1003
- - test/fixtures/api/widget_store/charges/activate_recurring_application_charge_response.json
1004
- - test/fixtures/api/widget_store/charges/create_application_charge_request.json
999
+ - test/fixtures/api/widget_store/webhooks.json
1005
1000
  - test/fixtures/api/widget_store/charges/create_application_charge_response.json
1001
+ - test/fixtures/api/widget_store/charges/create_second_recurring_application_charge_response.json
1006
1002
  - test/fixtures/api/widget_store/charges/activate_application_charge_response.json
1007
- - test/fixtures/api/widget_store/charges/create_recurring_application_charge_request.json
1008
- - test/fixtures/api/widget_store/charges/get_declined_application_charge_response.json
1009
- - test/fixtures/api/widget_store/charges/get_declined_recurring_application_charge_response.json
1003
+ - test/fixtures/api/widget_store/charges/create_application_charge_request.json
1004
+ - test/fixtures/api/widget_store/charges/create_recurring_application_charge_response.json
1010
1005
  - test/fixtures/api/widget_store/charges/get_pending_recurring_application_charge_response.json
1006
+ - test/fixtures/api/widget_store/charges/get_declined_recurring_application_charge_response.json
1007
+ - test/fixtures/api/widget_store/charges/get_pending_application_charge_response.json
1008
+ - test/fixtures/api/widget_store/charges/activate_recurring_application_charge_response.json
1011
1009
  - test/fixtures/api/widget_store/charges/get_accepted_recurring_application_charge_response.json
1012
- - test/fixtures/api/widget_store/charges/create_second_recurring_application_charge_request.json
1013
- - test/fixtures/api/widget_store/charges/create_second_recurring_application_charge_response.json
1010
+ - test/fixtures/api/widget_store/charges/activate_recurring_application_charge_request.json
1014
1011
  - test/fixtures/api/widget_store/charges/get_accepted_application_charge_response.json
1015
- - test/fixtures/api/widget_store/charges/create_recurring_application_charge_response.json
1016
- - test/fixtures/api/widget_store/users.json
1017
- - test/fixtures/api/widget_store/shop.json
1012
+ - test/fixtures/api/widget_store/charges/create_recurring_application_charge_request.json
1013
+ - test/fixtures/api/widget_store/charges/get_declined_application_charge_response.json
1014
+ - test/fixtures/api/widget_store/charges/create_second_recurring_application_charge_request.json
1015
+ - test/fixtures/api/widget_store/charges/activate_application_charge_request.json
1018
1016
  - test/fixtures/api/widget_store/carrier_services_create.json
1019
- - test/fixtures/api/widget_store/assets/create_widget_liquid_request.json
1020
- - test/fixtures/api/widget_store/assets/create_test_js_response.json
1021
- - test/fixtures/api/widget_store/assets/create_widget_js_request.json
1022
- - test/fixtures/api/widget_store/assets/update_script_tag_response.json
1023
- - test/fixtures/api/widget_store/assets/create_script_tag_js_response.json
1024
- - test/fixtures/api/widget_store/assets/create_script_tag_response.json
1025
- - test/fixtures/api/widget_store/assets/create_widget_scss_request.json
1026
- - test/fixtures/api/widget_store/assets/get_script_tags_preexisting_response.json
1027
- - test/fixtures/api/widget_store/assets/create_widget_liquid_response.json
1028
- - test/fixtures/api/widget_store/assets/get_script_tags_preexisting_request.json
1029
- - test/fixtures/api/widget_store/assets/create_widget_scss_response.json
1030
- - test/fixtures/api/widget_store/assets/create_script_tag_request.json
1031
- - test/fixtures/api/widget_store/assets/create_widget_js_response.json
1032
- - test/fixtures/api/widget_store/assets/get_script_tags_empty_request.json
1033
- - test/fixtures/api/widget_store/assets/update_script_tag_request.json
1034
- - test/fixtures/api/widget_store/assets/create_script_tag_js_request.json
1035
- - test/fixtures/api/widget_store/assets/create_test_js_request.json
1036
- - test/fixtures/api/widget_store/assets/get_script_tags_empty_response.json
1037
- - test/fixtures/api/subscriptions/valid_request.json
1038
- - test/fixtures/webhooks/product_deleted.json
1039
- - test/fixtures/webhooks/cart_updated.json
1040
- - test/fixtures/webhooks/product_updated.json
1041
- - test/fixtures/webhooks/product_created.json
1042
- - test/fixtures/webhooks/app_uninstalled.json
1017
+ - test/fixtures/api/widget_store/shop.json
1043
1018
  - test/fixtures/assets/test.js
1044
1019
  - test/fixtures/assets/test.min.js
1045
- - test/fixtures/carts.yml
1020
+ - test/fixtures/widget_configurations.yml
1046
1021
  - test/fixtures/js_configurations.yml
1022
+ - test/fixtures/disco_app/sources.yml
1023
+ - test/fixtures/disco_app/plan_codes.yml
1024
+ - test/fixtures/disco_app/shops.yml
1025
+ - test/fixtures/disco_app/application_charges.yml
1026
+ - test/fixtures/disco_app/subscriptions.yml
1027
+ - test/fixtures/disco_app/plans.yml
1028
+ - test/fixtures/disco_app/recurring_application_charges.yml
1029
+ - test/fixtures/carts.yml
1030
+ - test/fixtures/webhooks/cart_updated.json
1031
+ - test/fixtures/webhooks/app_uninstalled.json
1032
+ - test/fixtures/webhooks/product_updated.json
1033
+ - test/fixtures/webhooks/product_created.json
1034
+ - test/fixtures/webhooks/product_deleted.json
1035
+ - test/fixtures/products.yml
1036
+ - test/support/test_file_fixtures.rb
1037
+ - test/support/test_shopify_api.rb
1047
1038
  - test/test_helper.rb
1048
- - test/jobs/disco_app/synchronise_users_job_test.rb
1049
- - test/jobs/disco_app/synchronise_webhooks_job_test.rb
1039
+ - test/disco_app_test.rb
1050
1040
  - test/jobs/disco_app/app_uninstalled_job_test.rb
1051
1041
  - test/jobs/disco_app/synchronise_carrier_service_job_test.rb
1042
+ - test/jobs/disco_app/synchronise_users_job_test.rb
1052
1043
  - test/jobs/disco_app/send_subscription_job_test.rb
1044
+ - test/jobs/disco_app/synchronise_webhooks_job_test.rb
1053
1045
  - test/jobs/disco_app/app_installed_job_test.rb
1054
- - test/controllers/proxy_controller_test.rb
1046
+ - test/vcr/webhook_failure.yml
1055
1047
  - test/controllers/disco_app/install_controller_test.rb
1056
- - test/controllers/disco_app/charges_controller_test.rb
1048
+ - test/controllers/disco_app/webhooks_controller_test.rb
1057
1049
  - test/controllers/disco_app/admin/shops_controller_test.rb
1058
1050
  - test/controllers/disco_app/subscriptions_controller_test.rb
1059
- - test/controllers/disco_app/webhooks_controller_test.rb
1051
+ - test/controllers/disco_app/charges_controller_test.rb
1052
+ - test/controllers/proxy_controller_test.rb
1060
1053
  - test/controllers/home_controller_test.rb
1061
- - test/services/disco_app/subscription_service_test.rb
1054
+ - test/integration/synchronises_test.rb
1055
+ - test/clients/disco_app/api_client_test.rb
1056
+ - test/models/disco_app/plan_test.rb
1057
+ - test/models/disco_app/has_metafields_test.rb
1058
+ - test/models/disco_app/shop_test.rb
1059
+ - test/models/disco_app/session_test.rb
1060
+ - test/models/disco_app/subscription_test.rb
1061
+ - test/models/disco_app/can_be_liquified_test.rb
1062
+ - test/models/disco_app/renders_assets_test.rb
1062
1063
  - test/services/disco_app/charges_service_test.rb
1064
+ - test/services/disco_app/subscription_service_test.rb