fortnox-api 0.7.2 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (255) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -0
  3. data/.env.template +7 -0
  4. data/.env.test +11 -3
  5. data/.gitignore +7 -1
  6. data/.rubocop.yml +18 -2
  7. data/.tool-versions +1 -0
  8. data/.travis.yml +15 -19
  9. data/CHANGELOG.md +66 -1
  10. data/CONTRIBUTE.md +21 -9
  11. data/DEVELOPER_README.md +72 -0
  12. data/Guardfile +13 -4
  13. data/README.md +226 -61
  14. data/Rakefile +133 -0
  15. data/bin/get_tokens +79 -0
  16. data/bin/renew_tokens +28 -0
  17. data/fortnox-api.gemspec +31 -25
  18. data/lib/fortnox/api/mappers/article.rb +1 -1
  19. data/lib/fortnox/api/mappers/base/from_json.rb +7 -6
  20. data/lib/fortnox/api/mappers/base/to_json.rb +4 -5
  21. data/lib/fortnox/api/mappers/base.rb +3 -3
  22. data/lib/fortnox/api/mappers/customer.rb +1 -1
  23. data/lib/fortnox/api/mappers/default_delivery_types.rb +1 -1
  24. data/lib/fortnox/api/mappers/default_templates.rb +1 -1
  25. data/lib/fortnox/api/mappers/edi_information.rb +1 -1
  26. data/lib/fortnox/api/mappers/email_information.rb +1 -1
  27. data/lib/fortnox/api/mappers/invoice.rb +4 -4
  28. data/lib/fortnox/api/mappers/invoice_row.rb +1 -1
  29. data/lib/fortnox/api/mappers/order.rb +4 -4
  30. data/lib/fortnox/api/mappers/order_row.rb +1 -1
  31. data/lib/fortnox/api/mappers/project.rb +1 -1
  32. data/lib/fortnox/api/mappers/terms_of_payment.rb +1 -1
  33. data/lib/fortnox/api/mappers/unit.rb +1 -1
  34. data/lib/fortnox/api/mappers/value/country_string.rb +1 -1
  35. data/lib/fortnox/api/mappers.rb +18 -18
  36. data/lib/fortnox/api/models/article.rb +2 -2
  37. data/lib/fortnox/api/models/base.rb +23 -21
  38. data/lib/fortnox/api/models/customer.rb +57 -57
  39. data/lib/fortnox/api/models/document.rb +5 -2
  40. data/lib/fortnox/api/models/invoice.rb +2 -2
  41. data/lib/fortnox/api/models/label.rb +3 -3
  42. data/lib/fortnox/api/models/order.rb +2 -2
  43. data/lib/fortnox/api/models/project.rb +2 -2
  44. data/lib/fortnox/api/models/terms_of_payment.rb +2 -2
  45. data/lib/fortnox/api/models/unit.rb +2 -2
  46. data/lib/fortnox/api/models.rb +7 -7
  47. data/lib/fortnox/api/repositories/article.rb +3 -3
  48. data/lib/fortnox/api/repositories/authentication.rb +61 -0
  49. data/lib/fortnox/api/repositories/base/savers.rb +3 -1
  50. data/lib/fortnox/api/repositories/base.rb +25 -38
  51. data/lib/fortnox/api/repositories/customer.rb +3 -3
  52. data/lib/fortnox/api/repositories/invoice.rb +3 -3
  53. data/lib/fortnox/api/repositories/order.rb +3 -3
  54. data/lib/fortnox/api/repositories/project.rb +3 -3
  55. data/lib/fortnox/api/repositories/terms_of_payment.rb +3 -3
  56. data/lib/fortnox/api/repositories/unit.rb +3 -3
  57. data/lib/fortnox/api/repositories.rb +8 -7
  58. data/lib/fortnox/api/request_handling.rb +30 -18
  59. data/lib/fortnox/api/types/default_delivery_types.rb +0 -2
  60. data/lib/fortnox/api/types/default_templates.rb +0 -2
  61. data/lib/fortnox/api/types/document_row.rb +3 -3
  62. data/lib/fortnox/api/types/edi_information.rb +0 -2
  63. data/lib/fortnox/api/types/email_information.rb +0 -2
  64. data/lib/fortnox/api/types/enums.rb +54 -10
  65. data/lib/fortnox/api/types/invoice_row.rb +1 -1
  66. data/lib/fortnox/api/types/model.rb +5 -9
  67. data/lib/fortnox/api/types/nullable.rb +13 -9
  68. data/lib/fortnox/api/types/order_row.rb +1 -1
  69. data/lib/fortnox/api/types/required.rb +3 -3
  70. data/lib/fortnox/api/types/sized.rb +4 -4
  71. data/lib/fortnox/api/types.rb +37 -24
  72. data/lib/fortnox/api/version.rb +1 -1
  73. data/lib/fortnox/api.rb +21 -39
  74. data/spec/fortnox/api/mappers/base/canonical_name_sym_spec.rb +13 -11
  75. data/spec/fortnox/api/mappers/base/from_json_spec.rb +10 -12
  76. data/spec/fortnox/api/mappers/base/to_json_spec.rb +48 -57
  77. data/spec/fortnox/api/mappers/base_spec.rb +4 -7
  78. data/spec/fortnox/api/mappers/contexts/json_conversion.rb +38 -33
  79. data/spec/fortnox/api/mappers/default_delivery_types_spec.rb +1 -1
  80. data/spec/fortnox/api/mappers/examples/mapper.rb +1 -1
  81. data/spec/fortnox/api/mappers/unit_spec.rb +3 -4
  82. data/spec/fortnox/api/models/base_spec.rb +33 -22
  83. data/spec/fortnox/api/models/unit_spec.rb +5 -3
  84. data/spec/fortnox/api/repositories/article_spec.rb +14 -9
  85. data/spec/fortnox/api/repositories/authentication_spec.rb +103 -0
  86. data/spec/fortnox/api/repositories/base_spec.rb +105 -326
  87. data/spec/fortnox/api/repositories/customer_spec.rb +37 -7
  88. data/spec/fortnox/api/repositories/examples/all.rb +0 -1
  89. data/spec/fortnox/api/repositories/examples/find.rb +5 -8
  90. data/spec/fortnox/api/repositories/examples/only.rb +4 -13
  91. data/spec/fortnox/api/repositories/examples/save.rb +32 -18
  92. data/spec/fortnox/api/repositories/examples/save_with_nested_model.rb +0 -5
  93. data/spec/fortnox/api/repositories/examples/save_with_specially_named_attribute.rb +1 -4
  94. data/spec/fortnox/api/repositories/examples/search.rb +4 -7
  95. data/spec/fortnox/api/repositories/invoice_spec.rb +72 -29
  96. data/spec/fortnox/api/repositories/order_spec.rb +11 -9
  97. data/spec/fortnox/api/repositories/project_spec.rb +7 -6
  98. data/spec/fortnox/api/repositories/terms_of_payment_spec.rb +9 -7
  99. data/spec/fortnox/api/repositories/unit_spec.rb +13 -11
  100. data/spec/fortnox/api/types/country_spec.rb +1 -1
  101. data/spec/fortnox/api/types/email_spec.rb +2 -2
  102. data/spec/fortnox/api/types/enums_spec.rb +1 -0
  103. data/spec/fortnox/api/types/examples/document_row.rb +3 -3
  104. data/spec/fortnox/api/types/examples/enum.rb +4 -4
  105. data/spec/fortnox/api/types/examples/types.rb +1 -3
  106. data/spec/fortnox/api/types/housework_types_spec.rb +124 -43
  107. data/spec/fortnox/api/types/model_spec.rb +13 -23
  108. data/spec/fortnox/api/types/nullable_spec.rb +30 -10
  109. data/spec/fortnox/api/types/order_row_spec.rb +2 -2
  110. data/spec/fortnox/api/types/required_spec.rb +7 -15
  111. data/spec/fortnox/api/types/sales_account_spec.rb +57 -0
  112. data/spec/fortnox/api_spec.rb +19 -124
  113. data/spec/spec_helper.rb +0 -14
  114. data/spec/support/helpers/configuration_helper.rb +30 -3
  115. data/spec/support/helpers.rb +1 -1
  116. data/spec/support/matchers/type/attribute_matcher.rb +2 -2
  117. data/spec/support/matchers/type/enum_matcher.rb +1 -1
  118. data/spec/support/matchers/type/have_account_number_matcher.rb +1 -1
  119. data/spec/support/matchers/type/have_email_matcher.rb +1 -1
  120. data/spec/support/matchers/type/have_nullable_date_matcher.rb +7 -5
  121. data/spec/support/matchers/type/have_nullable_matcher.rb +1 -1
  122. data/spec/support/matchers/type/have_nullable_string_matcher.rb +5 -5
  123. data/spec/support/matchers/type/require_attribute_matcher.rb +5 -5
  124. data/spec/support/matchers/type/type_matcher.rb +1 -1
  125. data/spec/support/vcr_setup.rb +16 -0
  126. data/spec/vcr_cassettes/articles/all.yml +41 -42
  127. data/spec/vcr_cassettes/articles/find_by_hash_failure.yml +36 -19
  128. data/spec/vcr_cassettes/articles/find_failure.yml +36 -19
  129. data/spec/vcr_cassettes/articles/find_id_1.yml +38 -20
  130. data/spec/vcr_cassettes/articles/find_new.yml +39 -22
  131. data/spec/vcr_cassettes/articles/multi_param_find_by_hash.yml +38 -21
  132. data/spec/vcr_cassettes/articles/save_new.yml +37 -19
  133. data/spec/vcr_cassettes/articles/save_old.yml +39 -22
  134. data/spec/vcr_cassettes/articles/save_with_specially_named_attribute.yml +37 -19
  135. data/spec/vcr_cassettes/articles/search_by_name.yml +41 -21
  136. data/spec/vcr_cassettes/articles/search_miss.yml +36 -19
  137. data/spec/vcr_cassettes/articles/search_with_special_char.yml +36 -19
  138. data/spec/vcr_cassettes/articles/single_param_find_by_hash.yml +38 -32
  139. data/spec/vcr_cassettes/authentication/expired_token.yml +54 -0
  140. data/spec/vcr_cassettes/authentication/invalid_authorization.yml +57 -0
  141. data/spec/vcr_cassettes/authentication/invalid_refresh_token.yml +58 -0
  142. data/spec/vcr_cassettes/authentication/valid_request.yml +63 -0
  143. data/spec/vcr_cassettes/customers/all.yml +44 -132
  144. data/spec/vcr_cassettes/customers/find_by_hash_failure.yml +36 -19
  145. data/spec/vcr_cassettes/customers/find_failure.yml +36 -19
  146. data/spec/vcr_cassettes/customers/find_id_1.yml +39 -21
  147. data/spec/vcr_cassettes/customers/find_new.yml +38 -21
  148. data/spec/vcr_cassettes/customers/find_with_sales_account.yml +63 -0
  149. data/spec/vcr_cassettes/customers/multi_param_find_by_hash.yml +38 -21
  150. data/spec/vcr_cassettes/customers/save_new.yml +36 -18
  151. data/spec/vcr_cassettes/customers/save_new_with_country_code_SE.yml +32 -24
  152. data/spec/vcr_cassettes/customers/save_new_with_sales_account.yml +63 -0
  153. data/spec/vcr_cassettes/customers/save_old.yml +38 -21
  154. data/spec/vcr_cassettes/customers/save_with_specially_named_attribute.yml +36 -18
  155. data/spec/vcr_cassettes/customers/search_by_name.yml +38 -48
  156. data/spec/vcr_cassettes/customers/search_miss.yml +36 -19
  157. data/spec/vcr_cassettes/customers/search_with_special_char.yml +36 -19
  158. data/spec/vcr_cassettes/customers/single_param_find_by_hash.yml +39 -22
  159. data/spec/vcr_cassettes/invoices/all.yml +71 -114
  160. data/spec/vcr_cassettes/invoices/filter_hit.yml +39 -24
  161. data/spec/vcr_cassettes/invoices/filter_invalid.yml +35 -17
  162. data/spec/vcr_cassettes/invoices/find_by_hash_failure.yml +36 -19
  163. data/spec/vcr_cassettes/invoices/find_failure.yml +36 -19
  164. data/spec/vcr_cassettes/invoices/find_id_1.yml +40 -22
  165. data/spec/vcr_cassettes/invoices/find_new.yml +41 -24
  166. data/spec/vcr_cassettes/invoices/multi_param_find_by_hash.yml +38 -21
  167. data/spec/vcr_cassettes/invoices/row_description_limit.yml +65 -0
  168. data/spec/vcr_cassettes/invoices/save_new.yml +39 -21
  169. data/spec/vcr_cassettes/invoices/save_new_with_comments.yml +39 -21
  170. data/spec/vcr_cassettes/invoices/save_new_with_country.yml +35 -26
  171. data/spec/vcr_cassettes/invoices/save_new_with_country_GB.yml +36 -27
  172. data/spec/vcr_cassettes/invoices/save_new_with_country_Norge.yml +35 -26
  173. data/spec/vcr_cassettes/invoices/save_new_with_country_Norway.yml +35 -26
  174. data/spec/vcr_cassettes/invoices/save_new_with_country_Sverige.yml +35 -26
  175. data/spec/vcr_cassettes/invoices/save_new_with_country_VA.yml +36 -27
  176. data/spec/vcr_cassettes/invoices/save_new_with_country_VI.yml +36 -27
  177. data/spec/vcr_cassettes/invoices/save_new_with_country_empty_string.yml +35 -26
  178. data/spec/vcr_cassettes/invoices/save_new_with_country_nil.yml +35 -26
  179. data/spec/vcr_cassettes/invoices/save_new_with_unsaved_parent.yml +65 -0
  180. data/spec/vcr_cassettes/invoices/save_old.yml +41 -24
  181. data/spec/vcr_cassettes/invoices/save_old_with_empty_comments.yml +41 -24
  182. data/spec/vcr_cassettes/invoices/save_old_with_empty_country.yml +37 -29
  183. data/spec/vcr_cassettes/invoices/save_old_with_nil_comments.yml +41 -24
  184. data/spec/vcr_cassettes/invoices/save_old_with_nil_country.yml +37 -29
  185. data/spec/vcr_cassettes/invoices/save_with_nested_model.yml +40 -21
  186. data/spec/vcr_cassettes/invoices/save_with_specially_named_attribute.yml +39 -20
  187. data/spec/vcr_cassettes/invoices/search_by_name.yml +38 -27
  188. data/spec/vcr_cassettes/invoices/search_miss.yml +36 -19
  189. data/spec/vcr_cassettes/invoices/search_with_special_char.yml +36 -19
  190. data/spec/vcr_cassettes/invoices/single_param_find_by_hash.yml +39 -22
  191. data/spec/vcr_cassettes/orders/all.yml +44 -119
  192. data/spec/vcr_cassettes/orders/filter_hit.yml +39 -26
  193. data/spec/vcr_cassettes/orders/filter_invalid.yml +35 -17
  194. data/spec/vcr_cassettes/orders/find_by_hash_failure.yml +36 -19
  195. data/spec/vcr_cassettes/orders/find_failure.yml +36 -19
  196. data/spec/vcr_cassettes/orders/find_id_1.yml +42 -23
  197. data/spec/vcr_cassettes/orders/find_new.yml +41 -24
  198. data/spec/vcr_cassettes/orders/housework_invalid_tax_reduction_type.yml +61 -0
  199. data/spec/vcr_cassettes/orders/housework_othercoses_invalid.yml +61 -0
  200. data/spec/vcr_cassettes/orders/housework_type_babysitting.yml +40 -21
  201. data/spec/vcr_cassettes/orders/housework_type_cleaning.yml +40 -21
  202. data/spec/vcr_cassettes/orders/housework_type_construction.yml +40 -21
  203. data/spec/vcr_cassettes/orders/housework_type_cooking.yml +36 -18
  204. data/spec/vcr_cassettes/orders/housework_type_electricity.yml +40 -21
  205. data/spec/vcr_cassettes/orders/housework_type_gardening.yml +40 -21
  206. data/spec/vcr_cassettes/orders/housework_type_glassmetalwork.yml +40 -21
  207. data/spec/vcr_cassettes/orders/housework_type_grounddrainagework.yml +40 -21
  208. data/spec/vcr_cassettes/orders/housework_type_hvac.yml +40 -21
  209. data/spec/vcr_cassettes/orders/housework_type_itservices.yml +65 -0
  210. data/spec/vcr_cassettes/orders/housework_type_majorappliancerepair.yml +65 -0
  211. data/spec/vcr_cassettes/orders/housework_type_masonry.yml +40 -21
  212. data/spec/vcr_cassettes/orders/housework_type_movingservices.yml +65 -0
  213. data/spec/vcr_cassettes/orders/housework_type_othercare.yml +40 -21
  214. data/spec/vcr_cassettes/orders/housework_type_othercosts.yml +40 -21
  215. data/spec/vcr_cassettes/orders/housework_type_paintingwallpapering.yml +40 -21
  216. data/spec/vcr_cassettes/orders/housework_type_snowplowing.yml +40 -21
  217. data/spec/vcr_cassettes/orders/housework_type_textileclothing.yml +40 -21
  218. data/spec/vcr_cassettes/orders/housework_type_tutoring.yml +36 -18
  219. data/spec/vcr_cassettes/orders/multi_param_find_by_hash.yml +38 -21
  220. data/spec/vcr_cassettes/orders/save_new.yml +40 -22
  221. data/spec/vcr_cassettes/orders/save_old.yml +41 -24
  222. data/spec/vcr_cassettes/orders/save_with_nested_model.yml +40 -21
  223. data/spec/vcr_cassettes/orders/search_by_name.yml +38 -23
  224. data/spec/vcr_cassettes/orders/search_miss.yml +36 -19
  225. data/spec/vcr_cassettes/orders/search_with_special_char.yml +36 -19
  226. data/spec/vcr_cassettes/orders/single_param_find_by_hash.yml +39 -22
  227. data/spec/vcr_cassettes/projects/all.yml +39 -37
  228. data/spec/vcr_cassettes/projects/find_by_hash_failure.yml +36 -19
  229. data/spec/vcr_cassettes/projects/find_failure.yml +36 -19
  230. data/spec/vcr_cassettes/projects/find_id_1.yml +38 -21
  231. data/spec/vcr_cassettes/projects/find_new.yml +39 -22
  232. data/spec/vcr_cassettes/projects/multi_param_find_by_hash.yml +40 -22
  233. data/spec/vcr_cassettes/projects/save_new.yml +37 -19
  234. data/spec/vcr_cassettes/projects/save_old.yml +39 -22
  235. data/spec/vcr_cassettes/projects/single_param_find_by_hash.yml +38 -21
  236. data/spec/vcr_cassettes/termsofpayments/all.yml +43 -29
  237. data/spec/vcr_cassettes/termsofpayments/find_failure.yml +36 -19
  238. data/spec/vcr_cassettes/termsofpayments/find_id_1.yml +38 -22
  239. data/spec/vcr_cassettes/termsofpayments/find_new.yml +38 -21
  240. data/spec/vcr_cassettes/termsofpayments/save_new.yml +37 -19
  241. data/spec/vcr_cassettes/termsofpayments/save_old.yml +38 -21
  242. data/spec/vcr_cassettes/units/all.yml +38 -26
  243. data/spec/vcr_cassettes/units/find_failure.yml +36 -19
  244. data/spec/vcr_cassettes/units/find_id_1.yml +38 -21
  245. data/spec/vcr_cassettes/units/find_new.yml +38 -21
  246. data/spec/vcr_cassettes/units/save_new.yml +37 -19
  247. data/spec/vcr_cassettes/units/save_old.yml +38 -21
  248. data/spec/vcr_cassettes/units/save_with_specially_named_attribute.yml +37 -19
  249. metadata +133 -252
  250. data/lib/fortnox/api/circular_queue.rb +0 -39
  251. data/spec/fortnox/api/circular_queue_spec.rb +0 -52
  252. data/spec/support/helpers/dummy_class_helper.rb +0 -38
  253. data/spec/support/helpers/when_performing_helper.rb +0 -7
  254. data/spec/vcr_cassettes/invoices/save_new_with_country_KR.yml +0 -57
  255. data/temp.txt +0 -1
