shopify_api 9.4.1 → 10.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 (763) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -1
  3. data/.github/ISSUE_TEMPLATE.md +1 -2
  4. data/.github/dependabot.yml +20 -0
  5. data/.github/probots.yml +1 -1
  6. data/.github/pull_request_template.md +20 -0
  7. data/.github/workflows/build.yml +16 -15
  8. data/.rubocop.yml +49 -18
  9. data/CHANGELOG.md +12 -0
  10. data/CONTRIBUTING.md +4 -3
  11. data/Gemfile +6 -4
  12. data/Gemfile.lock +107 -120
  13. data/LICENSE +2 -2
  14. data/README.md +92 -492
  15. data/RELEASING +1 -1
  16. data/Rakefile +14 -46
  17. data/SECURITY.md +2 -2
  18. data/bin/tapioca +29 -0
  19. data/dev.yml +32 -0
  20. data/docs/README.md +13 -0
  21. data/docs/getting_started.md +53 -0
  22. data/docs/issues.md +39 -0
  23. data/docs/usage/graphql.md +115 -0
  24. data/docs/usage/graphql_storefront.md +42 -0
  25. data/docs/usage/oauth.md +105 -0
  26. data/docs/usage/rest.md +137 -0
  27. data/docs/usage/session_storage.md +46 -0
  28. data/docs/usage/webhooks.md +98 -0
  29. data/lib/shopify_api/admin_versions.rb +15 -0
  30. data/lib/shopify_api/auth/associated_user.rb +36 -0
  31. data/lib/shopify_api/auth/auth_scopes.rb +75 -0
  32. data/lib/shopify_api/auth/file_session_storage.rb +70 -0
  33. data/lib/shopify_api/auth/jwt_payload.rb +69 -0
  34. data/lib/shopify_api/auth/oauth/auth_query.rb +47 -0
  35. data/lib/shopify_api/auth/oauth/session_cookie.rb +28 -0
  36. data/lib/shopify_api/auth/oauth.rb +129 -0
  37. data/lib/shopify_api/auth/session.rb +119 -0
  38. data/lib/shopify_api/auth/session_storage.rb +30 -0
  39. data/lib/shopify_api/clients/graphql/admin.rb +15 -0
  40. data/lib/shopify_api/clients/graphql/client.rb +40 -0
  41. data/lib/shopify_api/clients/graphql/storefront.rb +35 -0
  42. data/lib/shopify_api/clients/http_client.rb +100 -0
  43. data/lib/shopify_api/clients/http_request.rb +35 -0
  44. data/lib/shopify_api/clients/http_response.rb +66 -0
  45. data/lib/shopify_api/clients/rest/admin.rb +118 -0
  46. data/lib/shopify_api/context.rb +151 -0
  47. data/lib/shopify_api/errors/context_not_setup_error.rb +9 -0
  48. data/lib/shopify_api/errors/cookie_not_found_error.rb +9 -0
  49. data/lib/shopify_api/errors/http_response_error.rb +19 -0
  50. data/lib/shopify_api/errors/invalid_graphql_request_error.rb +9 -0
  51. data/lib/shopify_api/errors/invalid_http_request_error.rb +9 -0
  52. data/lib/shopify_api/errors/invalid_jwt_token_error.rb +9 -0
  53. data/lib/shopify_api/errors/invalid_oauth_error.rb +9 -0
  54. data/lib/shopify_api/errors/invalid_webhook_error.rb +9 -0
  55. data/lib/shopify_api/errors/invalid_webhook_registration_error.rb +9 -0
  56. data/lib/shopify_api/errors/max_http_retries_exceeded_error.rb +9 -0
  57. data/lib/shopify_api/errors/missing_jwt_token_error.rb +9 -0
  58. data/lib/shopify_api/errors/no_active_session_error.rb +9 -0
  59. data/lib/shopify_api/errors/no_session_cookie_error.rb +9 -0
  60. data/lib/shopify_api/errors/no_webhook_handler.rb +9 -0
  61. data/lib/shopify_api/errors/private_app_error.rb +9 -0
  62. data/lib/shopify_api/errors/request_access_token_error.rb +9 -0
  63. data/lib/shopify_api/errors/session_not_found_error.rb +9 -0
  64. data/lib/shopify_api/errors/session_storage_error.rb +9 -0
  65. data/lib/shopify_api/errors/unsupported_oauth_error.rb +9 -0
  66. data/lib/shopify_api/errors/unsupported_version_error.rb +9 -0
  67. data/lib/shopify_api/errors/webhook_registration_error.rb +9 -0
  68. data/lib/shopify_api/inflector.rb +17 -0
  69. data/lib/shopify_api/rest/base.rb +318 -0
  70. data/lib/shopify_api/rest/base_errors.rb +32 -0
  71. data/lib/shopify_api/rest/resources/2021_07/abandoned_checkout.rb +186 -0
  72. data/lib/shopify_api/rest/resources/2021_07/access_scope.rb +54 -0
  73. data/lib/shopify_api/rest/resources/2021_07/android_pay_key.rb +73 -0
  74. data/lib/shopify_api/rest/resources/2021_07/apple_pay_certificate.rb +101 -0
  75. data/lib/shopify_api/rest/resources/2021_07/application_charge.rb +100 -0
  76. data/lib/shopify_api/rest/resources/2021_07/application_credit.rb +83 -0
  77. data/lib/shopify_api/rest/resources/2021_07/article.rb +254 -0
  78. data/lib/shopify_api/rest/resources/2021_07/asset.rb +114 -0
  79. data/lib/shopify_api/rest/resources/2021_07/assigned_fulfillment_order.rb +75 -0
  80. data/lib/shopify_api/rest/resources/2021_07/balance.rb +46 -0
  81. data/lib/shopify_api/rest/resources/2021_07/blog.rb +158 -0
  82. data/lib/shopify_api/rest/resources/2021_07/cancellation_request.rb +79 -0
  83. data/lib/shopify_api/rest/resources/2021_07/carrier_service.rb +112 -0
  84. data/lib/shopify_api/rest/resources/2021_07/checkout.rb +205 -0
  85. data/lib/shopify_api/rest/resources/2021_07/collect.rb +138 -0
  86. data/lib/shopify_api/rest/resources/2021_07/collection.rb +106 -0
  87. data/lib/shopify_api/rest/resources/2021_07/collection_listing.rb +151 -0
  88. data/lib/shopify_api/rest/resources/2021_07/comment.rb +279 -0
  89. data/lib/shopify_api/rest/resources/2021_07/country.rb +133 -0
  90. data/lib/shopify_api/rest/resources/2021_07/currency.rb +53 -0
  91. data/lib/shopify_api/rest/resources/2021_07/custom_collection.rb +183 -0
  92. data/lib/shopify_api/rest/resources/2021_07/customer.rb +285 -0
  93. data/lib/shopify_api/rest/resources/2021_07/customer_address.rb +197 -0
  94. data/lib/shopify_api/rest/resources/2021_07/customer_saved_search.rb +165 -0
  95. data/lib/shopify_api/rest/resources/2021_07/deprecated_api_call.rb +53 -0
  96. data/lib/shopify_api/rest/resources/2021_07/discount_code.rb +215 -0
  97. data/lib/shopify_api/rest/resources/2021_07/dispute.rb +107 -0
  98. data/lib/shopify_api/rest/resources/2021_07/draft_order.rb +266 -0
  99. data/lib/shopify_api/rest/resources/2021_07/event.rb +144 -0
  100. data/lib/shopify_api/rest/resources/2021_07/fulfillment.rb +191 -0
  101. data/lib/shopify_api/rest/resources/2021_07/fulfillment_event.rb +162 -0
  102. data/lib/shopify_api/rest/resources/2021_07/fulfillment_order.rb +224 -0
  103. data/lib/shopify_api/rest/resources/2021_07/fulfillment_request.rb +79 -0
  104. data/lib/shopify_api/rest/resources/2021_07/fulfillment_service.rb +126 -0
  105. data/lib/shopify_api/rest/resources/2021_07/gift_card.rb +203 -0
  106. data/lib/shopify_api/rest/resources/2021_07/gift_card_adjustment.rb +114 -0
  107. data/lib/shopify_api/rest/resources/2021_07/image.rb +153 -0
  108. data/lib/shopify_api/rest/resources/2021_07/inventory_item.rb +104 -0
  109. data/lib/shopify_api/rest/resources/2021_07/inventory_level.rb +175 -0
  110. data/lib/shopify_api/rest/resources/2021_07/location.rb +163 -0
  111. data/lib/shopify_api/rest/resources/2021_07/locations_for_move.rb +52 -0
  112. data/lib/shopify_api/rest/resources/2021_07/marketing_event.rb +205 -0
  113. data/lib/shopify_api/rest/resources/2021_07/metafield.rb +338 -0
  114. data/lib/shopify_api/rest/resources/2021_07/mobile_platform_application.rb +106 -0
  115. data/lib/shopify_api/rest/resources/2021_07/order.rb +466 -0
  116. data/lib/shopify_api/rest/resources/2021_07/order_risk.rb +131 -0
  117. data/lib/shopify_api/rest/resources/2021_07/page.rb +190 -0
  118. data/lib/shopify_api/rest/resources/2021_07/payment.rb +136 -0
  119. data/lib/shopify_api/rest/resources/2021_07/payment_gateway.rb +139 -0
  120. data/lib/shopify_api/rest/resources/2021_07/payment_transaction.rb +103 -0
  121. data/lib/shopify_api/rest/resources/2021_07/payout.rb +93 -0
  122. data/lib/shopify_api/rest/resources/2021_07/policy.rb +65 -0
  123. data/lib/shopify_api/rest/resources/2021_07/price_rule.rb +219 -0
  124. data/lib/shopify_api/rest/resources/2021_07/product.rb +219 -0
  125. data/lib/shopify_api/rest/resources/2021_07/product_listing.rb +192 -0
  126. data/lib/shopify_api/rest/resources/2021_07/product_resource_feedback.rb +84 -0
  127. data/lib/shopify_api/rest/resources/2021_07/province.rb +128 -0
  128. data/lib/shopify_api/rest/resources/2021_07/recurring_application_charge.rb +163 -0
  129. data/lib/shopify_api/rest/resources/2021_07/redirect.rb +135 -0
  130. data/lib/shopify_api/rest/resources/2021_07/refund.rb +147 -0
  131. data/lib/shopify_api/rest/resources/2021_07/report.rb +117 -0
  132. data/lib/shopify_api/rest/resources/2021_07/resource_feedback.rb +69 -0
  133. data/lib/shopify_api/rest/resources/2021_07/script_tag.rb +151 -0
  134. data/lib/shopify_api/rest/resources/2021_07/shipping_zone.rb +79 -0
  135. data/lib/shopify_api/rest/resources/2021_07/shop.rb +214 -0
  136. data/lib/shopify_api/rest/resources/2021_07/smart_collection.rb +212 -0
  137. data/lib/shopify_api/rest/resources/2021_07/storefront_access_token.rb +83 -0
  138. data/lib/shopify_api/rest/resources/2021_07/tender_transaction.rb +89 -0
  139. data/lib/shopify_api/rest/resources/2021_07/theme.rb +116 -0
  140. data/lib/shopify_api/rest/resources/2021_07/transaction.rb +174 -0
  141. data/lib/shopify_api/rest/resources/2021_07/usage_charge.rb +93 -0
  142. data/lib/shopify_api/rest/resources/2021_07/user.rb +134 -0
  143. data/lib/shopify_api/rest/resources/2021_07/variant.rb +204 -0
  144. data/lib/shopify_api/rest/resources/2021_07/webhook.rb +164 -0
  145. data/lib/shopify_api/rest/resources/2021_10/abandoned_checkout.rb +186 -0
  146. data/lib/shopify_api/rest/resources/2021_10/access_scope.rb +54 -0
  147. data/lib/shopify_api/rest/resources/2021_10/android_pay_key.rb +73 -0
  148. data/lib/shopify_api/rest/resources/2021_10/apple_pay_certificate.rb +101 -0
  149. data/lib/shopify_api/rest/resources/2021_10/application_charge.rb +100 -0
  150. data/lib/shopify_api/rest/resources/2021_10/application_credit.rb +83 -0
  151. data/lib/shopify_api/rest/resources/2021_10/article.rb +254 -0
  152. data/lib/shopify_api/rest/resources/2021_10/asset.rb +114 -0
  153. data/lib/shopify_api/rest/resources/2021_10/assigned_fulfillment_order.rb +75 -0
  154. data/lib/shopify_api/rest/resources/2021_10/balance.rb +46 -0
  155. data/lib/shopify_api/rest/resources/2021_10/blog.rb +158 -0
  156. data/lib/shopify_api/rest/resources/2021_10/cancellation_request.rb +79 -0
  157. data/lib/shopify_api/rest/resources/2021_10/carrier_service.rb +112 -0
  158. data/lib/shopify_api/rest/resources/2021_10/checkout.rb +205 -0
  159. data/lib/shopify_api/rest/resources/2021_10/collect.rb +138 -0
  160. data/lib/shopify_api/rest/resources/2021_10/collection.rb +106 -0
  161. data/lib/shopify_api/rest/resources/2021_10/collection_listing.rb +151 -0
  162. data/lib/shopify_api/rest/resources/2021_10/comment.rb +279 -0
  163. data/lib/shopify_api/rest/resources/2021_10/country.rb +133 -0
  164. data/lib/shopify_api/rest/resources/2021_10/currency.rb +53 -0
  165. data/lib/shopify_api/rest/resources/2021_10/custom_collection.rb +183 -0
  166. data/lib/shopify_api/rest/resources/2021_10/customer.rb +288 -0
  167. data/lib/shopify_api/rest/resources/2021_10/customer_address.rb +197 -0
  168. data/lib/shopify_api/rest/resources/2021_10/customer_saved_search.rb +165 -0
  169. data/lib/shopify_api/rest/resources/2021_10/deprecated_api_call.rb +53 -0
  170. data/lib/shopify_api/rest/resources/2021_10/discount_code.rb +215 -0
  171. data/lib/shopify_api/rest/resources/2021_10/dispute.rb +107 -0
  172. data/lib/shopify_api/rest/resources/2021_10/draft_order.rb +269 -0
  173. data/lib/shopify_api/rest/resources/2021_10/event.rb +144 -0
  174. data/lib/shopify_api/rest/resources/2021_10/fulfillment.rb +194 -0
  175. data/lib/shopify_api/rest/resources/2021_10/fulfillment_event.rb +162 -0
  176. data/lib/shopify_api/rest/resources/2021_10/fulfillment_order.rb +277 -0
  177. data/lib/shopify_api/rest/resources/2021_10/fulfillment_request.rb +79 -0
  178. data/lib/shopify_api/rest/resources/2021_10/fulfillment_service.rb +126 -0
  179. data/lib/shopify_api/rest/resources/2021_10/gift_card.rb +203 -0
  180. data/lib/shopify_api/rest/resources/2021_10/gift_card_adjustment.rb +114 -0
  181. data/lib/shopify_api/rest/resources/2021_10/image.rb +153 -0
  182. data/lib/shopify_api/rest/resources/2021_10/inventory_item.rb +104 -0
  183. data/lib/shopify_api/rest/resources/2021_10/inventory_level.rb +175 -0
  184. data/lib/shopify_api/rest/resources/2021_10/location.rb +163 -0
  185. data/lib/shopify_api/rest/resources/2021_10/locations_for_move.rb +52 -0
  186. data/lib/shopify_api/rest/resources/2021_10/marketing_event.rb +205 -0
  187. data/lib/shopify_api/rest/resources/2021_10/metafield.rb +338 -0
  188. data/lib/shopify_api/rest/resources/2021_10/mobile_platform_application.rb +106 -0
  189. data/lib/shopify_api/rest/resources/2021_10/order.rb +469 -0
  190. data/lib/shopify_api/rest/resources/2021_10/order_risk.rb +131 -0
  191. data/lib/shopify_api/rest/resources/2021_10/page.rb +190 -0
  192. data/lib/shopify_api/rest/resources/2021_10/payment.rb +136 -0
  193. data/lib/shopify_api/rest/resources/2021_10/payment_gateway.rb +139 -0
  194. data/lib/shopify_api/rest/resources/2021_10/payment_transaction.rb +103 -0
  195. data/lib/shopify_api/rest/resources/2021_10/payout.rb +93 -0
  196. data/lib/shopify_api/rest/resources/2021_10/policy.rb +65 -0
  197. data/lib/shopify_api/rest/resources/2021_10/price_rule.rb +219 -0
  198. data/lib/shopify_api/rest/resources/2021_10/product.rb +219 -0
  199. data/lib/shopify_api/rest/resources/2021_10/product_listing.rb +192 -0
  200. data/lib/shopify_api/rest/resources/2021_10/product_resource_feedback.rb +84 -0
  201. data/lib/shopify_api/rest/resources/2021_10/province.rb +128 -0
  202. data/lib/shopify_api/rest/resources/2021_10/recurring_application_charge.rb +163 -0
  203. data/lib/shopify_api/rest/resources/2021_10/redirect.rb +135 -0
  204. data/lib/shopify_api/rest/resources/2021_10/refund.rb +147 -0
  205. data/lib/shopify_api/rest/resources/2021_10/report.rb +117 -0
  206. data/lib/shopify_api/rest/resources/2021_10/resource_feedback.rb +69 -0
  207. data/lib/shopify_api/rest/resources/2021_10/script_tag.rb +151 -0
  208. data/lib/shopify_api/rest/resources/2021_10/shipping_zone.rb +79 -0
  209. data/lib/shopify_api/rest/resources/2021_10/shop.rb +214 -0
  210. data/lib/shopify_api/rest/resources/2021_10/smart_collection.rb +212 -0
  211. data/lib/shopify_api/rest/resources/2021_10/storefront_access_token.rb +83 -0
  212. data/lib/shopify_api/rest/resources/2021_10/tender_transaction.rb +89 -0
  213. data/lib/shopify_api/rest/resources/2021_10/theme.rb +116 -0
  214. data/lib/shopify_api/rest/resources/2021_10/transaction.rb +177 -0
  215. data/lib/shopify_api/rest/resources/2021_10/usage_charge.rb +93 -0
  216. data/lib/shopify_api/rest/resources/2021_10/user.rb +134 -0
  217. data/lib/shopify_api/rest/resources/2021_10/variant.rb +204 -0
  218. data/lib/shopify_api/rest/resources/2021_10/webhook.rb +164 -0
  219. data/lib/shopify_api/rest/resources/2022_01/abandoned_checkout.rb +186 -0
  220. data/lib/shopify_api/rest/resources/2022_01/access_scope.rb +54 -0
  221. data/lib/shopify_api/rest/resources/2022_01/android_pay_key.rb +73 -0
  222. data/lib/shopify_api/rest/resources/2022_01/apple_pay_certificate.rb +101 -0
  223. data/lib/shopify_api/rest/resources/2022_01/application_charge.rb +100 -0
  224. data/lib/shopify_api/rest/resources/2022_01/application_credit.rb +83 -0
  225. data/lib/shopify_api/rest/resources/2022_01/article.rb +254 -0
  226. data/lib/shopify_api/rest/resources/2022_01/asset.rb +114 -0
  227. data/lib/shopify_api/rest/resources/2022_01/assigned_fulfillment_order.rb +75 -0
  228. data/lib/shopify_api/rest/resources/2022_01/balance.rb +46 -0
  229. data/lib/shopify_api/rest/resources/2022_01/blog.rb +158 -0
  230. data/lib/shopify_api/rest/resources/2022_01/cancellation_request.rb +79 -0
  231. data/lib/shopify_api/rest/resources/2022_01/carrier_service.rb +112 -0
  232. data/lib/shopify_api/rest/resources/2022_01/checkout.rb +205 -0
  233. data/lib/shopify_api/rest/resources/2022_01/collect.rb +138 -0
  234. data/lib/shopify_api/rest/resources/2022_01/collection.rb +106 -0
  235. data/lib/shopify_api/rest/resources/2022_01/collection_listing.rb +151 -0
  236. data/lib/shopify_api/rest/resources/2022_01/comment.rb +279 -0
  237. data/lib/shopify_api/rest/resources/2022_01/country.rb +133 -0
  238. data/lib/shopify_api/rest/resources/2022_01/currency.rb +53 -0
  239. data/lib/shopify_api/rest/resources/2022_01/custom_collection.rb +183 -0
  240. data/lib/shopify_api/rest/resources/2022_01/customer.rb +288 -0
  241. data/lib/shopify_api/rest/resources/2022_01/customer_address.rb +197 -0
  242. data/lib/shopify_api/rest/resources/2022_01/customer_saved_search.rb +165 -0
  243. data/lib/shopify_api/rest/resources/2022_01/deprecated_api_call.rb +53 -0
  244. data/lib/shopify_api/rest/resources/2022_01/discount_code.rb +215 -0
  245. data/lib/shopify_api/rest/resources/2022_01/dispute.rb +107 -0
  246. data/lib/shopify_api/rest/resources/2022_01/draft_order.rb +269 -0
  247. data/lib/shopify_api/rest/resources/2022_01/event.rb +144 -0
  248. data/lib/shopify_api/rest/resources/2022_01/fulfillment.rb +194 -0
  249. data/lib/shopify_api/rest/resources/2022_01/fulfillment_event.rb +162 -0
  250. data/lib/shopify_api/rest/resources/2022_01/fulfillment_order.rb +277 -0
  251. data/lib/shopify_api/rest/resources/2022_01/fulfillment_request.rb +79 -0
  252. data/lib/shopify_api/rest/resources/2022_01/fulfillment_service.rb +126 -0
  253. data/lib/shopify_api/rest/resources/2022_01/gift_card.rb +203 -0
  254. data/lib/shopify_api/rest/resources/2022_01/gift_card_adjustment.rb +114 -0
  255. data/lib/shopify_api/rest/resources/2022_01/image.rb +153 -0
  256. data/lib/shopify_api/rest/resources/2022_01/inventory_item.rb +104 -0
  257. data/lib/shopify_api/rest/resources/2022_01/inventory_level.rb +175 -0
  258. data/lib/shopify_api/rest/resources/2022_01/location.rb +163 -0
  259. data/lib/shopify_api/rest/resources/2022_01/locations_for_move.rb +52 -0
  260. data/lib/shopify_api/rest/resources/2022_01/marketing_event.rb +205 -0
  261. data/lib/shopify_api/rest/resources/2022_01/metafield.rb +338 -0
  262. data/lib/shopify_api/rest/resources/2022_01/mobile_platform_application.rb +106 -0
  263. data/lib/shopify_api/rest/resources/2022_01/order.rb +469 -0
  264. data/lib/shopify_api/rest/resources/2022_01/order_risk.rb +131 -0
  265. data/lib/shopify_api/rest/resources/2022_01/page.rb +190 -0
  266. data/lib/shopify_api/rest/resources/2022_01/payment.rb +136 -0
  267. data/lib/shopify_api/rest/resources/2022_01/payment_gateway.rb +139 -0
  268. data/lib/shopify_api/rest/resources/2022_01/payment_transaction.rb +103 -0
  269. data/lib/shopify_api/rest/resources/2022_01/payout.rb +93 -0
  270. data/lib/shopify_api/rest/resources/2022_01/policy.rb +65 -0
  271. data/lib/shopify_api/rest/resources/2022_01/price_rule.rb +219 -0
  272. data/lib/shopify_api/rest/resources/2022_01/product.rb +219 -0
  273. data/lib/shopify_api/rest/resources/2022_01/product_listing.rb +192 -0
  274. data/lib/shopify_api/rest/resources/2022_01/product_resource_feedback.rb +84 -0
  275. data/lib/shopify_api/rest/resources/2022_01/province.rb +128 -0
  276. data/lib/shopify_api/rest/resources/2022_01/recurring_application_charge.rb +163 -0
  277. data/lib/shopify_api/rest/resources/2022_01/redirect.rb +135 -0
  278. data/lib/shopify_api/rest/resources/2022_01/refund.rb +147 -0
  279. data/lib/shopify_api/rest/resources/2022_01/report.rb +117 -0
  280. data/lib/shopify_api/rest/resources/2022_01/resource_feedback.rb +69 -0
  281. data/lib/shopify_api/rest/resources/2022_01/script_tag.rb +151 -0
  282. data/lib/shopify_api/rest/resources/2022_01/shipping_zone.rb +79 -0
  283. data/lib/shopify_api/rest/resources/2022_01/shop.rb +214 -0
  284. data/lib/shopify_api/rest/resources/2022_01/smart_collection.rb +212 -0
  285. data/lib/shopify_api/rest/resources/2022_01/storefront_access_token.rb +83 -0
  286. data/lib/shopify_api/rest/resources/2022_01/tender_transaction.rb +89 -0
  287. data/lib/shopify_api/rest/resources/2022_01/theme.rb +116 -0
  288. data/lib/shopify_api/rest/resources/2022_01/transaction.rb +177 -0
  289. data/lib/shopify_api/rest/resources/2022_01/usage_charge.rb +93 -0
  290. data/lib/shopify_api/rest/resources/2022_01/user.rb +134 -0
  291. data/lib/shopify_api/rest/resources/2022_01/variant.rb +204 -0
  292. data/lib/shopify_api/rest/resources/2022_01/webhook.rb +164 -0
  293. data/lib/shopify_api/rest/resources/2022_04/abandoned_checkout.rb +186 -0
  294. data/lib/shopify_api/rest/resources/2022_04/access_scope.rb +54 -0
  295. data/lib/shopify_api/rest/resources/2022_04/android_pay_key.rb +73 -0
  296. data/lib/shopify_api/rest/resources/2022_04/apple_pay_certificate.rb +101 -0
  297. data/lib/shopify_api/rest/resources/2022_04/application_charge.rb +100 -0
  298. data/lib/shopify_api/rest/resources/2022_04/application_credit.rb +83 -0
  299. data/lib/shopify_api/rest/resources/2022_04/article.rb +254 -0
  300. data/lib/shopify_api/rest/resources/2022_04/asset.rb +114 -0
  301. data/lib/shopify_api/rest/resources/2022_04/assigned_fulfillment_order.rb +75 -0
  302. data/lib/shopify_api/rest/resources/2022_04/balance.rb +46 -0
  303. data/lib/shopify_api/rest/resources/2022_04/blog.rb +158 -0
  304. data/lib/shopify_api/rest/resources/2022_04/cancellation_request.rb +79 -0
  305. data/lib/shopify_api/rest/resources/2022_04/carrier_service.rb +112 -0
  306. data/lib/shopify_api/rest/resources/2022_04/checkout.rb +205 -0
  307. data/lib/shopify_api/rest/resources/2022_04/collect.rb +138 -0
  308. data/lib/shopify_api/rest/resources/2022_04/collection.rb +106 -0
  309. data/lib/shopify_api/rest/resources/2022_04/collection_listing.rb +151 -0
  310. data/lib/shopify_api/rest/resources/2022_04/comment.rb +279 -0
  311. data/lib/shopify_api/rest/resources/2022_04/country.rb +133 -0
  312. data/lib/shopify_api/rest/resources/2022_04/currency.rb +53 -0
  313. data/lib/shopify_api/rest/resources/2022_04/custom_collection.rb +183 -0
  314. data/lib/shopify_api/rest/resources/2022_04/customer.rb +291 -0
  315. data/lib/shopify_api/rest/resources/2022_04/customer_address.rb +197 -0
  316. data/lib/shopify_api/rest/resources/2022_04/customer_saved_search.rb +165 -0
  317. data/lib/shopify_api/rest/resources/2022_04/deprecated_api_call.rb +53 -0
  318. data/lib/shopify_api/rest/resources/2022_04/discount_code.rb +215 -0
  319. data/lib/shopify_api/rest/resources/2022_04/dispute.rb +107 -0
  320. data/lib/shopify_api/rest/resources/2022_04/draft_order.rb +269 -0
  321. data/lib/shopify_api/rest/resources/2022_04/event.rb +144 -0
  322. data/lib/shopify_api/rest/resources/2022_04/fulfillment.rb +194 -0
  323. data/lib/shopify_api/rest/resources/2022_04/fulfillment_event.rb +162 -0
  324. data/lib/shopify_api/rest/resources/2022_04/fulfillment_order.rb +277 -0
  325. data/lib/shopify_api/rest/resources/2022_04/fulfillment_request.rb +79 -0
  326. data/lib/shopify_api/rest/resources/2022_04/fulfillment_service.rb +126 -0
  327. data/lib/shopify_api/rest/resources/2022_04/gift_card.rb +203 -0
  328. data/lib/shopify_api/rest/resources/2022_04/gift_card_adjustment.rb +114 -0
  329. data/lib/shopify_api/rest/resources/2022_04/image.rb +153 -0
  330. data/lib/shopify_api/rest/resources/2022_04/inventory_item.rb +104 -0
  331. data/lib/shopify_api/rest/resources/2022_04/inventory_level.rb +175 -0
  332. data/lib/shopify_api/rest/resources/2022_04/location.rb +163 -0
  333. data/lib/shopify_api/rest/resources/2022_04/locations_for_move.rb +52 -0
  334. data/lib/shopify_api/rest/resources/2022_04/marketing_event.rb +205 -0
  335. data/lib/shopify_api/rest/resources/2022_04/metafield.rb +338 -0
  336. data/lib/shopify_api/rest/resources/2022_04/mobile_platform_application.rb +106 -0
  337. data/lib/shopify_api/rest/resources/2022_04/order.rb +469 -0
  338. data/lib/shopify_api/rest/resources/2022_04/order_risk.rb +131 -0
  339. data/lib/shopify_api/rest/resources/2022_04/page.rb +190 -0
  340. data/lib/shopify_api/rest/resources/2022_04/payment.rb +136 -0
  341. data/lib/shopify_api/rest/resources/2022_04/payment_gateway.rb +139 -0
  342. data/lib/shopify_api/rest/resources/2022_04/payment_transaction.rb +103 -0
  343. data/lib/shopify_api/rest/resources/2022_04/payout.rb +93 -0
  344. data/lib/shopify_api/rest/resources/2022_04/policy.rb +65 -0
  345. data/lib/shopify_api/rest/resources/2022_04/price_rule.rb +219 -0
  346. data/lib/shopify_api/rest/resources/2022_04/product.rb +219 -0
  347. data/lib/shopify_api/rest/resources/2022_04/product_listing.rb +192 -0
  348. data/lib/shopify_api/rest/resources/2022_04/product_resource_feedback.rb +84 -0
  349. data/lib/shopify_api/rest/resources/2022_04/province.rb +128 -0
  350. data/lib/shopify_api/rest/resources/2022_04/recurring_application_charge.rb +163 -0
  351. data/lib/shopify_api/rest/resources/2022_04/redirect.rb +135 -0
  352. data/lib/shopify_api/rest/resources/2022_04/refund.rb +147 -0
  353. data/lib/shopify_api/rest/resources/2022_04/report.rb +117 -0
  354. data/lib/shopify_api/rest/resources/2022_04/resource_feedback.rb +69 -0
  355. data/lib/shopify_api/rest/resources/2022_04/script_tag.rb +151 -0
  356. data/lib/shopify_api/rest/resources/2022_04/shipping_zone.rb +79 -0
  357. data/lib/shopify_api/rest/resources/2022_04/shop.rb +214 -0
  358. data/lib/shopify_api/rest/resources/2022_04/smart_collection.rb +212 -0
  359. data/lib/shopify_api/rest/resources/2022_04/storefront_access_token.rb +83 -0
  360. data/lib/shopify_api/rest/resources/2022_04/tender_transaction.rb +89 -0
  361. data/lib/shopify_api/rest/resources/2022_04/theme.rb +116 -0
  362. data/lib/shopify_api/rest/resources/2022_04/transaction.rb +177 -0
  363. data/lib/shopify_api/rest/resources/2022_04/usage_charge.rb +93 -0
  364. data/lib/shopify_api/rest/resources/2022_04/user.rb +134 -0
  365. data/lib/shopify_api/rest/resources/2022_04/variant.rb +204 -0
  366. data/lib/shopify_api/rest/resources/2022_04/webhook.rb +164 -0
  367. data/lib/shopify_api/utils/graphql_proxy.rb +52 -0
  368. data/lib/shopify_api/utils/hmac_validator.rb +34 -0
  369. data/lib/shopify_api/utils/http_utils.rb +17 -0
  370. data/lib/shopify_api/utils/session_utils.rb +135 -0
  371. data/lib/shopify_api/utils/verifiable_query.rb +18 -0
  372. data/lib/shopify_api/version.rb +3 -1
  373. data/lib/shopify_api/webhooks/handler.rb +15 -0
  374. data/lib/shopify_api/webhooks/register_result.rb +14 -0
  375. data/lib/shopify_api/webhooks/registration.rb +73 -0
  376. data/lib/shopify_api/webhooks/registrations/event_bridge.rb +61 -0
  377. data/lib/shopify_api/webhooks/registrations/http.rb +66 -0
  378. data/lib/shopify_api/webhooks/registrations/pub_sub.rb +65 -0
  379. data/lib/shopify_api/webhooks/registry.rb +216 -0
  380. data/lib/shopify_api/webhooks/request.rb +56 -0
  381. data/lib/shopify_api.rb +18 -35
  382. data/service.yml +0 -6
  383. data/shipit.rubygems.yml +1 -1
  384. data/shopify_api.gemspec +28 -23
  385. data/sorbet/config +3 -0
  386. data/sorbet/rbi/gems/activesupport@7.0.1.rbi +654 -0
  387. data/sorbet/rbi/gems/addressable@2.8.0.rbi +290 -0
  388. data/sorbet/rbi/gems/ast@2.4.2.rbi +54 -0
  389. data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
  390. data/sorbet/rbi/gems/concurrent-ruby@1.1.9.rbi +2401 -0
  391. data/sorbet/rbi/gems/crack@0.4.5.rbi +57 -0
  392. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +185 -0
  393. data/sorbet/rbi/gems/fakefs@1.4.1.rbi +571 -0
  394. data/sorbet/rbi/gems/hash_diff@1.0.0.rbi +47 -0
  395. data/sorbet/rbi/gems/hashdiff@1.0.1.rbi +82 -0
  396. data/sorbet/rbi/gems/httparty@0.20.0.rbi +573 -0
  397. data/sorbet/rbi/gems/i18n@1.8.11.rbi +25 -0
  398. data/sorbet/rbi/gems/jwt@2.3.0.rbi +437 -0
  399. data/sorbet/rbi/gems/method_source@1.0.0.rbi +8 -0
  400. data/sorbet/rbi/gems/mime-types-data@3.2022.0105.rbi +73 -0
  401. data/sorbet/rbi/gems/mime-types@3.4.1.rbi +295 -0
  402. data/sorbet/rbi/gems/minitest@5.15.0.rbi +541 -0
  403. data/sorbet/rbi/gems/mocha@1.13.0.rbi +986 -0
  404. data/sorbet/rbi/gems/multi_xml@0.6.0.rbi +36 -0
  405. data/sorbet/rbi/gems/oj@3.13.11.rbi +274 -0
  406. data/sorbet/rbi/gems/openssl@3.0.0.rbi +581 -0
  407. data/sorbet/rbi/gems/parallel@1.21.0.rbi +113 -0
  408. data/sorbet/rbi/gems/parser@3.1.0.0.rbi +1741 -0
  409. data/sorbet/rbi/gems/pry@0.14.1.rbi +8 -0
  410. data/sorbet/rbi/gems/public_suffix@4.0.6.rbi +145 -0
  411. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +157 -0
  412. data/sorbet/rbi/gems/rake@13.0.6.rbi +814 -0
  413. data/sorbet/rbi/gems/rbi@0.0.11.rbi +1646 -0
  414. data/sorbet/rbi/gems/regexp_parser@2.2.0.rbi +1130 -0
  415. data/sorbet/rbi/gems/rexml@3.2.5.rbi +709 -0
  416. data/sorbet/rbi/gems/rubocop-ast@1.15.1.rbi +1921 -0
  417. data/sorbet/rbi/gems/rubocop-shopify@2.4.0.rbi +8 -0
  418. data/sorbet/rbi/gems/rubocop-sorbet@0.6.5.rbi +295 -0
  419. data/sorbet/rbi/gems/rubocop@1.25.1.rbi +13507 -0
  420. data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +405 -0
  421. data/sorbet/rbi/gems/securerandom@0.1.1.rbi +10 -0
  422. data/sorbet/rbi/gems/spoom@1.1.8.rbi +1252 -0
  423. data/sorbet/rbi/gems/tapioca@0.6.3.rbi +1238 -0
  424. data/sorbet/rbi/gems/thor@1.2.1.rbi +844 -0
  425. data/sorbet/rbi/gems/tzinfo@2.0.4.rbi +858 -0
  426. data/sorbet/rbi/gems/unicode-display_width@2.1.0.rbi +26 -0
  427. data/sorbet/rbi/gems/unparser@0.6.3.rbi +1816 -0
  428. data/sorbet/rbi/gems/webmock@3.14.0.rbi +683 -0
  429. data/sorbet/rbi/gems/webrick@1.7.0.rbi +601 -0
  430. data/sorbet/rbi/gems/yard-sorbet@0.6.1.rbi +199 -0
  431. data/sorbet/rbi/gems/yard@0.9.27.rbi +4145 -0
  432. data/sorbet/rbi/gems/zeitwerk@2.5.4.rbi +200 -0
  433. data/sorbet/rbi/shims/fakefs.rbi +1 -0
  434. data/sorbet/rbi/shims/openssl.rb +3 -0
  435. data/sorbet/rbi/todo.rbi +9 -0
  436. data/sorbet/tapioca/config.yml +4 -0
  437. data/sorbet/tapioca/require.rb +20 -0
  438. metadata +511 -358
  439. data/.document +0 -5
  440. data/.gitignore +0 -14
  441. data/.rubocop_todo.yml +0 -75
  442. data/CONTRIBUTORS +0 -3
  443. data/Gemfile_ar41 +0 -5
  444. data/Gemfile_ar50 +0 -5
  445. data/Gemfile_ar51 +0 -5
  446. data/Gemfile_ar_master +0 -5
  447. data/docker-compose.yml +0 -13
  448. data/docs/_config.yml +0 -1
  449. data/docs/_includes/footer.html +0 -28
  450. data/docs/_includes/head.html +0 -28
  451. data/docs/_layouts/index.html +0 -57
  452. data/docs/graphql.md +0 -241
  453. data/docs/index.md +0 -639
  454. data/lib/active_resource/connection_ext.rb +0 -11
  455. data/lib/active_resource/detailed_log_subscriber.rb +0 -55
  456. data/lib/active_resource/json_errors.rb +0 -37
  457. data/lib/shopify_api/api_access.rb +0 -57
  458. data/lib/shopify_api/api_version.rb +0 -206
  459. data/lib/shopify_api/connection.rb +0 -36
  460. data/lib/shopify_api/countable.rb +0 -15
  461. data/lib/shopify_api/disable_prefix_check.rb +0 -31
  462. data/lib/shopify_api/events.rb +0 -8
  463. data/lib/shopify_api/graphql/http_client.rb +0 -22
  464. data/lib/shopify_api/graphql/railtie.rb +0 -17
  465. data/lib/shopify_api/graphql/task.rake +0 -100
  466. data/lib/shopify_api/graphql.rb +0 -103
  467. data/lib/shopify_api/limits.rb +0 -77
  468. data/lib/shopify_api/message_enricher.rb +0 -25
  469. data/lib/shopify_api/meta.rb +0 -14
  470. data/lib/shopify_api/metafields.rb +0 -21
  471. data/lib/shopify_api/paginated_collection.rb +0 -69
  472. data/lib/shopify_api/pagination_link_headers.rb +0 -34
  473. data/lib/shopify_api/resources/abandoned_checkout.rb +0 -7
  474. data/lib/shopify_api/resources/access_scope.rb +0 -10
  475. data/lib/shopify_api/resources/access_token.rb +0 -9
  476. data/lib/shopify_api/resources/address.rb +0 -5
  477. data/lib/shopify_api/resources/announcement.rb +0 -5
  478. data/lib/shopify_api/resources/api_permission.rb +0 -9
  479. data/lib/shopify_api/resources/application_charge.rb +0 -16
  480. data/lib/shopify_api/resources/application_credit.rb +0 -5
  481. data/lib/shopify_api/resources/array_base.rb +0 -13
  482. data/lib/shopify_api/resources/article.rb +0 -22
  483. data/lib/shopify_api/resources/asset.rb +0 -101
  484. data/lib/shopify_api/resources/assigned_fulfillment_order.rb +0 -16
  485. data/lib/shopify_api/resources/base.rb +0 -166
  486. data/lib/shopify_api/resources/billing_address.rb +0 -5
  487. data/lib/shopify_api/resources/blog.rb +0 -11
  488. data/lib/shopify_api/resources/carrier_service.rb +0 -5
  489. data/lib/shopify_api/resources/cart.rb +0 -5
  490. data/lib/shopify_api/resources/checkout.rb +0 -30
  491. data/lib/shopify_api/resources/collect.rb +0 -7
  492. data/lib/shopify_api/resources/collection.rb +0 -14
  493. data/lib/shopify_api/resources/collection_listing.rb +0 -19
  494. data/lib/shopify_api/resources/collection_publication.rb +0 -10
  495. data/lib/shopify_api/resources/comment.rb +0 -24
  496. data/lib/shopify_api/resources/country.rb +0 -5
  497. data/lib/shopify_api/resources/currency.rb +0 -6
  498. data/lib/shopify_api/resources/custom_collection.rb +0 -20
  499. data/lib/shopify_api/resources/customer.rb +0 -30
  500. data/lib/shopify_api/resources/customer_group.rb +0 -6
  501. data/lib/shopify_api/resources/customer_invite.rb +0 -5
  502. data/lib/shopify_api/resources/customer_saved_search.rb +0 -12
  503. data/lib/shopify_api/resources/discount_code.rb +0 -10
  504. data/lib/shopify_api/resources/discount_code_batch.rb +0 -34
  505. data/lib/shopify_api/resources/draft_order.rb +0 -15
  506. data/lib/shopify_api/resources/draft_order_invoice.rb +0 -5
  507. data/lib/shopify_api/resources/event.rb +0 -9
  508. data/lib/shopify_api/resources/fulfillment.rb +0 -56
  509. data/lib/shopify_api/resources/fulfillment_event.rb +0 -16
  510. data/lib/shopify_api/resources/fulfillment_order.rb +0 -151
  511. data/lib/shopify_api/resources/fulfillment_order_locations_for_move.rb +0 -5
  512. data/lib/shopify_api/resources/fulfillment_request.rb +0 -16
  513. data/lib/shopify_api/resources/fulfillment_service.rb +0 -5
  514. data/lib/shopify_api/resources/fulfillment_v2.rb +0 -21
  515. data/lib/shopify_api/resources/gift_card.rb +0 -8
  516. data/lib/shopify_api/resources/image.rb +0 -17
  517. data/lib/shopify_api/resources/inventory_item.rb +0 -6
  518. data/lib/shopify_api/resources/inventory_level.rb +0 -54
  519. data/lib/shopify_api/resources/line_item.rb +0 -15
  520. data/lib/shopify_api/resources/location.rb +0 -8
  521. data/lib/shopify_api/resources/marketing_event.rb +0 -11
  522. data/lib/shopify_api/resources/metafield.rb +0 -14
  523. data/lib/shopify_api/resources/note_attribute.rb +0 -5
  524. data/lib/shopify_api/resources/option.rb +0 -5
  525. data/lib/shopify_api/resources/order.rb +0 -44
  526. data/lib/shopify_api/resources/order_risk.rb +0 -9
  527. data/lib/shopify_api/resources/page.rb +0 -7
  528. data/lib/shopify_api/resources/payment.rb +0 -7
  529. data/lib/shopify_api/resources/payment_details.rb +0 -5
  530. data/lib/shopify_api/resources/ping.rb +0 -3
  531. data/lib/shopify_api/resources/policy.rb +0 -8
  532. data/lib/shopify_api/resources/price_rule.rb +0 -8
  533. data/lib/shopify_api/resources/product.rb +0 -59
  534. data/lib/shopify_api/resources/product_listing.rb +0 -17
  535. data/lib/shopify_api/resources/product_publication.rb +0 -10
  536. data/lib/shopify_api/resources/province.rb +0 -6
  537. data/lib/shopify_api/resources/publication.rb +0 -5
  538. data/lib/shopify_api/resources/receipt.rb +0 -5
  539. data/lib/shopify_api/resources/recurring_application_charge.rb +0 -34
  540. data/lib/shopify_api/resources/redirect.rb +0 -5
  541. data/lib/shopify_api/resources/refund.rb +0 -15
  542. data/lib/shopify_api/resources/report.rb +0 -5
  543. data/lib/shopify_api/resources/resource_feedback.rb +0 -19
  544. data/lib/shopify_api/resources/rule.rb +0 -5
  545. data/lib/shopify_api/resources/script_tag.rb +0 -5
  546. data/lib/shopify_api/resources/shipping_address.rb +0 -5
  547. data/lib/shopify_api/resources/shipping_line.rb +0 -5
  548. data/lib/shopify_api/resources/shipping_rate.rb +0 -7
  549. data/lib/shopify_api/resources/shipping_zone.rb +0 -5
  550. data/lib/shopify_api/resources/shop.rb +0 -26
  551. data/lib/shopify_api/resources/smart_collection.rb +0 -15
  552. data/lib/shopify_api/resources/storefront_access_token.rb +0 -5
  553. data/lib/shopify_api/resources/tax_line.rb +0 -5
  554. data/lib/shopify_api/resources/tax_service.rb +0 -5
  555. data/lib/shopify_api/resources/tender_transaction.rb +0 -6
  556. data/lib/shopify_api/resources/theme.rb +0 -5
  557. data/lib/shopify_api/resources/transaction.rb +0 -6
  558. data/lib/shopify_api/resources/usage_charge.rb +0 -6
  559. data/lib/shopify_api/resources/user.rb +0 -5
  560. data/lib/shopify_api/resources/variant.rb +0 -43
  561. data/lib/shopify_api/resources/webhook.rb +0 -5
  562. data/lib/shopify_api/resources.rb +0 -4
  563. data/lib/shopify_api/session.rb +0 -208
  564. data/lib/verify_docs.rb +0 -8
  565. data/test/abandoned_checkouts_test.rb +0 -29
  566. data/test/access_scope_test.rb +0 -23
  567. data/test/access_token_test.rb +0 -20
  568. data/test/active_resource/json_errors_test.rb +0 -19
  569. data/test/api_access_test.rb +0 -153
  570. data/test/api_permission_test.rb +0 -9
  571. data/test/api_version_test.rb +0 -157
  572. data/test/application_charge_test.rb +0 -82
  573. data/test/application_credit_test.rb +0 -36
  574. data/test/article_test.rb +0 -72
  575. data/test/asset_test.rb +0 -26
  576. data/test/assigned_fulfillment_order_test.rb +0 -78
  577. data/test/base_test.rb +0 -213
  578. data/test/blog_test.rb +0 -9
  579. data/test/carrier_service_test.rb +0 -18
  580. data/test/cart_test.rb +0 -14
  581. data/test/checkouts_test.rb +0 -77
  582. data/test/collect_test.rb +0 -10
  583. data/test/collection_listing_test.rb +0 -84
  584. data/test/collection_publication_test.rb +0 -40
  585. data/test/collection_test.rb +0 -50
  586. data/test/countable_test.rb +0 -14
  587. data/test/currency_test.rb +0 -21
  588. data/test/custom_collection_test.rb +0 -10
  589. data/test/customer_saved_search_test.rb +0 -37
  590. data/test/customer_test.rb +0 -58
  591. data/test/detailed_log_subscriber_test.rb +0 -143
  592. data/test/discount_code_batch_test.rb +0 -41
  593. data/test/discount_code_test.rb +0 -59
  594. data/test/draft_order_test.rb +0 -167
  595. data/test/fixtures/abandoned_checkout.json +0 -184
  596. data/test/fixtures/abandoned_checkouts.json +0 -186
  597. data/test/fixtures/access_scopes.json +0 -10
  598. data/test/fixtures/access_token_delegate.json +0 -4
  599. data/test/fixtures/api_versions.json +0 -38
  600. data/test/fixtures/apis.json +0 -42
  601. data/test/fixtures/application_charge.json +0 -16
  602. data/test/fixtures/application_charges.json +0 -57
  603. data/test/fixtures/application_credit.json +0 -12
  604. data/test/fixtures/application_credits.json +0 -24
  605. data/test/fixtures/article.json +0 -15
  606. data/test/fixtures/articles.json +0 -39
  607. data/test/fixtures/asset.json +0 -9
  608. data/test/fixtures/assets.json +0 -136
  609. data/test/fixtures/assigned_fulfillment_orders.json +0 -80
  610. data/test/fixtures/authors.json +0 -1
  611. data/test/fixtures/blog.json +0 -13
  612. data/test/fixtures/blogs.json +0 -13
  613. data/test/fixtures/carrier_service.json +0 -9
  614. data/test/fixtures/carts.json +0 -43
  615. data/test/fixtures/checkout.json +0 -160
  616. data/test/fixtures/checkouts.json +0 -162
  617. data/test/fixtures/collect.json +0 -12
  618. data/test/fixtures/collection.json +0 -17
  619. data/test/fixtures/collection_listing.json +0 -11
  620. data/test/fixtures/collection_listing_product_ids.json +0 -1
  621. data/test/fixtures/collection_listing_product_ids2.json +0 -1
  622. data/test/fixtures/collection_listings.json +0 -13
  623. data/test/fixtures/collection_products.json +0 -47
  624. data/test/fixtures/collection_publication.json +0 -11
  625. data/test/fixtures/collection_publications.json +0 -13
  626. data/test/fixtures/currencies.json +0 -25
  627. data/test/fixtures/custom_collection.json +0 -17
  628. data/test/fixtures/customer_invite.json +0 -9
  629. data/test/fixtures/customer_saved_search.json +0 -9
  630. data/test/fixtures/customer_saved_search_customers.json +0 -60
  631. data/test/fixtures/customers.json +0 -59
  632. data/test/fixtures/customers_account_activation_url.json +0 -3
  633. data/test/fixtures/customers_search.json +0 -60
  634. data/test/fixtures/discount_code.json +0 -10
  635. data/test/fixtures/discount_code_batch.json +0 -14
  636. data/test/fixtures/discount_code_batch_discount_codes.json +0 -21
  637. data/test/fixtures/discount_codes.json +0 -12
  638. data/test/fixtures/draft_order.json +0 -159
  639. data/test/fixtures/draft_order_completed.json +0 -159
  640. data/test/fixtures/draft_order_invoice.json +0 -9
  641. data/test/fixtures/draft_orders.json +0 -161
  642. data/test/fixtures/engagement.json +0 -15
  643. data/test/fixtures/events.json +0 -31
  644. data/test/fixtures/fulfillment.json +0 -49
  645. data/test/fixtures/fulfillment_event.json +0 -12
  646. data/test/fixtures/fulfillment_order.json +0 -39
  647. data/test/fixtures/fulfillment_order_locations_for_move.json +0 -18
  648. data/test/fixtures/fulfillment_orders.json +0 -80
  649. data/test/fixtures/fulfillment_request.json +0 -28
  650. data/test/fixtures/fulfillment_service.json +0 -10
  651. data/test/fixtures/fulfillments.json +0 -53
  652. data/test/fixtures/gift_card.json +0 -20
  653. data/test/fixtures/gift_card_disabled.json +0 -20
  654. data/test/fixtures/graphql/2019-10.json +0 -1083
  655. data/test/fixtures/graphql/dummy_schema.rb +0 -16
  656. data/test/fixtures/graphql/unstable.json +0 -1083
  657. data/test/fixtures/image.json +0 -10
  658. data/test/fixtures/images.json +0 -20
  659. data/test/fixtures/inventory_level.json +0 -7
  660. data/test/fixtures/inventory_levels.json +0 -24
  661. data/test/fixtures/marketing_event.json +0 -28
  662. data/test/fixtures/marketing_events.json +0 -54
  663. data/test/fixtures/metafield.json +0 -12
  664. data/test/fixtures/metafields.json +0 -34
  665. data/test/fixtures/order.json +0 -297
  666. data/test/fixtures/order_risk.json +0 -14
  667. data/test/fixtures/order_risks.json +0 -28
  668. data/test/fixtures/order_with_properties.json +0 -373
  669. data/test/fixtures/orders.json +0 -299
  670. data/test/fixtures/payment.json +0 -7
  671. data/test/fixtures/payments.json +0 -9
  672. data/test/fixtures/ping/conversation.json +0 -1
  673. data/test/fixtures/ping/failed_delivery_confirmation.json +0 -1
  674. data/test/fixtures/ping/message.json +0 -1
  675. data/test/fixtures/ping/successful_delivery_confirmation.json +0 -1
  676. data/test/fixtures/policies.json +0 -8
  677. data/test/fixtures/price_rule.json +0 -27
  678. data/test/fixtures/price_rules.json +0 -28
  679. data/test/fixtures/product.json +0 -116
  680. data/test/fixtures/product_listing.json +0 -86
  681. data/test/fixtures/product_listing_product_ids.json +0 -1
  682. data/test/fixtures/product_listing_product_ids2.json +0 -1
  683. data/test/fixtures/product_listings.json +0 -174
  684. data/test/fixtures/product_publication.json +0 -11
  685. data/test/fixtures/product_publications.json +0 -13
  686. data/test/fixtures/publications.json +0 -9
  687. data/test/fixtures/recurring_application_charge.json +0 -22
  688. data/test/fixtures/recurring_application_charge_adjustment.json +0 -5
  689. data/test/fixtures/recurring_application_charges.json +0 -106
  690. data/test/fixtures/redirect.json +0 -7
  691. data/test/fixtures/refund.json +0 -112
  692. data/test/fixtures/report.json +0 -9
  693. data/test/fixtures/reports.json +0 -11
  694. data/test/fixtures/script_tag.json +0 -10
  695. data/test/fixtures/script_tags.json +0 -18
  696. data/test/fixtures/shipping_rates.json +0 -12
  697. data/test/fixtures/shipping_zones.json +0 -315
  698. data/test/fixtures/shop.json +0 -26
  699. data/test/fixtures/smart_collection.json +0 -21
  700. data/test/fixtures/smart_collection_products.json +0 -155
  701. data/test/fixtures/storefront_access_token.json +0 -9
  702. data/test/fixtures/storefront_access_tokens.json +0 -18
  703. data/test/fixtures/tags.json +0 -1
  704. data/test/fixtures/tax_service.json +0 -9
  705. data/test/fixtures/tender_transactions.json +0 -52
  706. data/test/fixtures/transaction.json +0 -29
  707. data/test/fixtures/usage_charge.json +0 -11
  708. data/test/fixtures/usage_charges.json +0 -23
  709. data/test/fixtures/user.json +0 -21
  710. data/test/fixtures/users.json +0 -42
  711. data/test/fixtures/variant.json +0 -23
  712. data/test/fixtures/variants.json +0 -88
  713. data/test/fixtures/webhook.json +0 -10
  714. data/test/fixtures/webhooks.json +0 -18
  715. data/test/fulfillment_event_test.rb +0 -74
  716. data/test/fulfillment_order_test.rb +0 -530
  717. data/test/fulfillment_order_test_helper.rb +0 -8
  718. data/test/fulfillment_request_test.rb +0 -35
  719. data/test/fulfillment_service_test.rb +0 -18
  720. data/test/fulfillment_test.rb +0 -239
  721. data/test/fulfillment_v2_test.rb +0 -66
  722. data/test/gift_card_test.rb +0 -24
  723. data/test/graphql/http_client_test.rb +0 -26
  724. data/test/graphql_test.rb +0 -190
  725. data/test/image_test.rb +0 -41
  726. data/test/inventory_level_test.rb +0 -68
  727. data/test/lib/webmock_extensions/last_request.rb +0 -16
  728. data/test/limits_test.rb +0 -39
  729. data/test/location_test.rb +0 -15
  730. data/test/marketing_event_test.rb +0 -68
  731. data/test/message_enricher_test.rb +0 -45
  732. data/test/meta_test.rb +0 -47
  733. data/test/metafield_test.rb +0 -56
  734. data/test/order_risk_test.rb +0 -47
  735. data/test/order_test.rb +0 -140
  736. data/test/pagination_test.rb +0 -290
  737. data/test/payment_test.rb +0 -19
  738. data/test/policy_test.rb +0 -20
  739. data/test/price_rule_test.rb +0 -70
  740. data/test/product_listing_test.rb +0 -97
  741. data/test/product_publication_test.rb +0 -40
  742. data/test/product_test.rb +0 -111
  743. data/test/publication_test.rb +0 -12
  744. data/test/recurring_application_charge_test.rb +0 -204
  745. data/test/redirect_test.rb +0 -10
  746. data/test/refund_test.rb +0 -37
  747. data/test/report_test.rb +0 -37
  748. data/test/resource_feedback_test.rb +0 -43
  749. data/test/script_tag_test.rb +0 -31
  750. data/test/session_test.rb +0 -636
  751. data/test/shipping_rate_test.rb +0 -17
  752. data/test/shipping_zone_test.rb +0 -11
  753. data/test/shop_test.rb +0 -82
  754. data/test/smart_collection_test.rb +0 -11
  755. data/test/storefront_access_token_test.rb +0 -30
  756. data/test/tax_service_test.rb +0 -12
  757. data/test/tender_transaction_test.rb +0 -18
  758. data/test/test_helper.rb +0 -126
  759. data/test/transaction_test.rb +0 -18
  760. data/test/usage_charge_test.rb +0 -25
  761. data/test/user_test.rb +0 -18
  762. data/test/variant_test.rb +0 -73
  763. data/test/webhook_test.rb +0 -24