@@ -1,12 +1,39 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'dotenv'
4
+ require 'jwt'
5
+
6
+ DOTENV_FILE_NAME = '.env.test'
7
+ Dotenv.load(DOTENV_FILE_NAME)
8
+
9
+ DEBUG = ENV.fetch('DEBUG', false) == true
10
+
3
11
  module Helpers
4
12
  module Configuration
5
- def set_api_test_configuration
13
+ def set_api_test_configuration # rubocop:disable Metrics/MethodLength
6
14
  Fortnox::API.configure do |config|
7
- config.client_secret = '9aBA8ZgsvR'
8
- config.access_tokens = ['ccaef817-d5d8-4b1c-a316-54f3e55c5c54']
15
+ config.debugging = DEBUG
16
+
17
+ if DEBUG
18
+ config.logger = lambda {
19
+ logger = Logger.new($stdout)
20
+ logger.level = Logger::DEBUG
21
+ return logger
22
+ }.call
23
+ end
9
24
  end
25
+
26
+ Fortnox::API.access_token = ENV.fetch('FORTNOX_API_ACCESS_TOKEN')
27
+ end
28
+
29
+ def add_to_registry(symbol, klass)
30
+ unless Fortnox::API::Registry.key? symbol
31
+ # Only register the key once...
32
+ Fortnox::API::Registry.register(symbol) { klass }
33
+ end
34
+
35
+ # ... but stub the value each test run
36
+ Fortnox::API::Registry.stub(symbol, klass)
10
37
  end
11
38
  end
12
39
  end
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Dir[File.expand_path('spec/support/helpers/*.rb')].each { |file| require file }
3
+ Dir[File.expand_path('spec/support/helpers/*.rb')].sort.each { |file| require file }
@@ -19,7 +19,7 @@ module Matchers
19
19
  end
20
20
 
21
21
  def failure_message
22
- "Expected class to have attribute #{@attribute.inspect} defined as #{@attribute_type}, "\
22
+ "Expected class to have attribute #{@attribute.inspect} defined as #{@attribute_type}, " \
23
23
  "but got following errors:
24
24
  #{@errors}"
25
25
  end
@@ -29,7 +29,7 @@ module Matchers
29
29
  def expect_error(msg)
30
30
  yield
31
31
 
32
- @errors << msg
32
+ @errors = @errors += msg
33
33
  false # Fail test since expected error not thrown
34
34
  rescue Dry::Struct::Error
35
35
  # TODO: check if error message is correct
@@ -15,7 +15,7 @@ module Matchers
15
15
  private
16
16
 
17
17
  def expected_type?
18
- @actual_type = @klass.schema[@attribute]
18
+ @actual_type = @klass.schema.keys.find { |x| x.name == @attribute }&.type
19
19
  @actual_type == @enum_type
20
20
  end