@@ -1,208 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'openssl'
3
- require 'rack'
4
-
5
- module ShopifyAPI
6
- class ValidationException < StandardError
7
- end
8
-
9
- class Session
10
- SECONDS_IN_A_DAY = 24 * 60 * 60
11
-
12
- cattr_accessor :api_key, :secret, :myshopify_domain
13
- self.myshopify_domain = 'myshopify.com'
14
-
15
- attr_accessor :domain, :token, :name, :extra
16
- attr_reader :api_version, :access_scopes
17
- alias_method :url, :domain
18
-
19
- class << self
20
- def setup(params)
21
- params.each { |k, value| public_send("#{k}=", value) }
22
- end
23
-
24
- def temp(domain:, token:, api_version: ShopifyAPI::Base.api_version, &block)
25
- session = new(domain: domain, token: token, api_version: api_version)
26
-
27
- with_session(session, &block)
28
- end
29
-
30
- def with_session(session, &_block)
31
- original_session = extract_current_session
32
- original_user = ShopifyAPI::Base.user
33
- original_password = ShopifyAPI::Base.password
34
-
35
- begin
36
- ShopifyAPI::Base.clear_session
37
- ShopifyAPI::Base.activate_session(session)
38
- yield
39
- ensure
40
- ShopifyAPI::Base.activate_session(original_session)
41
- ShopifyAPI::Base.user = original_user
42
- ShopifyAPI::Base.password = original_password
43
- end
44
- end
45
-
46
- def with_version(api_version, &block)
47
- original_session = extract_current_session
48
- session = new(domain: original_session.site, token: original_session.token, api_version: api_version)
49
-
50
- with_session(session, &block)
51
- end
52
-
53
- def prepare_domain(domain)
54
- return nil if domain.blank?
55
- # remove http:// or https://
56
- domain = domain.strip.gsub(%r{\Ahttps?://}, '')
57
- # extract host, removing any username, password or path
58
- shop = URI.parse("https://#{domain}").host
59
- # extract subdomain of .myshopify.com
60
- if (idx = shop.index("."))
61
- shop = shop.slice(0, idx)
62
- end
63
- return nil if shop.empty?
64
- "#{shop}.#{myshopify_domain}"
65
- rescue URI::InvalidURIError
66
- nil
67
- end
68
-
69
- def validate_signature(params)
70
- params = (params.respond_to?(:to_unsafe_hash) ? params.to_unsafe_hash : params).with_indifferent_access
71
- return false unless (signature = params[:hmac])
72
-
73
- calculated_signature = OpenSSL::HMAC.hexdigest(
74
- OpenSSL::Digest.new('SHA256'), secret, encoded_params_for_signature(params)
75
- )
76
-
77
- Rack::Utils.secure_compare(calculated_signature, signature)
78
- end
79
-
80
- private
81
-
82
- def encoded_params_for_signature(params)
83
- params = params.except(:signature, :hmac, :action, :controller)
84
- params.map { |k, v| "#{URI.escape(k.to_s, '&=%')}=#{URI.escape(v.to_s, '&%')}" }.sort.join('&')
85
- end
86
-
87
- def extract_current_session
88
- site = ShopifyAPI::Base.site.to_s
89
- token = ShopifyAPI::Base.headers['X-Shopify-Access-Token']
90
- version = ShopifyAPI::Base.api_version
91
- new(domain: site, token: token, api_version: version)
92
- end
93
- end
94
-
95
- def initialize(domain:, token:, access_scopes: nil, api_version: ShopifyAPI::Base.api_version, extra: {})
96
- self.domain = self.class.prepare_domain(domain)
97
- self.api_version = api_version
98
- self.token = token
99
- self.access_scopes = access_scopes
100
- self.extra = extra
101
- end
102
-
103
- def create_permission_url(scope, redirect_uri, options = {})
104
- params = { client_id: api_key, scope: ShopifyAPI::ApiAccess.new(scope).to_s, redirect_uri: redirect_uri }
105
- params[:state] = options[:state] if options[:state]
106
- params["grant_options[]".to_sym] = options[:grant_options] if options[:grant_options]
107
- construct_oauth_url("authorize", params)
108
- end
109
-
110
- def request_token(params)
111
- return token if token
112
-
113
- twenty_four_hours_ago = Time.now.utc.to_i - SECONDS_IN_A_DAY
114
- unless self.class.validate_signature(params) && params[:timestamp].to_i > twenty_four_hours_ago
115
- raise ShopifyAPI::ValidationException, "Invalid Signature: Possible malicious login"
116
- end
117
-
118
- response = access_token_request(params[:code])
119
- if response.code == "200"
120
- self.extra = JSON.parse(response.body)
121
- self.token = extra.delete('access_token')
122
-
123
- if (expires_in = extra.delete('expires_in'))
124
- extra['expires_at'] = Time.now.utc.to_i + expires_in
125
- end
126
- token
127
- else
128
- raise response.msg
129
- end
130
- end
131
-
132
- def shop
133
- Shop.current
134
- end
135
-
136
- def site
137
- "https://#{domain}"
138
- end
139
-
140
- def api_version=(version)
141
- @api_version = if ApiVersion::NullVersion.matches?(version)
142
- ApiVersion::NullVersion
143
- else
144
- ApiVersion.find_version(version)
145
- end
146
- end
147
-
148
- def valid?
149
- domain.present? && token.present? && api_version.is_a?(ApiVersion)
150
- end
151
-
152
- def expires_in
153
- return unless expires_at.present?
154
- [0, expires_at.to_i - Time.now.utc.to_i].max
155
- end
156
-
157
- def expires_at
158
- return unless extra.present?
159
- @expires_at ||= Time.at(extra['expires_at']).utc
160
- end
161
-
162
- def expired?
163
- return false if expires_in.nil?
164
- expires_in <= 0
165
- end
166
-
167
- def hash
168
- state.hash
169
- end
170
-
171
- def ==(other)
172
- self.class == other.class && state == other.state
173
- end
174
-
175
- alias_method :eql?, :==
176
-
177
- protected
178
-
179
- def state
180
- [domain, token, api_version, extra]
181
- end
182
-
183
- private
184
-
185
- def access_scopes=(access_scopes)
186
- return unless access_scopes
187
- @access_scopes = ShopifyAPI::ApiAccess.new(access_scopes)
188
- end
189
-
190
- def parameterize(params)
191
- URI.escape(params.collect { |k, v| "#{k}=#{v}" }.join('&'))
192
- end
193
-
194
- def access_token_request(code)
195
- uri = URI.parse(construct_oauth_url('access_token'))
196
- https = Net::HTTP.new(uri.host, uri.port)
197
- https.use_ssl = true
198
- request = Net::HTTP::Post.new(uri.request_uri)
199
- request.set_form_data('client_id' => api_key, 'client_secret' => secret, 'code' => code)
200
- https.request(request)
201
- end
202
-
203
- def construct_oauth_url(path, query_params = {})
204
- query_string = "?#{parameterize(query_params)}" unless query_params.empty?
205
- "https://#{domain}/admin/oauth/#{path}#{query_string}"
206
- end
207
- end
208
- end
data/lib/verify_docs.rb DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
- class VerifyDocs
3
- def self.call
4
- readme_content = File.read("README.md").lines[2..-1]
5
- docs_content = File.read("docs/index.md").lines[4..-1]
6
- readme_content == docs_content
7
- end
8
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'test_helper'
3
-
4
- class AbandonedCheckoutsTest < Test::Unit::TestCase
5
- def setup
6
- super
7
-
8
- @expected_checkouts = JSON.parse(load_fixture('abandoned_checkouts'))['checkouts']
9
- @expected_checkout_id = JSON.parse(load_fixture('abandoned_checkout'))['checkout']['id']
10
- end
11
-
12
- test ":create creates a checkout" do
13
- fake 'checkouts', method: :post, status: 201, body: load_fixture('abandoned_checkout')
14
-
15
- checkout = ShopifyAPI::AbandonedCheckout.create
16
-
17
- assert_equal @expected_checkout_id, checkout.id
18
- assert_equal true, checkout.attributes.include?(:abandoned_checkout_url)
19
- end
20
-
21
- test "get all checkouts indexed by token" do
22
- fake 'checkouts', method: :get, status: 200, body: load_fixture('abandoned_checkouts')
23
-
24
- checkouts = ShopifyAPI::AbandonedCheckout.all
25
-
26
- assert_equal @expected_checkout_id, checkouts.first.id
27
- assert_equal @expected_checkouts.size, checkouts.size
28
- end
29
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'test_helper'
3
-
4
- class AccessScopeTest < Test::Unit::TestCase
5
- test 'access scope does not use the versioned resource urls' do
6
- fake(
7
- 'access_scopes',
8
- url: 'https://shop2.myshopify.com/admin/oauth/access_scopes.json',
9
- method: :get,
10
- status: 201,
11
- body: load_fixture('access_scopes'),
12
- extension: false
13
- )
14
-
15
- unstable_version = ShopifyAPI::Session.new(domain: 'shop2.myshopify.com', token: 'token2', api_version: :unstable)
16
-
17
- ShopifyAPI::Base.activate_session(unstable_version)
18
-
19
- scope_handles = ShopifyAPI::AccessScope.find(:all).map(&:handle)
20
-
21
- assert_equal(['write_product_listings', 'read_shipping'], scope_handles)
22
- end
23
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'test_helper'
3
-
4
- class AccessTokenTest < Test::Unit::TestCase
5
- def test_delegate_access_token
6
- fake(
7
- "access_tokens/delegate.json?delegate_access_scope%5B%5D=write_orders&" \
8
- "delegate_access_scope%5B%5D=read_products&expires_in=",
9
- method: :post,
10
- status: 201,
11
- body: load_fixture('access_token_delegate'),
12
- extension: false
13
- )
14
- delegate_scope = ['write_orders', 'read_products']
15
- token = ShopifyAPI::AccessToken.delegate(delegate_scope)
16
-
17
- assert_equal('abracadabra', token.access_token)
18
- assert_equal('write_orders,read_products', token.scope)
19
- end
20
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'test_helper'
3
-
4
- module ActiveResource
5
- class JsonErrorsTest < Test::Unit::TestCase
6
- def test_parsing_of_error_json_hash
7
- @model = ShopifyAPI::Order.new
8
- @model.errors.from_json({ errors: { name: ['missing'] } }.to_json)
9
- assert_equal(['missing'], @model.errors[:name])
10
- end
11
-
12
- def test_parsing_of_error_json_plain_string
13
- @model = ShopifyAPI::Order.new
14
- @model.errors.from_json({ errors: 'some generic error' }.to_json)
15
- assert_equal(['some generic error'], @model.errors[:base])
16
- assert_equal('some generic error', @model.errors.full_messages.to_sentence)
17
- end
18
- end
19
- end
@@ -1,153 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'test_helper'
3
-
4
- class ApiAccessTest < Minitest::Test
5
- def test_write_is_the_same_access_as_read_write_on_the_same_resource
6
- read_write_orders = ShopifyAPI::ApiAccess.new(%w(read_orders write_orders))
7
- write_orders = ShopifyAPI::ApiAccess.new(%w(write_orders))
8
-
9
- assert_equal write_orders, read_write_orders
10
- end
11
-
12
- def test_write_is_the_same_access_as_read_write_on_the_same_unauthenticated_resource
13
- unauthenticated_read_write_orders = ShopifyAPI::ApiAccess.new(%w(unauthenticated_read_orders unauthenticated_write_orders))
14
- unauthenticated_write_orders = ShopifyAPI::ApiAccess.new(%w(unauthenticated_write_orders))
15
-
16
- assert_equal unauthenticated_write_orders, unauthenticated_read_write_orders
17
- end
18
-
19
- def test_read_is_not_the_same_as_read_write_on_the_same_resource
20
- read_orders = ShopifyAPI::ApiAccess.new(%w(read_orders))
21
- read_write_orders = ShopifyAPI::ApiAccess.new(%w(write_orders read_orders))
22
-
23
- refute_equal read_write_orders, read_orders
24
- end
25
-
26
- def test_two_different_resources_are_not_equal
27
- read_orders = ShopifyAPI::ApiAccess.new(%w(read_orders))
28
- read_products = ShopifyAPI::ApiAccess.new(%w(read_products))
29
-
30
- refute_equal read_orders, read_products
31
- end
32
-
33
- def test_two_identical_scopes_are_equal
34
- read_orders = ShopifyAPI::ApiAccess.new(%w(read_orders))
35
- read_orders_identical = ShopifyAPI::ApiAccess.new(%w(read_orders))
36
-
37
- assert_equal read_orders_identical, read_orders
38
- end
39
-
40
- def test_unauthenticated_is_not_implied_by_authenticated_access
41
- unauthenticated_orders = ShopifyAPI::ApiAccess.new(%w(unauthenticated_read_orders))
42
- authenticated_read_orders = ShopifyAPI::ApiAccess.new(%w(read_orders))
43
- authenticated_write_orders = ShopifyAPI::ApiAccess.new(%w(write_orders))
44
-
45
- refute_equal unauthenticated_orders, authenticated_read_orders
46
- refute_equal unauthenticated_orders, authenticated_write_orders
47
- end
48
-
49
- def test_scopes_covers_is_truthy_for_same_scopes
50
- read_orders = ShopifyAPI::ApiAccess.new(%w(read_orders))
51
- read_orders_identical = ShopifyAPI::ApiAccess.new(%w(read_orders))
52
-
53
- assert read_orders.covers?(read_orders_identical)
54
- end
55
-
56
- def test_covers_is_falsy_for_different_scopes
57
- read_orders = ShopifyAPI::ApiAccess.new(%w(read_orders))
58
- read_products = ShopifyAPI::ApiAccess.new(%w(read_products))
59
-
60
- refute read_orders.covers?(read_products)
61
- end
62
-
63
- def test_covers_is_truthy_for_read_when_the_set_has_read_write
64
- write_products = ShopifyAPI::ApiAccess.new(%w(write_products))
65
- read_products = ShopifyAPI::ApiAccess.new(%w(read_products))
66
-
67
- assert write_products.covers?(read_products)
68
- end
69
-
70
- def test_covers_is_truthy_for_read_when_the_set_has_read_write_for_that_resource_and_others
71
- write_products_and_orders = ShopifyAPI::ApiAccess.new(%w(write_products, write_orders))
72
- read_orders = ShopifyAPI::ApiAccess.new(%w(read_orders))
73
-
74
- assert write_products_and_orders.covers?(read_orders)
75
- end
76
-
77
- def test_covers_is_truthy_for_write_when_the_set_has_read_write_for_that_resource_and_others
78
- write_products_and_orders = ShopifyAPI::ApiAccess.new(%w(write_products, write_orders))
79
- write_orders = ShopifyAPI::ApiAccess.new(%w(write_orders))
80
-
81
- assert write_products_and_orders.covers?(write_orders)
82
- end
83
-
84
- def test_covers_is_truthy_for_subset_of_scopes
85
- write_products_orders_customers = ShopifyAPI::ApiAccess.new(%w(write_products write_orders write_customers))
86
- write_orders_products = ShopifyAPI::ApiAccess.new(%w(write_orders read_products))
87
-
88
- assert write_products_orders_customers.covers?(write_orders_products)
89
- end
90
-
91
- def test_covers_is_falsy_for_sets_of_scopes_that_have_no_common_elements
92
- write_products_orders_customers = ShopifyAPI::ApiAccess.new(%w(write_products write_orders write_customers))
93
- write_images_read_content = ShopifyAPI::ApiAccess.new(%w(write_images read_content))
94
-
95
- refute write_products_orders_customers.covers?(write_images_read_content)
96
- end
97
-
98
- def test_covers_is_falsy_for_sets_of_scopes_that_have_only_some_common_access
99
- write_products_orders_customers = ShopifyAPI::ApiAccess.new(%w(write_products write_orders write_customers))
100
- write_products_read_content = ShopifyAPI::ApiAccess.new(%w(write_products read_content))
101
-
102
- refute write_products_orders_customers.covers?(write_products_read_content)
103
- end
104
-
105
- def test_duplicate_scopes_resolve_to_one_scope
106
- read_orders_duplicated = ShopifyAPI::ApiAccess.new(%w(read_orders read_orders read_orders read_orders))
107
- read_orders = ShopifyAPI::ApiAccess.new(%w(read_orders))
108
-
109
- assert_equal read_orders, read_orders_duplicated
110
- end
111
-
112
- def test_to_s_outputs_scopes_as_a_comma_separated_list_without_implied_read_scopes
113
- serialized_read_products_write_orders = "read_products,write_orders"
114
- read_products_write_orders = ShopifyAPI::ApiAccess.new(%w(read_products read_orders write_orders))
115
-
116
- assert_equal read_products_write_orders.to_s, serialized_read_products_write_orders
117
- end
118
-
119
- def test_to_a_outputs_scopes_as_an_array_of_strings_without_implied_read_scopes
120
- serialized_read_products_write_orders = %w(write_orders read_products)
121
- read_products_write_orders = ShopifyAPI::ApiAccess.new(%w(read_products read_orders write_orders))
122
-
123
- assert_equal read_products_write_orders.to_a.sort, serialized_read_products_write_orders.sort
124
- end
125
-
126
- def test_creating_scopes_removes_extra_whitespace_from_scope_name_and_blank_scope_names
127
- deserialized_read_products_write_orders = ShopifyAPI::ApiAccess.new([' read_products', ' ', 'write_orders '])
128
- serialized_read_products_write_orders = deserialized_read_products_write_orders.to_s
129
- expected_read_products_write_orders = ShopifyAPI::ApiAccess.new(%w(read_products write_orders))
130
-
131
- assert_equal expected_read_products_write_orders, ShopifyAPI::ApiAccess.new(serialized_read_products_write_orders)
132
- end
133
-
134
- def test_creating_scopes_from_a_string_works_with_a_comma_separated_list
135
- deserialized_read_products_write_orders = ShopifyAPI::ApiAccess.new("read_products,write_orders")
136
- serialized_read_products_write_orders = deserialized_read_products_write_orders.to_s
137
- expected_read_products_write_orders = ShopifyAPI::ApiAccess.new(%w(read_products write_orders))
138
-
139
- assert_equal expected_read_products_write_orders, ShopifyAPI::ApiAccess.new(serialized_read_products_write_orders)
140
- end
141
-
142
- def test_using_to_s_from_one_scopes_to_construct_another_will_be_equal
143
- read_products_write_orders = ShopifyAPI::ApiAccess.new(%w(read_products write_orders))
144
-
145
- assert_equal read_products_write_orders, ShopifyAPI::ApiAccess.new(read_products_write_orders.to_s)
146
- end
147
-
148
- def test_using_to_a_from_one_scopes_to_construct_another_will_be_equal
149
- read_products_write_orders = ShopifyAPI::ApiAccess.new(%w(read_products write_orders))
150
-
151
- assert_equal read_products_write_orders, ShopifyAPI::ApiAccess.new(read_products_write_orders.to_a)
152
- end
153
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'test_helper'
3
-
4
- class ApiPermissionTest < Test::Unit::TestCase
5
- test "revoke access token" do
6
- fake "api_permissions/current", method: :delete, status: 200, body: "{}"
7
- assert ShopifyAPI::ApiPermission.destroy
8
- end
9
- end
@@ -1,157 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'test_helper'
3
-
4
- class ApiVersionTest < Test::Unit::TestCase
5
- test "find_version returns any version object given" do
6
- version = ShopifyAPI::ApiVersion.new(handle: :unstable)
7
- assert_same(version, ShopifyAPI::ApiVersion.find_version(version))
8
- end
9
-
10
- test "find_version converts a known version into a version object" do
11
- versions = [
12
- ShopifyAPI::ApiVersion.new(handle: :unstable),
13
- ShopifyAPI::ApiVersion.new(handle: '2019-01'),
14
- ]
15
-
16
- assert_equal(versions, [
17
- ShopifyAPI::ApiVersion.find_version('unstable'),
18
- ShopifyAPI::ApiVersion.find_version('2019-01'),
19
- ])
20
- end
21
-
22
- test "find_version removes unverified versions from version set if mode is set to :raise_on_unknown" do
23
- ShopifyAPI::ApiVersion.version_lookup_mode = :define_on_unknown
24
- assert ShopifyAPI::ApiVersion.versions.values.all?(&:verified?)
25
- assert_equal 6, ShopifyAPI::ApiVersion.versions.size
26
-
27
- ShopifyAPI::ApiVersion.find_version('2019-30')
28
- refute ShopifyAPI::ApiVersion.versions.values.all?(&:verified?)
29
- assert_equal 7, ShopifyAPI::ApiVersion.versions.size
30
- ShopifyAPI::ApiVersion.version_lookup_mode = :raise_on_unknown
31
-
32
- assert ShopifyAPI::ApiVersion.versions.values.all?(&:verified?)
33
- assert_equal 6, ShopifyAPI::ApiVersion.versions.size
34
- end
35
-
36
- test "find_version does not raise when coercing a string if no versions are defined when version_lookup_mode is :define_on_unknown" do
37
- ShopifyAPI::ApiVersion.clear_known_versions
38
- ShopifyAPI::ApiVersion.version_lookup_mode = :define_on_unknown
39
- assert_equal :define_on_unknown, ShopifyAPI::ApiVersion.version_lookup_mode
40
- assert_nothing_raised do
41
- ShopifyAPI::ApiVersion.find_version('made up version')
42
- end
43
- end
44
-
45
- test "find_version does raise when coercing a string if no versions are defined when version_lookup_mode is :raise_on_unknown" do
46
- refute ShopifyAPI::ApiVersion.versions['made up version']
47
- ShopifyAPI::ApiVersion.version_lookup_mode = :raise_on_unknown
48
- assert_raises(ShopifyAPI::ApiVersion::UnknownVersion) do
49
- ShopifyAPI::ApiVersion.find_version('made up version')
50
- end
51
- end
52
-
53
- test "find_version raises ArgumentError when given an ShopifyAPI::ApiVersion::NullVersion object" do
54
- ShopifyAPI::ApiVersion.clear_known_versions
55
- ShopifyAPI::ApiVersion.version_lookup_mode = :define_on_unknown
56
- assert_equal :define_on_unknown, ShopifyAPI::ApiVersion.version_lookup_mode
57
- assert_raises(ArgumentError) do
58
- ShopifyAPI::ApiVersion.find_version(ShopifyAPI::ApiVersion::NullVersion)
59
- end
60
- end
61
-
62
- test 'two versions with the same version number are equal' do
63
- version_1 = ShopifyAPI::ApiVersion.new(handle: '2018-09')
64
- version_2 = ShopifyAPI::ApiVersion.new(handle: '2018-09')
65
-
66
- assert_equal version_2, version_1
67
- end
68
-
69
- test 'two versions with the different version numbers are not equal' do
70
- version_1 = ShopifyAPI::ApiVersion.new(handle: '2019-07')
71
- version_2 = ShopifyAPI::ApiVersion.new(handle: '2019-11')
72
-
73
- refute_equal version_2, version_1
74
- end
75
-
76
- test 'versions are ordered by version number with unstable always being the newest' do
77
- version_1 = ShopifyAPI::ApiVersion.new(handle: '2017-11')
78
- version_2 = ShopifyAPI::ApiVersion.new(handle: '2019-11')
79
- version_3 = ShopifyAPI::ApiVersion.new(handle: '2039-01')
80
- version_4 = ShopifyAPI::ApiVersion.new(handle: '2039-02')
81
- unstable = ShopifyAPI::ApiVersion.new(handle: :unstable)
82
-
83
- assert_equal([
84
- version_1,
85
- version_2,
86
- version_3,
87
- version_4,
88
- unstable,
89
- ], [
90
- version_3,
91
- version_1,
92
- version_4,
93
- unstable,
94
- version_2,
95
- ].sort)
96
- end
97
-
98
- test 'latest_stable_version will return the version that is newest and stable' do
99
- assert_equal(
100
- ShopifyAPI::ApiVersion.versions,
101
- {
102
- "2019-01" => ShopifyAPI::ApiVersion.new(handle: '2019-01', supported: true, latest_supported: false),
103
- "2019-04" => ShopifyAPI::ApiVersion.new(handle: '2019-04', supported: true, latest_supported: false),
104
- "2019-07" => ShopifyAPI::ApiVersion.new(handle: '2019-07', supported: true, latest_supported: false),
105
- "2019-10" => ShopifyAPI::ApiVersion.new(handle: '2019-10', supported: false, latest_supported: false),
106
- "2020-01" => ShopifyAPI::ApiVersion.new(handle: '2020-01', supported: false, latest_supported: true),
107
- "unstable" => ShopifyAPI::ApiVersion.new(handle: 'unstable', supported: false, latest_supported: false),
108
- }
109
- )
110
- silence_warnings do
111
- refute_equal(
112
- ShopifyAPI::ApiVersion.new(handle: '2019-01'),
113
- ShopifyAPI::ApiVersion.latest_stable_version
114
- )
115
-
116
- assert_equal(
117
- ShopifyAPI::ApiVersion.new(handle: '2020-01'),
118
- ShopifyAPI::ApiVersion.latest_stable_version
119
- )
120
- end
121
- end
122
-
123
- test "NullVersion raises ApiVersionNotSetError" do
124
- assert_raises(ShopifyAPI::ApiVersion::ApiVersionNotSetError) do
125
- ShopifyAPI::ApiVersion::NullVersion.construct_api_path(:string)
126
- end
127
-
128
- assert_raises(ShopifyAPI::ApiVersion::ApiVersionNotSetError) do
129
- ShopifyAPI::ApiVersion::NullVersion.construct_graphql_path
130
- end
131
-
132
- assert_raises(ShopifyAPI::ApiVersion::ApiVersionNotSetError) do
133
- ShopifyAPI::ApiVersion::NullVersion.stable?
134
- end
135
- end
136
-
137
- test "NullVersion cannot be instantiated and raises NoMethodError if attempted" do
138
- assert_raises(NoMethodError) do
139
- ShopifyAPI::ApiVersion::NullVersion.new
140
- end
141
- end
142
-
143
- test "handle_to_date converts a version handle to a date" do
144
- version_1 = ShopifyAPI::ApiVersion.new(handle: '2019-01')
145
- version_2 = ShopifyAPI::ApiVersion.new(handle: 'unstable')
146
-
147
- assert_equal(version_1.handle_as_date, Time.utc(2019, 01, 01))
148
- assert_equal(version_2.handle_as_date, ShopifyAPI::ApiVersion::UNSTABLE_AS_DATE)
149
- end
150
-
151
- class TestApiVersion < ShopifyAPI::ApiVersion
152
- def initialize(name)
153
- super(name)
154
- @version_name = name
155
- end
156
- end
157
- end