21
21
  end
@@ -15,7 +15,7 @@ module Matchers
15
15
  private
16
16
 
17
17
  def expected_type?
18
- @actual_type = @klass.schema[@attribute]
18
+ @actual_type = @klass.schema.keys.find { |x| x.name == @attribute }&.type
19
19
  @actual_type == Fortnox::API::Types::AccountNumber
20
20
  end
21
21
  end
@@ -16,7 +16,7 @@ module Matchers
16
16
  private
17
17
 
18
18
  def expected_type?
19
- @actual_type = @klass.schema[@attribute]
19
+ @actual_type = @klass.schema.keys.find { |x| x.name == @attribute }&.type
20
20
  @actual_type == Fortnox::API::Types::Email
21
21
  end
22
22
  end
@@ -11,9 +11,11 @@ module Matchers
11
11
  @attribute = attribute
12
12
  @valid_value = valid_value
13
13
  @invalid_value = invalid_value
14
- @expected_error = ArgumentError
14
+ @expected_error = Fortnox::API::AttributeError
15
15
  @expected_error_message = 'invalid date'
16
16
  @failure_description = ''
17
+
18
+ super(attribute, valid_value, invalid_value, nil)
17
19
  end
18
20
 
19
21
  def matches?(klass)
@@ -46,11 +48,11 @@ module Matchers
46
48
 
47
49
  @failure_description << " (Expected #{@expected_error}, but got none)"
48
50
  false
49
- rescue @expected_error => error
50
- return true if error.message == @expected_error_message
51
+ rescue @expected_error => exception
52
+ return true if exception.message == @expected_error_message
51
53
 
52
- fail_message = "Expected error message to include #{expected_message.inspect}, "\
53
- "but was #{error.message.inspect}"
54
+ fail_message = "Expected error message to include #{@expected_error_message.inspect}, " \
55
+ "but was #{exception.message.inspect}"
54
56
  raise(fail_message)
55
57
  end
56
58
  end
@@ -45,7 +45,7 @@ module Matchers
45
45
  value = model.send(@attribute)
46
46
  return true if value == @default_value
47
47
 
48
- @failure_description << " (Expected #{@invalid_value.inspect} to default to "\
48
+ @failure_description << " (Expected #{@invalid_value.inspect} to default to " \
49
49
  "#{@default_value.inspect}), but got #{value.inspect}"
50
50
  false
51
51
  end
@@ -33,13 +33,13 @@ module Matchers
33
33
  def rejects_non_string?
34
34
  non_string = 10.0
35
35
  @klass.new(@valid_hash.merge(@attribute => non_string))
36
- rescue Fortnox::API::InvalidAttributeValueError => error
37
- expected_message = "#{non_string.inspect} (#{non_string.class}) "\
36
+ rescue Fortnox::API::AttributeError => exception
37
+ expected_message = "#{non_string.inspect} (#{non_string.class}) " \
38
38
  "has invalid type for #{@attribute.inspect}"
39
- return true if error.message.include?(expected_message)
39
+ return true if exception.message.include?(expected_message)
40
40
 
41
- fail_message = "Expected error message to include #{expected_message.inspect}, "\
42
- "but was #{error.message.inspect}"
41
+ fail_message = "Expected error message to include #{expected_message.inspect}, " \
42
+ "but was #{exception.message.inspect}"
43
43
  raise(fail_message)
44
44
  end
45
45
  end
@@ -43,10 +43,10 @@ module Matchers
43
43
 
44
44
  def includes_error_message
45
45
  @klass.new(@invalid_hash)
46
- rescue EXCEPTION => error
47
- return true if error.message.include? expected_error_message
46
+ rescue EXCEPTION => exception
47
+ return true if exception.message.include? expected_error_message
48
48
 
49
- @wrong_error_message = error.message
49
+ @wrong_error_message = exception.message
50
50
  false
51
51
  end
52
52
 
@@ -55,12 +55,12 @@ module Matchers
55
55
  end
56
56
 
57
57
  def no_exception_failure_message
58
- "Expected class to raise #{EXCEPTION} "\
58
+ "Expected class to raise #{EXCEPTION} " \
59
59
  "when attribute #{@attribute.inspect} is missing."
60
60
  end
61
61
 
62
62
  def wrong_error_message
63
- "Expected exception to equal #{expected_error_message.inspect}. "\
63
+ "Expected exception to equal #{expected_error_message.inspect}. " \
64
64
  "Message was #{@wrong_error_message.inspect}."
65
65
  end
66
66
  end
@@ -21,7 +21,7 @@ module Matchers
21
21
  def correct_type?
22
22
  return true if expected_type?
23
23
 
24
- @errors << "Attribute #{@attribute.inspect} was expected to be of type #{@attribute_type}, "\
24
+ @errors << "Attribute #{@attribute.inspect} was expected to be of type #{@attribute_type}, " \
25
25
  "but was #{@actual_type}"
26
26
  false
27
27
  end
@@ -5,4 +5,20 @@ require 'vcr'
5
5
  VCR.configure do |c|
6
6
  c.cassette_library_dir = 'spec/vcr_cassettes'
7
7
  c.hook_into :webmock
8
+ c.filter_sensitive_data('<AUTHORIZATION>') do |interaction|
9
+ interaction.request.headers['Authorization']&.first
10
+ end
11
+ c.filter_sensitive_data('<REFRESH_TOKEN>') do |interaction|
12
+ interaction.request.body.split('&refresh_token=').last
13
+ end
14
+ c.filter_sensitive_data('<ACCESS_TOKEN>') do |interaction|
15
+ body = interaction.response.body
16
+ access_token = /"access_token":"[^"]*"/.match(body)
17
+ access_token ? access_token.to_s.split('"access_token":"').last.chop : ''
18
+ end
19
+ c.filter_sensitive_data('<REFRESH_TOKEN>') do |interaction|
20
+ body = interaction.response.body
21
+ refresh_token = /"refresh_token":"[^"]*"/.match(body)
22
+ refresh_token ? refresh_token.to_s.split('"refresh_token":"').last.chop : ''
23
+ end
8
24
  end
@@ -11,58 +11,57 @@ http_interactions:
11
11
  - application/json
12
12
  Accept:
13
13
  - application/json
14
- Client-Secret:
15
- - 9aBA8ZgsvR
16
- Access-Token:
17
- - ccaef817-d5d8-4b1c-a316-54f3e55c5c54
14
+ Authorization:
15
+ - "<AUTHORIZATION>"
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ User-Agent:
19
+ - Ruby
18
20
  response:
19
21
  status:
20
22
  code: 200
21
23
  message: OK
22
24
  headers:
23
- Server:
24
- - nginx
25
- Date:
26
- - Wed, 29 May 2019 07:52:46 GMT
25
+ Content-Length:
26
+ - '2040'
27
27
  Content-Type:
28
28
  - application/json
29
- Connection:
30
- - close
29
+ Date:
30
+ - Mon, 30 Jan 2023 10:35:04 GMT
31
31
  Vary:
32
32
  - Accept-Encoding
33
- - Accept-Encoding
33
+ X-Build:
34
+ - 16d854443d
35
+ X-Frame-Options:
36
+ - sameorigin
34
37
  X-Rack-Responsetime:
35
- - '29'
38
+ - '99'
36
39
  X-Uid:
37
- - ac23869c
38
- X-Build:
39
- - e930a91c78
40
+ - 97b8da1b
41
+ Server:
42
+ - Fortnox
43
+ X-Content-Type-Options:
44
+ - nosniff
45
+ X-Xss-Protection:
46
+ - '0'
47
+ Referrer-Policy:
48
+ - strict-origin-when-cross-origin
49
+ Content-Security-Policy:
50
+ - 'upgrade-insecure-requests;frame-ancestors https://*.fortnox.se;report-uri
51
+ /api/cspreport;connect-src ''self'' https://a.storyblok.com wss://*.fortnox.se
52
+ *.fortnox.se *.findity.com mybusiness.pwc.se themes.googleusercontent.com
53
+ s3.amazonaws.com/helpjuice-static/ *.helpjuice.com *.vimeo.com fonts.googleapis.com
54
+ fonts.gstatic.com api.cling.se wss://api.cling.se ''unsafe-inline'' ''unsafe-eval''
55
+ blob: data:'
56
+ Strict-Transport-Security:
57
+ - max-age=31536000; includeSubdomains
40
58
  body:
41
- encoding: UTF-8
42
- string: '{"MetaInformation":{"@TotalResources":26,"@TotalPages":1,"@CurrentPage":1},"Articles":[{"@url":"https:\/\/api.fortnox.se\/3\/articles\/0000","ArticleNumber":"0000","Description":"Testartikel","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":"","StockValue":"0","Unit":null,"VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/0001","ArticleNumber":"0001","Description":"Cykelpump","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":"100","QuantityInStock":"0","ReservedQuantity":"0","StockPlace":"","StockValue":"0","Unit":null,"VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/1","ArticleNumber":"1","Description":"Testartikel","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":"100","QuantityInStock":"0","ReservedQuantity":"0","StockPlace":"","StockValue":"0","Unit":null,"VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/2","ArticleNumber":"2","Description":"A
43
- value","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/3","ArticleNumber":"3","Description":"Test
44
- article","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/4","ArticleNumber":"4","Description":"Test
45
- article","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/5","ArticleNumber":"5","Description":"Test
46
- article","DisposableQuantity":"0","EAN":"5901234123457","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/6","ArticleNumber":"6","Description":"A
47
- value","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/7","ArticleNumber":"7","Description":"Test
48
- article","DisposableQuantity":"0","EAN":"5901234123457","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/8","ArticleNumber":"8","Description":"A
49
- value","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/9","ArticleNumber":"9","Description":"A
50
- value","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/10","ArticleNumber":"10","Description":"Abc
51
- 123","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/11","ArticleNumber":"11","Description":"A
52
- value","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/12","ArticleNumber":"12","Description":"Test
53
- article","DisposableQuantity":"0","EAN":"5901234123457","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/13","ArticleNumber":"13","Description":"Test
54
- article","DisposableQuantity":"0","EAN":"5901234123457","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/14","ArticleNumber":"14","Description":"A
55
- value","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/15","ArticleNumber":"15","Description":"A
56
- value","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/16","ArticleNumber":"16","Description":"Test
57
- article","DisposableQuantity":"0","EAN":"5901234123457","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/17","ArticleNumber":"17","Description":"A
58
- value","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/18","ArticleNumber":"18","Description":"Updated
59
- description","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":null,"VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/19","ArticleNumber":"19","Description":"Updated
60
- description","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":null,"VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/20","ArticleNumber":"20","Description":"Test
61
- article","DisposableQuantity":"0","EAN":"5901234123457","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/21","ArticleNumber":"21","Description":"Updated
62
- description","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":null,"VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/22","ArticleNumber":"22","Description":"Test
63
- article","DisposableQuantity":"0","EAN":"5901234123457","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/23","ArticleNumber":"23","Description":"Updated
64
- description","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":null,"VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/24","ArticleNumber":"24","Description":"Test
59
+ encoding: ASCII-8BIT
60
+ string: '{"MetaInformation":{"@TotalResources":6,"@TotalPages":1,"@CurrentPage":1},"Articles":[{"@url":"https:\/\/api.fortnox.se\/3\/articles\/1","ArticleNumber":"1","Description":"Test
61
+ article","DisposableQuantity":"0","EAN":"5901234123457","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/2","ArticleNumber":"2","Description":"Updated
62
+ description","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":null,"VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/3","ArticleNumber":"3","Description":"Test
63
+ article","DisposableQuantity":"0","EAN":"5901234123457","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/101","ArticleNumber":"101","Description":"Hammer","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":"","StockValue":"0","Unit":null,"VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/102","ArticleNumber":"102","Description":"Updated
64
+ description","DisposableQuantity":"0","EAN":"","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":null,"VAT":null,"WebshopArticle":false},{"@url":"https:\/\/api.fortnox.se\/3\/articles\/103","ArticleNumber":"103","Description":"Test
65
65
  article","DisposableQuantity":"0","EAN":"5901234123457","Housework":false,"PurchasePrice":"0","SalesPrice":null,"QuantityInStock":"0","ReservedQuantity":"0","StockPlace":null,"StockValue":"0","Unit":"","VAT":null,"WebshopArticle":false}]}'
66
- http_version:
67
- recorded_at: Wed, 29 May 2019 07:52:46 GMT
68
- recorded_with: VCR 4.0.0
66
+ recorded_at: Mon, 30 Jan 2023 10:35:04 GMT
67
+ recorded_with: VCR 6.1.0
@@ -11,35 +11,52 @@ http_interactions:
11
11
  - application/json
12
12
  Accept:
13
13
  - application/json
14
- Client-Secret:
15
- - 9aBA8ZgsvR
16
- Access-Token:
17
- - ccaef817-d5d8-4b1c-a316-54f3e55c5c54
14
+ Authorization:
15
+ - "<AUTHORIZATION>"
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ User-Agent:
19
+ - Ruby
18
20
  response:
19
21
  status:
20
22
  code: 200
21
23
  message: OK
22
24
  headers:
23
- Server:
24
- - nginx
25
- Date:
26
- - Wed, 29 May 2019 07:52:47 GMT
25
+ Content-Length:
26
+ - '88'
27
27
  Content-Type:
28
28
  - application/json
29
- Connection:
30
- - close
29
+ Date:
30
+ - Mon, 30 Jan 2023 10:35:05 GMT
31
31
  Vary:
32
32
  - Accept-Encoding
33
- - Accept-Encoding
33
+ X-Build:
34
+ - 16d854443d
35
+ X-Frame-Options:
36
+ - sameorigin
34
37
  X-Rack-Responsetime:
35
- - '24'
38
+ - '73'
36
39
  X-Uid:
37
- - 02aed38b
38
- X-Build:
39
- - e930a91c78
40
+ - 90a7ad19
41
+ Server:
42
+ - Fortnox
43
+ X-Content-Type-Options:
44
+ - nosniff
45
+ X-Xss-Protection:
46
+ - '0'
47
+ Referrer-Policy:
48
+ - strict-origin-when-cross-origin
49
+ Content-Security-Policy:
50
+ - 'upgrade-insecure-requests;frame-ancestors https://*.fortnox.se;report-uri
51
+ /api/cspreport;connect-src ''self'' https://a.storyblok.com wss://*.fortnox.se
52
+ *.fortnox.se *.findity.com mybusiness.pwc.se themes.googleusercontent.com
53
+ s3.amazonaws.com/helpjuice-static/ *.helpjuice.com *.vimeo.com fonts.googleapis.com
54
+ fonts.gstatic.com api.cling.se wss://api.cling.se ''unsafe-inline'' ''unsafe-eval''
55
+ blob: data:'
56
+ Strict-Transport-Security:
57
+ - max-age=31536000; includeSubdomains
40
58
  body:
41
- encoding: UTF-8
59
+ encoding: ASCII-8BIT
42
60
  string: '{"MetaInformation":{"@TotalResources":0,"@TotalPages":0,"@CurrentPage":1},"Articles":[]}'
43
- http_version:
44
- recorded_at: Wed, 29 May 2019 07:52:47 GMT
45
- recorded_with: VCR 4.0.0
61
+ recorded_at: Mon, 30 Jan 2023 10:35:05 GMT
62
+ recorded_with: VCR 6.1.0
@@ -11,35 +11,52 @@ http_interactions:
11
11
  - application/json
12
12
  Accept:
13
13
  - application/json
14
- Client-Secret:
15
- - 9aBA8ZgsvR
16
- Access-Token:
17
- - ccaef817-d5d8-4b1c-a316-54f3e55c5c54
14
+ Authorization:
15
+ - "<AUTHORIZATION>"
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ User-Agent:
19
+ - Ruby
18
20
  response:
19
21
  status:
20
22
  code: 404
21
23
  message: Not Found
22
24
  headers:
23
- Server:
24
- - nginx
25
- Date:
26
- - Wed, 29 May 2019 07:52:46 GMT
25
+ Content-Length:
26
+ - '84'
27
27
  Content-Type:
28
28
  - application/json
29
- Connection:
30
- - close
29
+ Date:
30
+ - Mon, 30 Jan 2023 10:35:05 GMT
31
31
  Vary:
32
32
  - Accept-Encoding
33
- - Accept-Encoding
33
+ X-Build:
34
+ - 16d854443d
35
+ X-Frame-Options:
36
+ - sameorigin
34
37
  X-Rack-Responsetime:
35
- - '25'
38
+ - '85'
36
39
  X-Uid:
37
- - 1b004c01
38
- X-Build:
39
- - e930a91c78
40
+ - 306179db
41
+ Server:
42
+ - Fortnox
43
+ X-Content-Type-Options:
44
+ - nosniff
45
+ X-Xss-Protection:
46
+ - '0'
47
+ Referrer-Policy:
48
+ - strict-origin-when-cross-origin
49
+ Content-Security-Policy:
50
+ - 'upgrade-insecure-requests;frame-ancestors https://*.fortnox.se;report-uri
51
+ /api/cspreport;connect-src ''self'' https://a.storyblok.com wss://*.fortnox.se
52
+ *.fortnox.se *.findity.com mybusiness.pwc.se themes.googleusercontent.com
53
+ s3.amazonaws.com/helpjuice-static/ *.helpjuice.com *.vimeo.com fonts.googleapis.com
54
+ fonts.gstatic.com api.cling.se wss://api.cling.se ''unsafe-inline'' ''unsafe-eval''
55
+ blob: data:'
56
+ Strict-Transport-Security:
57
+ - max-age=31536000; includeSubdomains
40
58
  body:
41
- encoding: UTF-8
59
+ encoding: ASCII-8BIT
42
60
  string: '{"ErrorInformation":{"Error":1,"Message":"Kan inte hitta artikeln.","Code":2000428}}'
43
- http_version:
44
- recorded_at: Wed, 29 May 2019 07:52:46 GMT
45
- recorded_with: VCR 4.0.0
61
+ recorded_at: Mon, 30 Jan 2023 10:35:05 GMT
62
+ recorded_with: VCR 6.1.0
@@ -11,35 +11,53 @@ http_interactions:
11
11
  - application/json
12
12
  Accept:
13
13
  - application/json
14
- Client-Secret:
15
- - 9aBA8ZgsvR
16
- Access-Token:
17
- - ccaef817-d5d8-4b1c-a316-54f3e55c5c54
14
+ Authorization:
15
+ - "<AUTHORIZATION>"
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ User-Agent:
19
+ - Ruby
18
20
  response:
19
21
  status:
20
22
  code: 200
21
23
  message: OK
22
24
  headers:
23
- Server:
24
- - nginx
25
- Date:
26
- - Wed, 29 May 2019 07:52:46 GMT
25
+ Content-Length:
26
+ - '896'
27
27
  Content-Type:
28
28
  - application/json
29
- Connection:
30
- - close
29
+ Date:
30
+ - Mon, 30 Jan 2023 10:35:04 GMT
31
31
  Vary:
32
32
  - Accept-Encoding
33
- - Accept-Encoding
33
+ X-Build:
34
+ - 16d854443d
35
+ X-Frame-Options:
36
+ - sameorigin
34
37
  X-Rack-Responsetime:
35
- - '31'
38
+ - '91'
36
39
  X-Uid:
37
- - 126f6b17
38
- X-Build:
39
- - e930a91c78
40
+ - '71616897'
41
+ Server:
42
+ - Fortnox
43
+ X-Content-Type-Options:
44
+ - nosniff
45
+ X-Xss-Protection:
46
+ - '0'
47
+ Referrer-Policy:
48
+ - strict-origin-when-cross-origin
49
+ Content-Security-Policy:
50
+ - 'upgrade-insecure-requests;frame-ancestors https://*.fortnox.se;report-uri
51
+ /api/cspreport;connect-src ''self'' https://a.storyblok.com wss://*.fortnox.se
52
+ *.fortnox.se *.findity.com mybusiness.pwc.se themes.googleusercontent.com
53
+ s3.amazonaws.com/helpjuice-static/ *.helpjuice.com *.vimeo.com fonts.googleapis.com
54
+ fonts.gstatic.com api.cling.se wss://api.cling.se ''unsafe-inline'' ''unsafe-eval''
55
+ blob: data:'
56
+ Strict-Transport-Security:
57
+ - max-age=31536000; includeSubdomains
40
58
  body:
41
- encoding: UTF-8
42
- string: '{"Article":{"@url":"https:\/\/api.fortnox.se\/3\/articles\/1","ArticleNumber":"1","Bulky":false,"ConstructionAccount":1030,"Depth":null,"Description":"Testartikel","DisposableQuantity":-163995.5,"EAN":"","EUAccount":1030,"EUVATAccount":1030,"ExportAccount":1030,"Height":null,"Housework":false,"HouseworkType":null,"Active":true,"Manufacturer":null,"ManufacturerArticleNumber":null,"Note":"","PurchaseAccount":1030,"PurchasePrice":0,"QuantityInStock":0,"ReservedQuantity":163995.5,"SalesAccount":1030,"StockGoods":false,"StockPlace":"","StockValue":0,"StockWarning":null,"SupplierName":null,"SupplierNumber":null,"Type":"STOCK","Unit":null,"VAT":0,"WebshopArticle":false,"Weight":null,"Width":null,"Expired":false,"SalesPrice":100,"CostCalculationMethod":null,"StockAccount":null,"StockChangeAccount":null,"DirectCost":0,"FreightCost":0,"OtherCost":0,"DefaultStockPoint":null,"DefaultStockLocation":null}}'
43
- http_version:
44
- recorded_at: Wed, 29 May 2019 07:52:46 GMT
45
- recorded_with: VCR 4.0.0
59
+ encoding: ASCII-8BIT
60
+ string: '{"Article":{"@url":"https:\/\/api.fortnox.se\/3\/articles\/1","ArticleNumber":"1","Bulky":false,"ConstructionAccount":0,"Depth":0,"Description":"Test
61
+ article","DisposableQuantity":0,"EAN":"5901234123457","EUAccount":3108,"EUVATAccount":3106,"ExportAccount":3105,"Height":0,"Housework":false,"HouseworkType":null,"Active":true,"Manufacturer":null,"ManufacturerArticleNumber":"","Note":"","PurchaseAccount":4000,"PurchasePrice":0,"QuantityInStock":0,"ReservedQuantity":0,"SalesAccount":3004,"StockGoods":false,"StockPlace":null,"StockValue":0,"StockWarning":0,"SupplierName":null,"SupplierNumber":null,"Type":"STOCK","Unit":null,"VAT":0,"WebshopArticle":false,"Weight":0,"Width":0,"Expired":false,"SalesPrice":null,"CostCalculationMethod":null,"StockAccount":null,"StockChangeAccount":null,"DirectCost":null,"FreightCost":null,"OtherCost":null,"DefaultStockPoint":null,"DefaultStockLocation":null}}'
62
+ recorded_at: Mon, 30 Jan 2023 10:35:04 GMT
63
+ recorded_with: VCR 6.1.0