From fd4f279d2161770ca4b55b93297dde65f969a686 Mon Sep 17 00:00:00 2001 From: xxswingxx Date: Thu, 21 Dec 2017 13:37:03 +0000 Subject: [PATCH] Rewrite specs --- .gitignore | 2 + .rspec | 2 + .travis.yml | 4 + Gemfile | 17 +- Gemfile.lock | 128 ++--- Rakefile | 54 +- VERSION | 1 - lib/quaderno-ruby.rb | 3 +- lib/quaderno-ruby/base.rb | 214 ++++---- lib/quaderno-ruby/behavior/block.rb | 36 +- lib/quaderno-ruby/behavior/crud.rb | 188 ++++--- lib/quaderno-ruby/behavior/deliver.rb | 34 +- lib/quaderno-ruby/behavior/payment.rb | 66 ++- lib/quaderno-ruby/behavior/retrieve.rb | 48 +- lib/quaderno-ruby/contact.rb | 14 +- lib/quaderno-ruby/credit.rb | 22 +- lib/quaderno-ruby/document_item.rb | 4 +- lib/quaderno-ruby/estimate.rb | 12 +- lib/quaderno-ruby/evidence.rb | 12 +- lib/quaderno-ruby/exceptions/exceptions.rb | 86 ++- lib/quaderno-ruby/expense.rb | 14 +- lib/quaderno-ruby/helpers/authentication.rb | 34 +- lib/quaderno-ruby/income.rb | 18 +- lib/quaderno-ruby/invoice.rb | 20 +- lib/quaderno-ruby/item.rb | 9 +- lib/quaderno-ruby/payment.rb | 4 +- lib/quaderno-ruby/receipt.rb | 14 +- lib/quaderno-ruby/recurring.rb | 11 +- lib/quaderno-ruby/report.rb | 114 ++-- lib/quaderno-ruby/tax.rb | 92 ++-- lib/quaderno-ruby/version.rb | 3 + lib/quaderno-ruby/webhook.rb | 8 +- quaderno.gemspec | 176 +----- .../quaderno_cassettes/all_contacts.yml | 186 +++++++ .../all_contacts_by_access_token.yml | 213 ++++++++ .../all_contacts_by_authentication_token.yml | 199 +++++++ .../quaderno_cassettes/deleted_contact.yml | 488 +++++++++++++++++ .../deleted_contact_by_access_token.yml | 195 +++++++ ...eleted_contact_by_authentication_token.yml | 513 ++++++++++++++++++ .../quaderno_cassettes/found_contact.yml | 227 ++++++++ .../found_contact_by_access_token.yml | 268 +++++++++ .../found_contact_by_authentication_token.yml | 241 ++++++++ .../quaderno_cassettes/new_contact.yml | 46 ++ .../new_contact_by_access_token.yml | 48 ++ .../new_contact_by_authentication_token.yml | 46 ++ .../quaderno_cassettes/rate_limit.yml | 44 ++ .../quaderno_cassettes/updated_contact.yml | 242 +++++++++ .../updated_contact_by_access_token.yml | 271 +++++++++ ...pdated_contact_by_authentication_token.yml | 254 +++++++++ spec/helper.rb | 20 + spec/unit/test_quaderno_contacts.rb | 166 ++++++ .../unit/test_quaderno_estimates.rb | 0 .../unit/test_quaderno_evidences.rb | 0 {test => spec}/unit/test_quaderno_expenses.rb | 0 {test => spec}/unit/test_quaderno_invoices.rb | 0 {test => spec}/unit/test_quaderno_items.rb | 0 {test => spec}/unit/test_quaderno_receipts.rb | 0 {test => spec}/unit/test_quaderno_tax.rb | 0 {test => spec}/unit/test_quaderno_webhooks.rb | 0 test/fixtures/quaderno_cassettes/.DS_Store | Bin 6148 -> 0 bytes .../quaderno_cassettes/all_contacts.yml | 52 -- .../all_contacts_by_access_token.yml | 56 -- .../all_contacts_by_authentication_token.yml | 57 -- .../quaderno_cassettes/all_estimates.yml | 52 -- .../quaderno_cassettes/all_expenses.yml | 55 -- .../quaderno_cassettes/all_invoices.yml | 56 -- .../fixtures/quaderno_cassettes/all_items.yml | 46 -- .../quaderno_cassettes/all_receipts.yml | 53 -- .../quaderno_cassettes/all_webhooks.yml | 214 -------- .../create_estimate_on_downgraded_API.yml | 156 ------ .../create_expense_on_downgraded_API.yml | 278 ---------- .../create_invoice_on_downgraded_API.yml | 159 ------ .../create_receipt_on_downgraded_API.yml | 196 ------- .../quaderno_cassettes/deleted_contact.yml | 187 ------- .../deleted_contact_by_access_token.yml | 199 ------- ...eleted_contact_by_authentication_token.yml | 199 ------- .../quaderno_cassettes/deleted_estimate.yml | 187 ------- .../quaderno_cassettes/deleted_expense.yml | 189 ------- .../quaderno_cassettes/deleted_invoice.yml | 190 ------- .../quaderno_cassettes/deleted_item.yml | 128 ----- .../quaderno_cassettes/deleted_receipt.yml | 223 -------- .../quaderno_cassettes/deleted_webhook.yml | 257 --------- .../quaderno_cassettes/delivered_estimate.yml | 136 ----- .../quaderno_cassettes/delivered_invoice.yml | 143 ----- .../quaderno_cassettes/delivered_receipt.yml | 140 ----- .../quaderno_cassettes/evidence_invoice.yml | 98 ---- .../quaderno_cassettes/found_contact.yml | 95 ---- .../found_contact_by_access_token.yml | 99 ---- .../found_contact_by_authentication_token.yml | 100 ---- .../quaderno_cassettes/found_estimate.yml | 97 ---- .../quaderno_cassettes/found_expense.yml | 99 ---- .../quaderno_cassettes/found_invoice.yml | 100 ---- .../quaderno_cassettes/found_item.yml | 91 ---- .../quaderno_cassettes/found_receipt.yml | 98 ---- .../quaderno_cassettes/found_webhook.yml | 130 ----- .../quaderno_cassettes/new_contact.yml | 48 -- .../new_contact_by_access_token.yml | 48 -- .../new_contact_by_authentication_token.yml | 48 -- .../quaderno_cassettes/new_estimate.yml | 137 ----- .../quaderno_cassettes/new_evidence.yml | 48 -- .../quaderno_cassettes/new_expense.yml | 189 ------- .../quaderno_cassettes/new_invoice.yml | 137 ----- test/fixtures/quaderno_cassettes/new_item.yml | 48 -- .../quaderno_cassettes/new_receipt.yml | 173 ------ .../quaderno_cassettes/new_webhook.yml | 87 --- .../quaderno_cassettes/paid_expense.yml | 98 ---- .../quaderno_cassettes/paid_invoice.yml | 99 ---- .../quaderno_cassettes/rate_limit.yml | 46 -- .../quaderno_cassettes/unpay_an_expense.yml | 138 ----- .../quaderno_cassettes/unpay_an_invoice.yml | 138 ----- .../quaderno_cassettes/updated_contact.yml | 97 ---- .../updated_contact_by_access_token.yml | 101 ---- ...pdated_contact_by_authentication_token.yml | 102 ---- .../quaderno_cassettes/updated_estimate.yml | 185 ------- .../quaderno_cassettes/updated_expense.yml | 184 ------- .../quaderno_cassettes/updated_invoice.yml | 184 ------- .../quaderno_cassettes/updated_item.yml | 93 ---- .../quaderno_cassettes/updated_receipt.yml | 220 -------- .../quaderno_cassettes/updated_webhook.yml | 175 ------ .../validate_invalid_VAT_number.yml | 44 -- .../validate_valid_VAT_number.yml | 44 -- test/helper.rb | 32 -- test/unit/test_quaderno_contacts.rb | 83 --- .../test_quaderno_contacts_thread_safe.rb | 104 ---- 124 files changed, 4280 insertions(+), 8596 deletions(-) create mode 100644 .rspec create mode 100644 .travis.yml delete mode 100644 VERSION create mode 100644 lib/quaderno-ruby/version.rb create mode 100644 spec/fixtures/quaderno_cassettes/all_contacts.yml create mode 100644 spec/fixtures/quaderno_cassettes/all_contacts_by_access_token.yml create mode 100644 spec/fixtures/quaderno_cassettes/all_contacts_by_authentication_token.yml create mode 100644 spec/fixtures/quaderno_cassettes/deleted_contact.yml create mode 100644 spec/fixtures/quaderno_cassettes/deleted_contact_by_access_token.yml create mode 100644 spec/fixtures/quaderno_cassettes/deleted_contact_by_authentication_token.yml create mode 100644 spec/fixtures/quaderno_cassettes/found_contact.yml create mode 100644 spec/fixtures/quaderno_cassettes/found_contact_by_access_token.yml create mode 100644 spec/fixtures/quaderno_cassettes/found_contact_by_authentication_token.yml create mode 100644 spec/fixtures/quaderno_cassettes/new_contact.yml create mode 100644 spec/fixtures/quaderno_cassettes/new_contact_by_access_token.yml create mode 100644 spec/fixtures/quaderno_cassettes/new_contact_by_authentication_token.yml create mode 100644 spec/fixtures/quaderno_cassettes/rate_limit.yml create mode 100644 spec/fixtures/quaderno_cassettes/updated_contact.yml create mode 100644 spec/fixtures/quaderno_cassettes/updated_contact_by_access_token.yml create mode 100644 spec/fixtures/quaderno_cassettes/updated_contact_by_authentication_token.yml create mode 100644 spec/helper.rb create mode 100644 spec/unit/test_quaderno_contacts.rb rename {test => spec}/unit/test_quaderno_estimates.rb (100%) rename {test => spec}/unit/test_quaderno_evidences.rb (100%) rename {test => spec}/unit/test_quaderno_expenses.rb (100%) rename {test => spec}/unit/test_quaderno_invoices.rb (100%) rename {test => spec}/unit/test_quaderno_items.rb (100%) rename {test => spec}/unit/test_quaderno_receipts.rb (100%) rename {test => spec}/unit/test_quaderno_tax.rb (100%) rename {test => spec}/unit/test_quaderno_webhooks.rb (100%) delete mode 100644 test/fixtures/quaderno_cassettes/.DS_Store delete mode 100644 test/fixtures/quaderno_cassettes/all_contacts.yml delete mode 100644 test/fixtures/quaderno_cassettes/all_contacts_by_access_token.yml delete mode 100644 test/fixtures/quaderno_cassettes/all_contacts_by_authentication_token.yml delete mode 100644 test/fixtures/quaderno_cassettes/all_estimates.yml delete mode 100644 test/fixtures/quaderno_cassettes/all_expenses.yml delete mode 100644 test/fixtures/quaderno_cassettes/all_invoices.yml delete mode 100644 test/fixtures/quaderno_cassettes/all_items.yml delete mode 100644 test/fixtures/quaderno_cassettes/all_receipts.yml delete mode 100644 test/fixtures/quaderno_cassettes/all_webhooks.yml delete mode 100644 test/fixtures/quaderno_cassettes/create_estimate_on_downgraded_API.yml delete mode 100644 test/fixtures/quaderno_cassettes/create_expense_on_downgraded_API.yml delete mode 100644 test/fixtures/quaderno_cassettes/create_invoice_on_downgraded_API.yml delete mode 100644 test/fixtures/quaderno_cassettes/create_receipt_on_downgraded_API.yml delete mode 100644 test/fixtures/quaderno_cassettes/deleted_contact.yml delete mode 100644 test/fixtures/quaderno_cassettes/deleted_contact_by_access_token.yml delete mode 100644 test/fixtures/quaderno_cassettes/deleted_contact_by_authentication_token.yml delete mode 100644 test/fixtures/quaderno_cassettes/deleted_estimate.yml delete mode 100644 test/fixtures/quaderno_cassettes/deleted_expense.yml delete mode 100644 test/fixtures/quaderno_cassettes/deleted_invoice.yml delete mode 100644 test/fixtures/quaderno_cassettes/deleted_item.yml delete mode 100644 test/fixtures/quaderno_cassettes/deleted_receipt.yml delete mode 100644 test/fixtures/quaderno_cassettes/deleted_webhook.yml delete mode 100644 test/fixtures/quaderno_cassettes/delivered_estimate.yml delete mode 100644 test/fixtures/quaderno_cassettes/delivered_invoice.yml delete mode 100644 test/fixtures/quaderno_cassettes/delivered_receipt.yml delete mode 100644 test/fixtures/quaderno_cassettes/evidence_invoice.yml delete mode 100644 test/fixtures/quaderno_cassettes/found_contact.yml delete mode 100644 test/fixtures/quaderno_cassettes/found_contact_by_access_token.yml delete mode 100644 test/fixtures/quaderno_cassettes/found_contact_by_authentication_token.yml delete mode 100644 test/fixtures/quaderno_cassettes/found_estimate.yml delete mode 100644 test/fixtures/quaderno_cassettes/found_expense.yml delete mode 100644 test/fixtures/quaderno_cassettes/found_invoice.yml delete mode 100644 test/fixtures/quaderno_cassettes/found_item.yml delete mode 100644 test/fixtures/quaderno_cassettes/found_receipt.yml delete mode 100644 test/fixtures/quaderno_cassettes/found_webhook.yml delete mode 100644 test/fixtures/quaderno_cassettes/new_contact.yml delete mode 100644 test/fixtures/quaderno_cassettes/new_contact_by_access_token.yml delete mode 100644 test/fixtures/quaderno_cassettes/new_contact_by_authentication_token.yml delete mode 100644 test/fixtures/quaderno_cassettes/new_estimate.yml delete mode 100644 test/fixtures/quaderno_cassettes/new_evidence.yml delete mode 100644 test/fixtures/quaderno_cassettes/new_expense.yml delete mode 100644 test/fixtures/quaderno_cassettes/new_invoice.yml delete mode 100644 test/fixtures/quaderno_cassettes/new_item.yml delete mode 100644 test/fixtures/quaderno_cassettes/new_receipt.yml delete mode 100644 test/fixtures/quaderno_cassettes/new_webhook.yml delete mode 100644 test/fixtures/quaderno_cassettes/paid_expense.yml delete mode 100644 test/fixtures/quaderno_cassettes/paid_invoice.yml delete mode 100644 test/fixtures/quaderno_cassettes/rate_limit.yml delete mode 100644 test/fixtures/quaderno_cassettes/unpay_an_expense.yml delete mode 100644 test/fixtures/quaderno_cassettes/unpay_an_invoice.yml delete mode 100644 test/fixtures/quaderno_cassettes/updated_contact.yml delete mode 100644 test/fixtures/quaderno_cassettes/updated_contact_by_access_token.yml delete mode 100644 test/fixtures/quaderno_cassettes/updated_contact_by_authentication_token.yml delete mode 100644 test/fixtures/quaderno_cassettes/updated_estimate.yml delete mode 100644 test/fixtures/quaderno_cassettes/updated_expense.yml delete mode 100644 test/fixtures/quaderno_cassettes/updated_invoice.yml delete mode 100644 test/fixtures/quaderno_cassettes/updated_item.yml delete mode 100644 test/fixtures/quaderno_cassettes/updated_receipt.yml delete mode 100644 test/fixtures/quaderno_cassettes/updated_webhook.yml delete mode 100644 test/fixtures/quaderno_cassettes/validate_invalid_VAT_number.yml delete mode 100644 test/fixtures/quaderno_cassettes/validate_valid_VAT_number.yml delete mode 100644 test/helper.rb delete mode 100644 test/unit/test_quaderno_contacts.rb delete mode 100644 test/unit/test_quaderno_contacts_thread_safe.rb diff --git a/.gitignore b/.gitignore index 5139c76..b642bc1 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,8 @@ Gemfile.lock # jeweler generated pkg +/Gemfile.lock + # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore: # # * Create a file at ~/.gitignore diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..8c18f1a --- /dev/null +++ b/.rspec @@ -0,0 +1,2 @@ +--format documentation +--color diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..a21a21d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,4 @@ +language: ruby +rvm: + - 2.1.1 +before_install: gem install bundler -v 1.11.2 diff --git a/Gemfile b/Gemfile index ef59192..176197c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,17 +1,4 @@ source 'http://rubygems.org' -gem 'httparty', '~> 0.13.1' - -group :development do - gem 'jeweler', '~> 2.0.1' - gem 'rdoc', '~> 3.12' -end - -group :test do - gem 'bundler', '>= 1.0.0' - gem 'fakeweb' - gem 'minitest', '~> 4.7.5 ' - gem 'simplecov', '>= 0' - gem 'shoulda', '>= 0' - gem 'vcr', :require => 'vcr' -end +# Specify your gem's dependencies in valabn.gemspec +gemspec diff --git a/Gemfile.lock b/Gemfile.lock index 6ab7348..94ea1e1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,91 +1,71 @@ +PATH + remote: . + specs: + quaderno (1.14.1) + httparty (~> 0.13.1) + GEM remote: http://rubygems.org/ specs: - activesupport (4.0.5) - i18n (~> 0.6, >= 0.6.9) - minitest (~> 4.2) - multi_json (~> 1.3) - thread_safe (~> 0.1) - tzinfo (~> 0.3.37) - addressable (2.3.6) - builder (3.2.2) - descendants_tracker (0.0.4) - thread_safe (~> 0.3, >= 0.3.1) - docile (1.1.5) - fakeweb (1.3.0) - faraday (0.9.0) - multipart-post (>= 1.2, < 3) - git (1.2.7) - github_api (0.11.3) - addressable (~> 2.3) - descendants_tracker (~> 0.0.1) - faraday (~> 0.8, < 0.10) - hashie (>= 1.2) - multi_json (>= 1.7.5, < 2.0) - nokogiri (~> 1.6.0) - oauth2 - hashie (3.0.0) - highline (1.6.21) - httparty (0.13.1) + activesupport (4.2.10) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + concurrent-ruby (1.0.5) + crack (0.4.3) + safe_yaml (~> 1.0.0) + diff-lcs (1.3) + hashdiff (0.3.7) + httparty (0.13.7) json (~> 1.8) multi_xml (>= 0.5.2) - i18n (0.7.0) - jeweler (2.0.1) - builder - bundler (>= 1.0) - git (>= 1.2.5) - github_api - highline (>= 1.6.15) - nokogiri (>= 1.5.10) - rake - rdoc - json (1.8.1) - jwt (1.0.0) - mini_portile (0.6.0) - minitest (4.7.5) - multi_json (1.10.1) - multi_xml (0.5.5) - multipart-post (2.0.0) - nokogiri (1.6.2.1) - mini_portile (= 0.6.0) - oauth2 (0.9.4) - faraday (>= 0.8, < 0.10) - jwt (~> 1.0) - multi_json (~> 1.3) - multi_xml (~> 0.5) - rack (~> 1.2) - rack (1.5.2) - rake (10.3.2) + i18n (0.9.1) + concurrent-ruby (~> 1.0) + json (1.8.6) + minitest (5.10.3) + multi_xml (0.6.0) + public_suffix (3.0.1) + rake (10.5.0) rdoc (3.12.2) json (~> 1.4) - shoulda (3.5.0) - shoulda-context (~> 1.0, >= 1.0.1) - shoulda-matchers (>= 1.4.1, < 3.0) - shoulda-context (1.2.1) - shoulda-matchers (2.6.1) - activesupport (>= 3.0.0) - simplecov (0.11.2) - docile (~> 1.1.0) - json (~> 1.8) - simplecov-html (~> 0.10.0) - simplecov-html (0.10.0) - thread_safe (0.3.4) - tzinfo (0.3.39) - vcr (2.9.2) + rspec (3.7.0) + rspec-core (~> 3.7.0) + rspec-expectations (~> 3.7.0) + rspec-mocks (~> 3.7.0) + rspec-core (3.7.0) + rspec-support (~> 3.7.0) + rspec-expectations (3.7.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.7.0) + rspec-mocks (3.7.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.7.0) + rspec-support (3.7.0) + safe_yaml (1.0.4) + thread_safe (0.3.6) + tzinfo (1.2.4) + thread_safe (~> 0.1) + vcr (4.0.0) + webmock (1.22.6) + addressable (>= 2.3.6) + crack (>= 0.3.2) + hashdiff PLATFORMS ruby DEPENDENCIES - bundler (>= 1.0.0) - fakeweb - httparty (~> 0.13.1) - jeweler (~> 2.0.1) - minitest (~> 4.7.5) + activesupport (~> 4.2.0) + bundler (~> 1.11) + quaderno! + rake (~> 10.0) rdoc (~> 3.12) - shoulda - simplecov + rspec (~> 3.0) vcr + webmock (~> 1.22.6) BUNDLED WITH 1.11.2 diff --git a/Rakefile b/Rakefile index 29e2af7..b7e9ed5 100644 --- a/Rakefile +++ b/Rakefile @@ -1,52 +1,6 @@ -# encoding: utf-8 +require "bundler/gem_tasks" +require "rspec/core/rake_task" -require 'rubygems' -require 'bundler' -begin - Bundler.setup(:default, :development) -rescue Bundler::BundlerError => e - $stderr.puts e.message - $stderr.puts "Run `bundle install` to install missing gems" - exit e.status_code -end -require 'rake' +RSpec::Core::RakeTask.new(:spec) -require 'jeweler' -Jeweler::Tasks.new do |gem| - # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options - gem.name = "quaderno" - gem.homepage = "http://github.com/quaderno/quaderno-ruby" - gem.license = "MIT" - gem.summary = %Q{one-line summary of your gem} - gem.description = %Q{ A ruby wrapper for Quaderno API } - gem.email = "carlos@recrea.es" - gem.authors = ["Recrea"] - # dependencies defined in Gemfile -end -Jeweler::RubygemsDotOrgTasks.new - -require 'rake/testtask' -Rake::TestTask.new(:test) do |test| - test.libs << 'lib' << 'test' - test.pattern = 'test/**/test_*.rb' - test.verbose = true -end - -desc "Code coverage detail" -task :simplecov do - ENV['COVERAGE'] = "true" - Rake::Task['test'].execute -end - - -task :default => :test - -require 'rdoc/task' -Rake::RDocTask.new do |rdoc| - version = File.exist?('VERSION') ? File.read('VERSION') : "" - - rdoc.rdoc_dir = 'rdoc' - rdoc.title = "quaderno-ruby #{version}" - rdoc.rdoc_files.include('README*') - rdoc.rdoc_files.include('lib/**/*.rb') -end +task :default => :spec diff --git a/VERSION b/VERSION deleted file mode 100644 index cd99d38..0000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.14.0 \ No newline at end of file diff --git a/lib/quaderno-ruby.rb b/lib/quaderno-ruby.rb index a4ce2fb..087e56c 100644 --- a/lib/quaderno-ruby.rb +++ b/lib/quaderno-ruby.rb @@ -7,6 +7,5 @@ %w(block crud deliver payment retrieve).each { |filename| require "quaderno-ruby/behavior/#{filename}" } %w(base contact item invoice receipt credit income estimate expense recurring document_item report evidence payment webhook tax).each { |filename| require "quaderno-ruby/#{ filename }" } -module Quaderno - +class Quaderno end \ No newline at end of file diff --git a/lib/quaderno-ruby/base.rb b/lib/quaderno-ruby/base.rb index c670c0f..9a7a63e 100644 --- a/lib/quaderno-ruby/base.rb +++ b/lib/quaderno-ruby/base.rb @@ -1,136 +1,134 @@ -module Quaderno - require 'httparty' - require 'json' - - class Base < OpenStruct - include HTTParty - include Quaderno::Exceptions - include Quaderno::Behavior::Crud - include Quaderno::Helpers::Authentication - - PRODUCTION_URL = 'https://quadernoapp.com/api/' - SANDBOX_URL = 'http://sandbox-quadernoapp.com/api/' - - @@auth_token = nil - @@rate_limit_info = nil - @@api_version = nil - @@url = PRODUCTION_URL - - # Class methods - def self.api_model(klass) - instance_eval <<-END - def api_model - #{klass} - end - END - class_eval <<-END - def api_model - #{klass} - end - END - end - - def self.configure - yield self - end - - def self.api_version=(api_version) - @@api_version = api_version - end - - def self.auth_token=(auth_token) - @@auth_token = auth_token - end - - def self.url=(url) - @@url = url - end +require 'httparty' +require 'json' + +class Quaderno::Base < OpenStruct + include HTTParty + include Quaderno::Exceptions + include Quaderno::Behavior::Crud + include Quaderno::Helpers::Authentication + + PRODUCTION_URL = 'https://quadernoapp.com/api/' + SANDBOX_URL = 'http://sandbox-quadernoapp.com/api/' + + @@auth_token = nil + @@rate_limit_info = nil + @@api_version = nil + @@url = PRODUCTION_URL + + # Class methods + def self.api_model(klass) + instance_eval <<-END + def api_model + #{klass} + end + END + class_eval <<-END + def api_model + #{klass} + end + END + end - def self.authorization(auth_token, mode = nil) - mode ||= :production - url = mode == :sandbox ? SANDBOX_URL : PRODUCTION_URL - response = get("#{url}authorization.json", basic_auth: { username: auth_token }, headers: version_header) + def self.configure + yield self + end - if response.code == 200 - response.parsed_response - else - raise(Quaderno::Exceptions::InvalidSubdomainOrToken, 'Invalid subdomain or token') - end - end + def self.api_version=(api_version) + @@api_version = api_version + end - #Check the connection - def self.ping(options = {}) - begin - options[:auth_token] ||= auth_token - options[:api_url] ||= url + def self.auth_token=(auth_token) + @@auth_token = auth_token + end - authentication = get_authentication(options) + def self.url=(url) + @@url = url + end - party_response = get("#{authentication[:url]}ping.json", - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) + def self.authorization(auth_token, mode = nil) + mode ||= :production + url = mode == :sandbox ? SANDBOX_URL : PRODUCTION_URL + response = get("#{url}authorization.json", basic_auth: { username: auth_token }, headers: version_header) - check_exception_for(party_response, { subdomain_or_token: true }) - rescue Errno::ECONNREFUSED - return false - end - true + if response.code == 200 + response.parsed_response + else + raise(Quaderno::Exceptions::InvalidSubdomainOrToken, 'Invalid subdomain or token') end + end - def self.me(options = {}) + #Check the connection + def self.ping(options = {}) + begin options[:auth_token] ||= auth_token options[:api_url] ||= url authentication = get_authentication(options) - party_response = get("#{authentication[:url]}me.json", + party_response = get("#{authentication[:url]}ping.json", basic_auth: authentication[:basic_auth], headers: version_header.merge(authentication[:headers]) ) check_exception_for(party_response, { subdomain_or_token: true }) - - party_response.parsed_response + rescue Errno::ECONNREFUSED + return false end + true + end - #Returns the rate limit information: limit and remaining requests - def self.rate_limit_info - party_response = get("#{@@url}ping.json", basic_auth: { username: auth_token }, headers: version_header) - check_exception_for(party_response, { subdomain_or_token: true }) - @@rate_limit_info = { reset: party_response.headers['x-ratelimit-reset'].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i } - end + def self.me(options = {}) + options[:auth_token] ||= auth_token + options[:api_url] ||= url - # Instance methods - def to_hash - self.marshal_dump - end + authentication = get_authentication(options) - private - # Class methods - def self.auth_token - @@auth_token - end + party_response = get("#{authentication[:url]}me.json", + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) - def self.url - @@url - end + check_exception_for(party_response, { subdomain_or_token: true }) - def self.subdomain - @_subdomain = @@subdomain - end + party_response.parsed_response + end - #Set or returns the model path for the url - def self.api_path(api_path = nil) - @_api_path ||= api_path - end + #Returns the rate limit information: limit and remaining requests + def self.rate_limit_info + party_response = get("#{@@url}ping.json", basic_auth: { username: auth_token }, headers: version_header) + check_exception_for(party_response, { subdomain_or_token: true }) + @@rate_limit_info = { reset: party_response.headers['x-ratelimit-reset'].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i } + end - def self.is_a_document?(document = nil) - @_document ||= document - end + # Instance methods + def to_hash + self.marshal_dump + end - def self.version_header - { 'Accept' => @@api_version.to_i.zero? ? "application/json" : "application/json; api_version=#{@@api_version.to_i}"} - end + private + # Class methods + def self.auth_token + @@auth_token + end + + def self.url + @@url + end + + def self.subdomain + @_subdomain = @@subdomain + end + + #Set or returns the model path for the url + def self.api_path(api_path = nil) + @_api_path ||= api_path + end + + def self.is_a_document?(document = nil) + @_document ||= document + end + + def self.version_header + { 'Accept' => @@api_version.to_i.zero? ? "application/json" : "application/json; api_version=#{@@api_version.to_i}"} end -end \ No newline at end of file +end diff --git a/lib/quaderno-ruby/behavior/block.rb b/lib/quaderno-ruby/behavior/block.rb index c3a6a16..f3ed685 100644 --- a/lib/quaderno-ruby/behavior/block.rb +++ b/lib/quaderno-ruby/behavior/block.rb @@ -1,28 +1,26 @@ -module Quaderno - module Behavior - module Block - def self.included(receiver) - receiver.send :extend, ClassMethods - end +module Quaderno::Behavior + module Block + def self.included(receiver) + receiver.send :extend, ClassMethods + end - module ClassMethods - include Quaderno::Helpers::Authentication + module ClassMethods + include Quaderno::Helpers::Authentication - def block(id, options = {}) - authentication = get_authentication(options.merge(api_model: api_model)) + def block(id, options = {}) + authentication = get_authentication(options.merge(api_model: api_model)) - response = put("#{authentication[:url]}#{api_model.api_path}/#{id}/block.json", - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) + response = put("#{authentication[:url]}#{api_model.api_path}/#{id}/block.json", + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) - check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) - doc = response.parsed_response + check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) + doc = response.parsed_response - new doc - end + new doc end end end -end \ No newline at end of file +end diff --git a/lib/quaderno-ruby/behavior/crud.rb b/lib/quaderno-ruby/behavior/crud.rb index d591f22..b032165 100644 --- a/lib/quaderno-ruby/behavior/crud.rb +++ b/lib/quaderno-ruby/behavior/crud.rb @@ -1,125 +1,123 @@ -module Quaderno - module Behavior - module Crud +module Quaderno::Behavior + module Crud - def self.included(receiver) - receiver.send :extend, ClassMethods - end + def self.included(receiver) + receiver.send :extend, ClassMethods + end - module ClassMethods - include Quaderno::Helpers::Authentication + module ClassMethods + include Quaderno::Helpers::Authentication - def parse_nested(element) - if element.has_key?('payments') - payments_collection = Array.new - (element['payments'] || Array.new).each { |payment| payments_collection << Quaderno::Payment.new(payment) } - element['payments'] = payments_collection - end + def parse_nested(element) + if element.has_key?('payments') + payments_collection = Array.new + (element['payments'] || Array.new).each { |payment| payments_collection << Quaderno::Payment.new(payment) } + element['payments'] = payments_collection + end - items_collection = Array.new - element['items'].each { |item| items_collection << Quaderno::DocumentItem.new(item) } - element['items'] = items_collection - element['contact'] = Quaderno::Contact.new(element['contact']) + items_collection = Array.new + element['items'].each { |item| items_collection << Quaderno::DocumentItem.new(item) } + element['items'] = items_collection + element['contact'] = Quaderno::Contact.new(element['contact']) - element - end + element + end - def all(options = {}) - authentication = get_authentication(options.merge(api_model: api_model)) - filter = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } - - response = get("#{authentication[:url]}#{api_model.api_path}.json", - query: filter, - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) - - check_exception_for(response, { rate_limit: true, subdomain_or_token: true }) - array = response.parsed_response - collection = Quaderno::Collection.new - - if is_a_document? - array.each do |element| - element[:authentication_data] = authentication - api_model.parse_nested(element) - collection << (new element) - end - else - array.each { |element| collection << (new element) } + def all(options = {}) + authentication = get_authentication(options.merge(api_model: api_model)) + filter = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } + + response = get("#{authentication[:url]}#{api_model.api_path}.json", + query: filter, + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) + + check_exception_for(response, { rate_limit: true, subdomain_or_token: true }) + array = response.parsed_response + collection = Quaderno::Collection.new + + if is_a_document? + array.each do |element| + element[:authentication_data] = authentication + api_model.parse_nested(element) + collection << (new element) end + else + array.each { |element| collection << (new element) } + end - collection.current_page = response.headers['x-pages-currentpage'] - collection.total_pages = response.headers['x-pages-totalpages'] + collection.current_page = response.headers['x-pages-currentpage'] + collection.total_pages = response.headers['x-pages-totalpages'] - collection - end + collection + end - def find(id, options = {}) - authentication = get_authentication(options.merge(api_model: api_model)) + def find(id, options = {}) + authentication = get_authentication(options.merge(api_model: api_model)) - response = get("#{authentication[:url]}#{api_model.api_path}/#{id}.json", - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) + response = get("#{authentication[:url]}#{api_model.api_path}/#{id}.json", + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) - check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) - hash = response.parsed_response - hash[:authentication_data] = authentication + check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) + hash = response.parsed_response + hash[:authentication_data] = authentication - api_model.parse_nested(hash) if is_a_document? + api_model.parse_nested(hash) if is_a_document? - new hash - end + new hash + end - def create(params = {}) - authentication = get_authentication(params.merge(api_model: api_model)) - params.delete_if { |k,v| %w(auth_token access_token api_url mode api_model').include? k.to_s } + def create(params = {}) + authentication = get_authentication(params.merge(api_model: api_model)) + params.delete_if { |k,v| %w(auth_token access_token api_url mode api_model').include? k.to_s } - response = post("#{authentication[:url]}#{api_model.api_path}.json", - body: params.to_json, - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]).merge('Content-Type' => 'application/json') - ) + response = post("#{authentication[:url]}#{api_model.api_path}.json", + body: params.to_json, + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]).merge('Content-Type' => 'application/json') + ) - check_exception_for(response, { rate_limit: true, subdomain_or_token: true, required_fields: true }) - hash = response.parsed_response - hash[:authentication_data] = authentication + check_exception_for(response, { rate_limit: true, subdomain_or_token: true, required_fields: true }) + hash = response.parsed_response + hash[:authentication_data] = authentication - api_model.parse_nested(hash) if is_a_document? + api_model.parse_nested(hash) if is_a_document? - new hash - end + new hash + end - def update(id, params = {}) - authentication = get_authentication(params.merge(api_model: api_model)) - params = params.delete_if { |k,v| %w(auth_token access_token api_url mode api_model').include? k.to_s } + def update(id, params = {}) + authentication = get_authentication(params.merge(api_model: api_model)) + params = params.delete_if { |k,v| %w(auth_token access_token api_url mode api_model').include? k.to_s } - response = put("#{authentication[:url]}#{api_model.api_path}/#{id}.json", - body: params.to_json, - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]).merge('Content-Type' => 'application/json') - ) + response = put("#{authentication[:url]}#{api_model.api_path}/#{id}.json", + body: params.to_json, + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]).merge('Content-Type' => 'application/json') + ) - check_exception_for(response, { rate_limit: true, required_fields: true, subdomain_or_token: true, id: true }) - hash = response.parsed_response - hash[:authentication_data] = authentication + check_exception_for(response, { rate_limit: true, required_fields: true, subdomain_or_token: true, id: true }) + hash = response.parsed_response + hash[:authentication_data] = authentication - api_model.parse_nested(hash) if is_a_document? + api_model.parse_nested(hash) if is_a_document? - new hash - end + new hash + end - def delete(id, options = {}) - authentication = get_authentication(options.merge(api_model: api_model)) + def delete(id, options = {}) + authentication = get_authentication(options.merge(api_model: api_model)) - response = HTTParty.delete("#{authentication[:url]}#{ api_model.api_path }/#{ id }.json", - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) - check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true, has_documents: true }) + response = HTTParty.delete("#{authentication[:url]}#{ api_model.api_path }/#{ id }.json", + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) + check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true, has_documents: true }) - true - end + true end end end diff --git a/lib/quaderno-ruby/behavior/deliver.rb b/lib/quaderno-ruby/behavior/deliver.rb index ab7164c..69a6b55 100644 --- a/lib/quaderno-ruby/behavior/deliver.rb +++ b/lib/quaderno-ruby/behavior/deliver.rb @@ -1,26 +1,24 @@ -module Quaderno - module Behavior - module Deliver +module Quaderno::Behavior + module Deliver - def self.included(base) - base.send :include, InstanceMethods - end + def self.included(base) + base.send :include, InstanceMethods + end - module InstanceMethods - include Quaderno::Helpers::Authentication + module InstanceMethods + include Quaderno::Helpers::Authentication - def deliver(options = nil) - self.authentication_data = get_authentication(options.merge(api_model: api_model)) if options.is_a?(Hash) + def deliver(options = nil) + self.authentication_data = get_authentication(options.merge(api_model: api_model)) if options.is_a?(Hash) - party_response = api_model.get("#{authentication_data[:url]}#{api_model.api_path}/#{id}/deliver.json", - basic_auth: authentication_data[:basic_auth], - headers: self.class.version_header.merge(authentication_data[:headers]) - ) + party_response = api_model.get("#{authentication_data[:url]}#{api_model.api_path}/#{id}/deliver.json", + basic_auth: authentication_data[:basic_auth], + headers: self.class.version_header.merge(authentication_data[:headers]) + ) - api_model.check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true, required_fields: true }) - { limit: party_response.headers["x-ratelimit-limit"].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i } - end + api_model.check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true, required_fields: true }) + { limit: party_response.headers["x-ratelimit-limit"].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i } end end end -end \ No newline at end of file +end diff --git a/lib/quaderno-ruby/behavior/payment.rb b/lib/quaderno-ruby/behavior/payment.rb index 6b51012..ba2cffd6 100644 --- a/lib/quaderno-ruby/behavior/payment.rb +++ b/lib/quaderno-ruby/behavior/payment.rb @@ -1,50 +1,48 @@ -module Quaderno - module Behavior - module Payment +module Quaderno::Behavior + module Payment - def self.included(base) - base.send :include, InstanceMethods - end + def self.included(base) + base.send :include, InstanceMethods + end - module InstanceMethods - include Quaderno::Helpers::Authentication + module InstanceMethods + include Quaderno::Helpers::Authentication - def add_payment(params = {}) - if (params.keys.map(&:to_s) & %w(auth_token access_token api_url mode api_model)).any? - self.authentication_data = get_authentication(params.merge(api_model: api_model)) - params = params.delete_if { |k, _| %w(auth_token access_token api_url mode api_model).include? k.to_s } - end + def add_payment(params = {}) + if (params.keys.map(&:to_s) & %w(auth_token access_token api_url mode api_model)).any? + self.authentication_data = get_authentication(params.merge(api_model: api_model)) + params = params.delete_if { |k, _| %w(auth_token access_token api_url mode api_model).include? k.to_s } + end - response = api_model.post("#{authentication_data[:url]}#{api_model.api_path}/#{id}/payments.json", - body: params, - basic_auth: authentication_data[:basic_auth], - headers: self.class.version_header.merge(authentication_data[:headers]) - ) + response = api_model.post("#{authentication_data[:url]}#{api_model.api_path}/#{id}/payments.json", + body: params, + basic_auth: authentication_data[:basic_auth], + headers: self.class.version_header.merge(authentication_data[:headers]) + ) - api_model.check_exception_for(response, { rate_limit: true, subdomain_or_token: true, required_fields: true }) + api_model.check_exception_for(response, { rate_limit: true, subdomain_or_token: true, required_fields: true }) - instance = Quaderno::Payment.new(response.parsed_response) - self.payments << instance + instance = Quaderno::Payment.new(response.parsed_response) + self.payments << instance - Quaderno::Payment.new instance - end + Quaderno::Payment.new instance + end - def remove_payment(payment_id, options = nil) - self.authentication_data = get_authentication(options.merge(api_model: api_model)) if options.is_a?(Hash) + def remove_payment(payment_id, options = nil) + self.authentication_data = get_authentication(options.merge(api_model: api_model)) if options.is_a?(Hash) - response = HTTParty.delete("#{authentication_data[:url]}#{api_model.api_path}/#{id}/payments/#{payment_id}.json", - basic_auth: authentication_data[:basic_auth], - headers: self.class.version_header.merge(authentication_data[:headers]) - ) + response = HTTParty.delete("#{authentication_data[:url]}#{api_model.api_path}/#{id}/payments/#{payment_id}.json", + basic_auth: authentication_data[:basic_auth], + headers: self.class.version_header.merge(authentication_data[:headers]) + ) - api_model.check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) + api_model.check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) - self.payments.delete_if { |payment| payment.id == payment_id } + self.payments.delete_if { |payment| payment.id == payment_id } - true - end + true end end end -end \ No newline at end of file +end diff --git a/lib/quaderno-ruby/behavior/retrieve.rb b/lib/quaderno-ruby/behavior/retrieve.rb index 6766698..8f9bad9 100644 --- a/lib/quaderno-ruby/behavior/retrieve.rb +++ b/lib/quaderno-ruby/behavior/retrieve.rb @@ -1,35 +1,33 @@ -module Quaderno - module Behavior - module Retrieve +module Quaderno::Behavior + module Retrieve - def self.included(receiver) - receiver.send :extend, ClassMethods - end + def self.included(receiver) + receiver.send :extend, ClassMethods + end - module ClassMethods - include Quaderno::Helpers::Authentication + module ClassMethods + include Quaderno::Helpers::Authentication - def retrieve(gateway_id, gateway = 'stripe', options = {}) - authentication = get_authentication(options.merge(api_model: api_model)) + def retrieve(gateway_id, gateway = 'stripe', options = {}) + authentication = get_authentication(options.merge(api_model: api_model)) - response = get("#{authentication[:url]}#{gateway}/#{@_retrieve_path}/#{gateway_id}.json", - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) + response = get("#{authentication[:url]}#{gateway}/#{@_retrieve_path}/#{gateway_id}.json", + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) - check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) - hash = response.parsed_response - hash[:authentication_data] = authentication + check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) + hash = response.parsed_response + hash[:authentication_data] = authentication - new hash - end - alias_method :retrieve_customer, :retrieve + new hash + end + alias_method :retrieve_customer, :retrieve - private - def retrieve_path(path) - @_retrieve_path = path - end + private + def retrieve_path(path) + @_retrieve_path = path end end end -end \ No newline at end of file +end diff --git a/lib/quaderno-ruby/contact.rb b/lib/quaderno-ruby/contact.rb index 26f3189..db26d95 100644 --- a/lib/quaderno-ruby/contact.rb +++ b/lib/quaderno-ruby/contact.rb @@ -1,9 +1,7 @@ -module Quaderno - class Contact < Base - include Quaderno::Behavior::Retrieve +class Quaderno::Contact < Quaderno::Base + include Quaderno::Behavior::Retrieve - api_model Quaderno::Contact - api_path 'contacts' - retrieve_path 'customers' - end -end \ No newline at end of file + api_model Quaderno::Contact + api_path 'contacts' + retrieve_path 'customers' +end diff --git a/lib/quaderno-ruby/credit.rb b/lib/quaderno-ruby/credit.rb index 383ecba..cbb30cb 100644 --- a/lib/quaderno-ruby/credit.rb +++ b/lib/quaderno-ruby/credit.rb @@ -1,13 +1,11 @@ -module Quaderno - class Credit < Base - include Quaderno::Behavior::Deliver - include Quaderno::Behavior::Payment - include Quaderno::Behavior::Retrieve - include Quaderno::Behavior::Block +class Quaderno::Credit < Quaderno::Base + include Quaderno::Behavior::Deliver + include Quaderno::Behavior::Payment + include Quaderno::Behavior::Retrieve + include Quaderno::Behavior::Block - api_model Quaderno::Credit - api_path 'credits' - retrieve_path 'refunds' - is_a_document? true - end -end \ No newline at end of file + api_model Quaderno::Credit + api_path 'credits' + retrieve_path 'refunds' + is_a_document? true +end diff --git a/lib/quaderno-ruby/document_item.rb b/lib/quaderno-ruby/document_item.rb index 27a44ce..d37d7c5 100644 --- a/lib/quaderno-ruby/document_item.rb +++ b/lib/quaderno-ruby/document_item.rb @@ -1,4 +1,2 @@ -module Quaderno - class DocumentItem < OpenStruct - end +class Quaderno::DocumentItem < OpenStruct end diff --git a/lib/quaderno-ruby/estimate.rb b/lib/quaderno-ruby/estimate.rb index 2a315ef..a2c77f7 100644 --- a/lib/quaderno-ruby/estimate.rb +++ b/lib/quaderno-ruby/estimate.rb @@ -1,9 +1,7 @@ -module Quaderno - class Estimate < Base - include Quaderno::Behavior::Deliver +class Quaderno::Estimate < Quaderno::Base + include Quaderno::Behavior::Deliver - api_model Quaderno::Estimate - api_path 'estimates' - is_a_document? true - end + api_model Quaderno::Estimate + api_path 'estimates' + is_a_document? true end \ No newline at end of file diff --git a/lib/quaderno-ruby/evidence.rb b/lib/quaderno-ruby/evidence.rb index e3ac2ff..487c258 100644 --- a/lib/quaderno-ruby/evidence.rb +++ b/lib/quaderno-ruby/evidence.rb @@ -1,10 +1,8 @@ -module Quaderno - class Evidence < Base - api_model Quaderno::Evidence - api_path 'evidences' +class Quaderno::Evidence < Quaderno::Base + api_model Quaderno::Evidence + api_path 'evidences' - class << self - undef :all, :find, :update, :delete, :parse_nested - end + class << self + undef :all, :find, :update, :delete, :parse_nested end end \ No newline at end of file diff --git a/lib/quaderno-ruby/exceptions/exceptions.rb b/lib/quaderno-ruby/exceptions/exceptions.rb index 3addb4d..9b0be40 100644 --- a/lib/quaderno-ruby/exceptions/exceptions.rb +++ b/lib/quaderno-ruby/exceptions/exceptions.rb @@ -1,56 +1,54 @@ -module Quaderno - module Exceptions - class BaseException < StandardError - end +module Quaderno::Exceptions + class BaseException < StandardError + end - class InvalidSubdomainOrToken < BaseException - end + class InvalidSubdomainOrToken < BaseException + end - class InvalidID < BaseException - end + class InvalidID < BaseException + end - class RateLimitExceeded < BaseException - end + class RateLimitExceeded < BaseException + end - class HasAssociatedDocuments < BaseException - end + class HasAssociatedDocuments < BaseException + end - class RequiredFieldsEmptyOrInvalid < BaseException - end + class RequiredFieldsEmptyOrInvalid < BaseException + end - class ThrottleLimitExceeded < BaseException - end + class ThrottleLimitExceeded < BaseException + end - class UnsupportedApiVersion < BaseException - end + class UnsupportedApiVersion < BaseException + end - def self.included(receiver) - receiver.send :extend, ClassMethods - end + def self.included(receiver) + receiver.send :extend, ClassMethods + end - module ClassMethods - def check_exception_for(party_response, params = {}) - raise(Quaderno::Exceptions::UnsupportedApiVersion, 'Unsupported API version') if !!(party_response.body =~ /Unsupported API version/) - - if params[:throttle_limit].nil? == false - raise(Quaderno::Exceptions::ThrottleLimitExceeded, 'Throttle limit exceeded, please try again later') if party_response.response.class == Net::HTTPServiceUnavailable - end - if params[:rate_limit].nil? == false - raise(Quaderno::Exceptions::RateLimitExceeded, 'Rate limit exceeded') if party_response.response.class == Net::HTTPForbidden - end - if params[:subdomain_or_token].nil? == false - raise(Quaderno::Exceptions::InvalidSubdomainOrToken, 'Invalid subdomain or token') if party_response.response.class == Net::HTTPUnauthorized - end - if params[:id].nil? == false - raise(Quaderno::Exceptions::InvalidID, "Invalid #{ api_model } instance identifier") if (party_response.response.class == Net::HTTPInternalServerError) || (party_response.response.class == Net::HTTPNotFound) - end - if params[:required_fields].nil? == false - raise(Quaderno::Exceptions::RequiredFieldsEmptyOrInvalid, party_response.body) if party_response.response.class == Net::HTTPUnprocessableEntity - end - if params[:has_documents].nil? == false - raise(Quaderno::Exceptions::HasAssociatedDocuments, party_response.body) if party_response.response.class == Net::HTTPClientError - end + module ClassMethods + def check_exception_for(party_response, params = {}) + raise(Quaderno::Exceptions::UnsupportedApiVersion, 'Unsupported API version') if !!(party_response.body =~ /Unsupported API version/) + + if params[:throttle_limit].nil? == false + raise(Quaderno::Exceptions::ThrottleLimitExceeded, 'Throttle limit exceeded, please try again later') if party_response.response.class == Net::HTTPServiceUnavailable + end + if params[:rate_limit].nil? == false + raise(Quaderno::Exceptions::RateLimitExceeded, 'Rate limit exceeded') if party_response.response.class == Net::HTTPForbidden + end + if params[:subdomain_or_token].nil? == false + raise(Quaderno::Exceptions::InvalidSubdomainOrToken, 'Invalid subdomain or token') if party_response.response.class == Net::HTTPUnauthorized + end + if params[:id].nil? == false + raise(Quaderno::Exceptions::InvalidID, "Invalid #{ api_model } instance identifier") if (party_response.response.class == Net::HTTPInternalServerError) || (party_response.response.class == Net::HTTPNotFound) + end + if params[:required_fields].nil? == false + raise(Quaderno::Exceptions::RequiredFieldsEmptyOrInvalid, party_response.body) if party_response.response.class == Net::HTTPUnprocessableEntity + end + if params[:has_documents].nil? == false + raise(Quaderno::Exceptions::HasAssociatedDocuments, party_response.body) if party_response.response.class == Net::HTTPClientError end end end -end \ No newline at end of file +end diff --git a/lib/quaderno-ruby/expense.rb b/lib/quaderno-ruby/expense.rb index 223ecca..6bf9941 100644 --- a/lib/quaderno-ruby/expense.rb +++ b/lib/quaderno-ruby/expense.rb @@ -1,10 +1,8 @@ -module Quaderno - class Expense < Base - include Quaderno::Behavior::Payment - include Quaderno::Behavior::Block +class Quaderno::Expense < Quaderno::Base + include Quaderno::Behavior::Payment + include Quaderno::Behavior::Block - api_model Quaderno::Expense - api_path 'expenses' - is_a_document? true - end + api_model Quaderno::Expense + api_path 'expenses' + is_a_document? true end \ No newline at end of file diff --git a/lib/quaderno-ruby/helpers/authentication.rb b/lib/quaderno-ruby/helpers/authentication.rb index 68aa4a9..d776c32 100644 --- a/lib/quaderno-ruby/helpers/authentication.rb +++ b/lib/quaderno-ruby/helpers/authentication.rb @@ -1,26 +1,24 @@ -module Quaderno - module Helpers - module Authentication +module Quaderno::Helpers + module Authentication - def get_authentication(options = {}) - mode = options[:mode] || :production + def get_authentication(options = {}) + mode = options[:mode] || :production - local_api_model = options[:api_model] - url = options[:api_url] || (local_api_model && local_api_model.url) || (mode == :production ? 'https://quadernoapp.com/api/' : 'http://sandbox-quadernoapp.com/api/') + local_api_model = options[:api_model] + url = options[:api_url] || (local_api_model && local_api_model.url) || (mode == :production ? 'https://quadernoapp.com/api/' : 'http://sandbox-quadernoapp.com/api/') - auth_token = options[:auth_token] || options['auth_token'] || (local_api_model && local_api_model.auth_token) - access_token = options[:access_token] || options['access_token'] + auth_token = options[:auth_token] || options['auth_token'] || (local_api_model && local_api_model.auth_token) + access_token = options[:access_token] || options['access_token'] - authentication = { url: url, headers: {}, basic_auth: nil } + authentication = { url: url, headers: {}, basic_auth: nil } - if access_token - authentication[:headers] = { 'Authorization' => "Bearer #{access_token}" } - elsif auth_token - authentication[:basic_auth] = { username: auth_token } - end - - authentication + if access_token + authentication[:headers] = { 'Authorization' => "Bearer #{access_token}" } + elsif auth_token + authentication[:basic_auth] = { username: auth_token } end + + authentication end end -end \ No newline at end of file +end diff --git a/lib/quaderno-ruby/income.rb b/lib/quaderno-ruby/income.rb index 782a4e2..906212a 100644 --- a/lib/quaderno-ruby/income.rb +++ b/lib/quaderno-ruby/income.rb @@ -1,13 +1,11 @@ -module Quaderno - class Income < Base - include Quaderno::Behavior::Block +class Quaderno::Income < Quaderno::Base + include Quaderno::Behavior::Block - class << self - undef :find, :update, :delete - end - - api_model Quaderno::Income - api_path 'income' - is_a_document? true + class << self + undef :find, :update, :delete end + + api_model Quaderno::Income + api_path 'income' + is_a_document? true end \ No newline at end of file diff --git a/lib/quaderno-ruby/invoice.rb b/lib/quaderno-ruby/invoice.rb index 92ea5c2..3b1d360 100644 --- a/lib/quaderno-ruby/invoice.rb +++ b/lib/quaderno-ruby/invoice.rb @@ -1,13 +1,11 @@ -module Quaderno - class Invoice < Base - include Quaderno::Behavior::Deliver - include Quaderno::Behavior::Payment - include Quaderno::Behavior::Retrieve - include Quaderno::Behavior::Block +class Quaderno::Invoice < Quaderno::Base + include Quaderno::Behavior::Deliver + include Quaderno::Behavior::Payment + include Quaderno::Behavior::Retrieve + include Quaderno::Behavior::Block - api_model Quaderno::Invoice - api_path 'invoices' - retrieve_path 'charges' - is_a_document? true - end + api_model Quaderno::Invoice + api_path 'invoices' + retrieve_path 'charges' + is_a_document? true end \ No newline at end of file diff --git a/lib/quaderno-ruby/item.rb b/lib/quaderno-ruby/item.rb index c30a03a..54a31ac 100644 --- a/lib/quaderno-ruby/item.rb +++ b/lib/quaderno-ruby/item.rb @@ -1,7 +1,4 @@ -module Quaderno - class Item < Base - - api_model Quaderno::Item - api_path 'items' - end +class Quaderno::Item < Quaderno::Base + api_model Quaderno::Item + api_path 'items' end \ No newline at end of file diff --git a/lib/quaderno-ruby/payment.rb b/lib/quaderno-ruby/payment.rb index 43066db..02ed67f 100644 --- a/lib/quaderno-ruby/payment.rb +++ b/lib/quaderno-ruby/payment.rb @@ -1,4 +1,2 @@ -module Quaderno - class Payment < OpenStruct - end +class Quaderno::Payment < OpenStruct end \ No newline at end of file diff --git a/lib/quaderno-ruby/receipt.rb b/lib/quaderno-ruby/receipt.rb index 6e66b01..e29e88c 100644 --- a/lib/quaderno-ruby/receipt.rb +++ b/lib/quaderno-ruby/receipt.rb @@ -1,10 +1,8 @@ -module Quaderno - class Receipt < Base - include Quaderno::Behavior::Deliver - include Quaderno::Behavior::Block +class Quaderno::Receipt < Quaderno::Base + include Quaderno::Behavior::Deliver + include Quaderno::Behavior::Block - api_model Quaderno::Receipt - api_path 'receipts' - is_a_document? true - end + api_model Quaderno::Receipt + api_path 'receipts' + is_a_document? true end \ No newline at end of file diff --git a/lib/quaderno-ruby/recurring.rb b/lib/quaderno-ruby/recurring.rb index 499f5aa..134b7ed 100644 --- a/lib/quaderno-ruby/recurring.rb +++ b/lib/quaderno-ruby/recurring.rb @@ -1,8 +1,5 @@ -module Quaderno - class Recurring < Base - - api_model Quaderno::Recurring - api_path 'recurring' - is_a_document? true - end +class Quaderno::Recurring < Quaderno::Base + api_model Quaderno::Recurring + api_path 'recurring' + is_a_document? true end \ No newline at end of file diff --git a/lib/quaderno-ruby/report.rb b/lib/quaderno-ruby/report.rb index 024a2dc..4971000 100644 --- a/lib/quaderno-ruby/report.rb +++ b/lib/quaderno-ruby/report.rb @@ -1,80 +1,78 @@ -module Quaderno - class Report < Base - api_model Quaderno::Report - api_path 'reports' +class Quaderno::Report < Quaderno::Base + api_model Quaderno::Report + api_path 'reports' - class << self - undef :all, :find, :create, :update, :delete, :parse_nested - end + class << self + undef :all, :find, :create, :update, :delete, :parse_nested + end - def self.journal(options = {}) - authentication = get_authentication(options.merge(api_model: api_model)) - filter = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } + def self.journal(options = {}) + authentication = get_authentication(options.merge(api_model: api_model)) + filter = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } - response = get("#{authentication[:url]}#{api_model.api_path}/journal.json", - query: filter, - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) + response = get("#{authentication[:url]}#{api_model.api_path}/journal.json", + query: filter, + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) - check_exception_for(response, { rate_limit: true, subdomain_or_token: true }) + check_exception_for(response, { rate_limit: true, subdomain_or_token: true }) - response.parsed_response - end + response.parsed_response + end - def self.taxes(options = {}) - authentication = get_authentication(options.merge(api_model: api_model)) - filter = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } + def self.taxes(options = {}) + authentication = get_authentication(options.merge(api_model: api_model)) + filter = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } - response = get("#{authentication[:url]}#{api_model.api_path}/taxes.json", - query: filter, - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) + response = get("#{authentication[:url]}#{api_model.api_path}/taxes.json", + query: filter, + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) - check_exception_for(response, { rate_limit: true, subdomain_or_token: true }) + check_exception_for(response, { rate_limit: true, subdomain_or_token: true }) - response.parsed_response - end + response.parsed_response + end - def self.domestic_taxes(options = {}) - request_tax_report('domestic_taxes', options) - end + def self.domestic_taxes(options = {}) + request_tax_report('domestic_taxes', options) + end - def self.sales_taxes(options = {}) - request_tax_report('sales_taxes', options) - end + def self.sales_taxes(options = {}) + request_tax_report('sales_taxes', options) + end - def self.vat_moss(options = {}) - request_tax_report('vat_moss', options) - end + def self.vat_moss(options = {}) + request_tax_report('vat_moss', options) + end - def self.ec_sales(options = {}) - request_tax_report('ec_sales', options) - end + def self.ec_sales(options = {}) + request_tax_report('ec_sales', options) + end - def self.international_taxes(options = {}) - request_tax_report('international_taxes', options) - end + def self.international_taxes(options = {}) + request_tax_report('international_taxes', options) + end - private + private - def self.request_tax_report(tax_report_type, options) - authentication = get_authentication(options.merge(api_model: api_model)) - filter = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } + def self.request_tax_report(tax_report_type, options) + authentication = get_authentication(options.merge(api_model: api_model)) + filter = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } - response = get("#{authentication[:url]}#{api_model.api_path}/#{tax_report_type}.json", - query: filter, - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) + response = get("#{authentication[:url]}#{api_model.api_path}/#{tax_report_type}.json", + query: filter, + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) - check_exception_for(response, { rate_limit: true, subdomain_or_token: true }) + check_exception_for(response, { rate_limit: true, subdomain_or_token: true }) - collection = Array.new - response.parsed_response.each { |tax_report| collection << self.new(tax_report) } + collection = Array.new + response.parsed_response.each { |tax_report| collection << self.new(tax_report) } - collection - end + collection end end \ No newline at end of file diff --git a/lib/quaderno-ruby/tax.rb b/lib/quaderno-ruby/tax.rb index 162eb26..5d5824f 100644 --- a/lib/quaderno-ruby/tax.rb +++ b/lib/quaderno-ruby/tax.rb @@ -1,63 +1,61 @@ -module Quaderno - class TaxReport < OpenStruct - end +class Quaderno::TaxReport < OpenStruct +end - class Tax < Base - api_model Quaderno::Tax - api_path 'taxes' +class Quaderno::Tax < Quaderno::Base + api_model Quaderno::Tax + api_path 'taxes' - class << self - undef :find, :create, :update, :delete, :parse_nested - end + class << self + undef :find, :create, :update, :delete, :parse_nested + end - def self.calculate(options = {}) - authentication = get_authentication(options.merge(api_model: api_model)) - params = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } + def self.calculate(options = {}) + authentication = get_authentication(options.merge(api_model: api_model)) + params = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } - response = get("#{authentication[:url]}taxes/calculate.json", - query: params, - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) + response = get("#{authentication[:url]}taxes/calculate.json", + query: params, + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) - check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) - new response.parsed_response - end + check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) + new response.parsed_response + end - def self.validate_vat_number(country, vat_number, options = {}) - authentication = get_authentication(options.merge(api_model: api_model)) + def self.validate_vat_number(country, vat_number, options = {}) + authentication = get_authentication(options.merge(api_model: api_model)) - response = get("#{authentication[:url]}taxes/validate.json", - query: { country: country, vat_number: vat_number }, - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) + response = get("#{authentication[:url]}taxes/validate.json", + query: { country: country, vat_number: vat_number }, + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) - check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) + check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) - response.parsed_response['valid'] - end + response.parsed_response['valid'] + end - def self.reports(options = {}) - authentication = get_authentication(options.merge(api_model: api_model)) - params = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } + def self.reports(options = {}) + authentication = get_authentication(options.merge(api_model: api_model)) + params = options.delete_if { |k,v| %w(auth_token access_token api_url mode api_model).include? k.to_s } - response = get("#{authentication[:url]}taxes/reports.json", - query: params, - basic_auth: authentication[:basic_auth], - headers: version_header.merge(authentication[:headers]) - ) + response = get("#{authentication[:url]}taxes/reports.json", + query: params, + basic_auth: authentication[:basic_auth], + headers: version_header.merge(authentication[:headers]) + ) - array = response.parsed_response - collection = Quaderno::Collection.new - collection.current_page = response.headers['x-pages-currentpage'] - collection.total_pages = response.headers['x-pages-totalpages'] + array = response.parsed_response + collection = Quaderno::Collection.new + collection.current_page = response.headers['x-pages-currentpage'] + collection.total_pages = response.headers['x-pages-totalpages'] - array.each { |report| collection << Quaderno::TaxReport.new(report) } + array.each { |report| collection << Quaderno::TaxReport.new(report) } - check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) + check_exception_for(response, { rate_limit: true, subdomain_or_token: true, id: true }) - collection - end + collection end -end \ No newline at end of file +end diff --git a/lib/quaderno-ruby/version.rb b/lib/quaderno-ruby/version.rb new file mode 100644 index 0000000..fd8dc22 --- /dev/null +++ b/lib/quaderno-ruby/version.rb @@ -0,0 +1,3 @@ +class Quaderno + VERSION = "1.14.1" +end diff --git a/lib/quaderno-ruby/webhook.rb b/lib/quaderno-ruby/webhook.rb index 8e2911e..2023b9d 100644 --- a/lib/quaderno-ruby/webhook.rb +++ b/lib/quaderno-ruby/webhook.rb @@ -1,6 +1,4 @@ -module Quaderno - class Webhook < Base - api_model Quaderno::Webhook - api_path 'webhooks' - end +class Quaderno::Webhook < Quaderno::Base + api_model Quaderno::Webhook + api_path 'webhooks' end \ No newline at end of file diff --git a/quaderno.gemspec b/quaderno.gemspec index 8d3ecc6..7cb8166 100644 --- a/quaderno.gemspec +++ b/quaderno.gemspec @@ -1,153 +1,33 @@ -# Generated by jeweler -# DO NOT EDIT THIS FILE DIRECTLY -# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec' -# -*- encoding: utf-8 -*- -# stub: quaderno 1.14.0 ruby lib +# coding: utf-8 +lib = File.expand_path('../lib', __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require 'quaderno-ruby/version' -Gem::Specification.new do |s| - s.name = "quaderno" - s.version = "1.14.0" +Gem::Specification.new do |spec| + spec.name = "quaderno" + spec.version = Quaderno::VERSION + spec.authors = ["Recrea"] + spec.email = "carlos@recrea.es" - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.require_paths = ["lib"] - s.authors = ["Recrea"] - s.date = "2017-12-21" - s.description = " A ruby wrapper for Quaderno API " - s.email = "carlos@recrea.es" - s.extra_rdoc_files = [ - "LICENSE.txt", - "README.md" - ] - s.files = [ - ".document", - "Gemfile", - "Gemfile.lock", - "LICENSE.txt", - "README.md", - "Rakefile", - "VERSION", - "changelog.md", - "lib/quaderno-ruby.rb", - "lib/quaderno-ruby/base.rb", - "lib/quaderno-ruby/behavior/block.rb", - "lib/quaderno-ruby/behavior/crud.rb", - "lib/quaderno-ruby/behavior/deliver.rb", - "lib/quaderno-ruby/behavior/payment.rb", - "lib/quaderno-ruby/behavior/retrieve.rb", - "lib/quaderno-ruby/collection.rb", - "lib/quaderno-ruby/contact.rb", - "lib/quaderno-ruby/credit.rb", - "lib/quaderno-ruby/document_item.rb", - "lib/quaderno-ruby/estimate.rb", - "lib/quaderno-ruby/evidence.rb", - "lib/quaderno-ruby/exceptions/exceptions.rb", - "lib/quaderno-ruby/expense.rb", - "lib/quaderno-ruby/helpers/authentication.rb", - "lib/quaderno-ruby/income.rb", - "lib/quaderno-ruby/invoice.rb", - "lib/quaderno-ruby/item.rb", - "lib/quaderno-ruby/payment.rb", - "lib/quaderno-ruby/receipt.rb", - "lib/quaderno-ruby/recurring.rb", - "lib/quaderno-ruby/report.rb", - "lib/quaderno-ruby/tax.rb", - "lib/quaderno-ruby/webhook.rb", - "quaderno.gemspec", - "test/fixtures/quaderno_cassettes/.DS_Store", - "test/fixtures/quaderno_cassettes/all_contacts.yml", - "test/fixtures/quaderno_cassettes/all_contacts_by_access_token.yml", - "test/fixtures/quaderno_cassettes/all_contacts_by_authentication_token.yml", - "test/fixtures/quaderno_cassettes/all_estimates.yml", - "test/fixtures/quaderno_cassettes/all_expenses.yml", - "test/fixtures/quaderno_cassettes/all_invoices.yml", - "test/fixtures/quaderno_cassettes/all_items.yml", - "test/fixtures/quaderno_cassettes/all_receipts.yml", - "test/fixtures/quaderno_cassettes/all_webhooks.yml", - "test/fixtures/quaderno_cassettes/create_estimate_on_downgraded_API.yml", - "test/fixtures/quaderno_cassettes/create_expense_on_downgraded_API.yml", - "test/fixtures/quaderno_cassettes/create_invoice_on_downgraded_API.yml", - "test/fixtures/quaderno_cassettes/create_receipt_on_downgraded_API.yml", - "test/fixtures/quaderno_cassettes/deleted_contact.yml", - "test/fixtures/quaderno_cassettes/deleted_contact_by_access_token.yml", - "test/fixtures/quaderno_cassettes/deleted_contact_by_authentication_token.yml", - "test/fixtures/quaderno_cassettes/deleted_estimate.yml", - "test/fixtures/quaderno_cassettes/deleted_expense.yml", - "test/fixtures/quaderno_cassettes/deleted_invoice.yml", - "test/fixtures/quaderno_cassettes/deleted_item.yml", - "test/fixtures/quaderno_cassettes/deleted_receipt.yml", - "test/fixtures/quaderno_cassettes/deleted_webhook.yml", - "test/fixtures/quaderno_cassettes/delivered_estimate.yml", - "test/fixtures/quaderno_cassettes/delivered_invoice.yml", - "test/fixtures/quaderno_cassettes/delivered_receipt.yml", - "test/fixtures/quaderno_cassettes/evidence_invoice.yml", - "test/fixtures/quaderno_cassettes/found_contact.yml", - "test/fixtures/quaderno_cassettes/found_contact_by_access_token.yml", - "test/fixtures/quaderno_cassettes/found_contact_by_authentication_token.yml", - "test/fixtures/quaderno_cassettes/found_estimate.yml", - "test/fixtures/quaderno_cassettes/found_expense.yml", - "test/fixtures/quaderno_cassettes/found_invoice.yml", - "test/fixtures/quaderno_cassettes/found_item.yml", - "test/fixtures/quaderno_cassettes/found_receipt.yml", - "test/fixtures/quaderno_cassettes/found_webhook.yml", - "test/fixtures/quaderno_cassettes/new_contact.yml", - "test/fixtures/quaderno_cassettes/new_contact_by_access_token.yml", - "test/fixtures/quaderno_cassettes/new_contact_by_authentication_token.yml", - "test/fixtures/quaderno_cassettes/new_estimate.yml", - "test/fixtures/quaderno_cassettes/new_evidence.yml", - "test/fixtures/quaderno_cassettes/new_expense.yml", - "test/fixtures/quaderno_cassettes/new_invoice.yml", - "test/fixtures/quaderno_cassettes/new_item.yml", - "test/fixtures/quaderno_cassettes/new_receipt.yml", - "test/fixtures/quaderno_cassettes/new_webhook.yml", - "test/fixtures/quaderno_cassettes/paid_expense.yml", - "test/fixtures/quaderno_cassettes/paid_invoice.yml", - "test/fixtures/quaderno_cassettes/rate_limit.yml", - "test/fixtures/quaderno_cassettes/unpay_an_expense.yml", - "test/fixtures/quaderno_cassettes/unpay_an_invoice.yml", - "test/fixtures/quaderno_cassettes/updated_contact.yml", - "test/fixtures/quaderno_cassettes/updated_contact_by_access_token.yml", - "test/fixtures/quaderno_cassettes/updated_contact_by_authentication_token.yml", - "test/fixtures/quaderno_cassettes/updated_estimate.yml", - "test/fixtures/quaderno_cassettes/updated_expense.yml", - "test/fixtures/quaderno_cassettes/updated_invoice.yml", - "test/fixtures/quaderno_cassettes/updated_item.yml", - "test/fixtures/quaderno_cassettes/updated_receipt.yml", - "test/fixtures/quaderno_cassettes/updated_webhook.yml", - "test/fixtures/quaderno_cassettes/validate_invalid_VAT_number.yml", - "test/fixtures/quaderno_cassettes/validate_valid_VAT_number.yml", - "test/helper.rb", - "test/unit/test_quaderno_contacts.rb", - "test/unit/test_quaderno_contacts_thread_safe.rb", - "test/unit/test_quaderno_estimates.rb", - "test/unit/test_quaderno_evidences.rb", - "test/unit/test_quaderno_expenses.rb", - "test/unit/test_quaderno_invoices.rb", - "test/unit/test_quaderno_items.rb", - "test/unit/test_quaderno_receipts.rb", - "test/unit/test_quaderno_tax.rb", - "test/unit/test_quaderno_webhooks.rb" - ] - s.homepage = "http://github.com/quaderno/quaderno-ruby" - s.licenses = ["MIT"] - s.rubygems_version = "2.4.8" - s.summary = "one-line summary of your gem" + spec.summary = "Ruby wrapper for the Quaderno API (https://quaderno.io/docs/api)" + spec.description = " A ruby wrapper for Quaderno API " + spec.homepage = "http://github.com/quaderno/quaderno-ruby" + spec.licenses = ["MIT"] - if s.respond_to? :specification_version then - s.specification_version = 4 + spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } + spec.bindir = "exe" + spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } + spec.require_paths = %w(lib) + spec.date = "2017-12-21" + spec.extra_rdoc_files = %w(LICENSE.txt README.md) - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, ["~> 0.13.1"]) - s.add_development_dependency(%q, ["~> 2.0.1"]) - s.add_development_dependency(%q, ["~> 3.12"]) - else - s.add_dependency(%q, ["~> 0.13.1"]) - s.add_dependency(%q, ["~> 2.0.1"]) - s.add_dependency(%q, ["~> 3.12"]) - end - else - s.add_dependency(%q, ["~> 0.13.1"]) - s.add_dependency(%q, ["~> 2.0.1"]) - s.add_dependency(%q, ["~> 3.12"]) - end -end + spec.add_dependency('httparty', "~> 0.13.1") + spec.add_development_dependency('rdoc', "~> 3.12") + spec.add_development_dependency('activesupport', "~> 4.2.0") + spec.add_development_dependency('webmock', "~> 1.22.6") + spec.add_development_dependency('vcr', ">= 0") + spec.add_development_dependency("bundler", "~> 1.11") + spec.add_development_dependency("rake", "~> 10.0") + spec.add_development_dependency("rspec", "~> 3.0") +end diff --git a/spec/fixtures/quaderno_cassettes/all_contacts.yml b/spec/fixtures/quaderno_cassettes/all_contacts.yml new file mode 100644 index 0000000..4706bfc --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/all_contacts.yml @@ -0,0 +1,186 @@ +--- +http_interactions: +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '15' + X-Ratelimit-Remaining: + - '100' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"98e7a84077de79c07b61648700087a54"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 19d69ca1-2f5d-4978-8b55-e131333e2c4e + X-Runtime: + - '0.304710' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY3Mywia2luZCI6ImNvbXBhbnkiLCJj + cmVhdGVkX2F0IjoxNTEwNjY2NTkxLCJmdWxsX25hbWUiOiJEdW5kZWUiLCJj + b250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVl + dF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxs + LCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGws + InBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6 + bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIi + OiI1MTgyNDc1MzU1NjciLCJsYW5ndWFnZSI6IkVTIiwibm90ZXMiOm51bGws + InNlY3VyZV9pZCI6ImU2OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4 + ZjU5MWI5MWMiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1l + OjMwMDAvYmlsbGluZy9lNjlkOTA1YjZkNzk5MGZiZTMyZWQyMWVmZGZiOWFj + OGY1OTFiOTFjIiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAw + L2FwaS9jb250YWN0cy82NzMifSx7ImlkIjo2NzksImtpbmQiOiJwZXJzb24i + LCJjcmVhdGVkX2F0IjoxNTEzNzcxNTQ0LCJmaXJzdF9uYW1lIjoiRWwgQ2lk + IE93bmVhZG9yIiwibGFzdF9uYW1lIjpudWxsLCJmdWxsX25hbWUiOiJFbCBD + aWQgT3duZWFkb3IiLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGlu + ZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVn + aW9uIjpudWxsLCJjb3VudHJ5IjoiRVMiLCJwaG9uZV8xIjpudWxsLCJwaG9u + ZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGws + ImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxs + LCJiYW5rX2FjY291bnQiOm51bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6 + bnVsbCwic2VjdXJlX2lkIjoiYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEz + Y2UxZWQzZmUyNTNhMCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5s + dmgubWU6MzAwMC9iaWxsaW5nL2M1YjMxMjkzMzc2NzQ2MWFlZTA1OTZiMTUx + M2NlMWVkM2ZlMjUzYTAiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1l + OjMwMDAvYXBpL2NvbnRhY3RzLzY3OSJ9LHsiaWQiOjY4MCwia2luZCI6ImNv + bXBhbnkiLCJjcmVhdGVkX2F0IjoxNTEzNzcxNTY0LCJmdWxsX25hbWUiOiJG + cmFuw6dvaXNlIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjpudWxsLCJsYW5ndWFnZSI6IkZSIiwibm90ZXMiOm51 + bGwsInNlY3VyZV9pZCI6IjA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEz + ZTZjMTkwMjMzMTgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZo + Lm1lOjMwMDAvYmlsbGluZy8wN2FhZDMzNWVhNGEyOGZlY2U3OTljOTU5NDAx + M2U2YzE5MDIzMzE4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2FwaS9jb250YWN0cy82ODAifSx7ImlkIjo2NzEsImtpbmQiOiJjb21w + YW55IiwiY3JlYXRlZF9hdCI6MTUxMDY1NDM5NSwiZnVsbF9uYW1lIjoiSmFt + ZXMiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGws + InN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5 + IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEi + Om51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGws + IndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0 + X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJz + ZWN1cmVfaWQiOiJmMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2 + ODY2ODg2IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2JpbGxpbmcvZjI3ODNjYjU3ODYwYzhiZmUzNDM2ODNlZGQ2YzUyZGEy + Njg2Njg4NiIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9h + cGkvY29udGFjdHMvNjcxIn0seyJpZCI6NjcyLCJraW5kIjoiY29tcGFueSIs + ImNyZWF0ZWRfYXQiOjE1MTA2NTQ3MDYsImZ1bGxfbmFtZSI6IkphbWVzIiwi + Y29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJl + ZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVs + bCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiQVUiLCJwaG9uZV8xIjpudWxs + LCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIi + Om51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOm51bGwsInZhdF9udW1i + ZXIiOiIxMjA0MjE2ODc0MyIsImxhbmd1YWdlIjoiRU4iLCJub3RlcyI6bnVs + bCwic2VjdXJlX2lkIjoiMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNj + ZWZmOTNmNTJlMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9iaWxsaW5nLzA2YWI4YzNjYmVlODI4YTgwM2ZjNmQ0YjRlMWZj + Y2VmZjkzZjUyZTMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMw + MDAvYXBpL2NvbnRhY3RzLzY3MiJ9LHsiaWQiOjY3NSwia2luZCI6InBlcnNv + biIsImNyZWF0ZWRfYXQiOjE1MTMwNzYyNTYsImZpcnN0X25hbWUiOiJKYW1l + cyIsImxhc3RfbmFtZSI6IkpveWNlIiwiZnVsbF9uYW1lIjoiSmFtZXMgSm95 + Y2UiLCJzdHJlZXRfbGluZV8xIjoiQ2hlYXBzaWRlIDEwNyIsInN0cmVldF9s + aW5lXzIiOiI5dGggZmxvb3IiLCJwb3N0YWxfY29kZSI6IkVDMlYgNkROIiwi + Y2l0eSI6IkxvbmRvbiIsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkdCIiwi + cGhvbmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFp + bCI6bnVsbCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoi + IiwidmF0X251bWJlciI6IkdCMjIyMTYxNzUxIiwibGFuZ3VhZ2UiOiJFTiIs + Im5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiI5NDYwODVkZTVhNTVhZTUyZGY3 + NWQ3OTM4ZTNlNzdkYmIwZWQ0OTI1IiwicGVybWFsaW5rIjoiaHR0cDovL3F1 + YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvOTQ2MDg1ZGU1YTU1YWU1MmRm + NzVkNzkzOGUzZTc3ZGJiMGVkNDkyNSIsInVybCI6Imh0dHA6Ly9xdWFkZXJu + by5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc1In0seyJpZCI6NjY4LCJr + aW5kIjoiY29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTAwNDk2NzksImZ1bGxf + bmFtZSI6IkppbWJvd3p6IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRf + bGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29k + ZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5Ijoi + R0IiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGws + ImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhf + aWQiOiIiLCJ2YXRfbnVtYmVyIjoiR0I1MzE1MjUxNzciLCJsYW5ndWFnZSI6 + IkVOIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NTQ4NjM2NTY1NzJj + MTYwN2NlNjliMTJjZjcyYjUwMTgxZDczNmEiLCJwZXJtYWxpbmsiOiJodHRw + Oi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDU0ODYzNjU2NTcy + YzE2MDdjZTY5YjEyY2Y3MmI1MDE4MWQ3MzZhIiwidXJsIjoiaHR0cDovL3F1 + YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82NjgifSx7ImlkIjo2 + NzQsImtpbmQiOiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDgyNzI0OSwi + ZnVsbF9uYW1lIjoiTUlndWVsIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJl + ZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxf + Y29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5 + IjoiRVMiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51 + bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0 + YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291bnQiOm51 + bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoi + ZDZkN2ZmN2Q0Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInBl + cm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5n + L2Q2ZDdmZjdkNGM4NjQwOWFhOWQ3YjkwNGQ2OGE0MTlkMGM1N2I4NzYiLCJ1 + cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3Rz + LzY3NCJ9LHsiaWQiOjY3Niwia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQi + OjE1MTMwNzgwODIsImZpcnN0X25hbWUiOiJQYXVsIiwibGFzdF9uYW1lIjoi + SG9nYW4iLCJmdWxsX25hbWUiOiJQYXVsIEhvZ2FuIiwic3RyZWV0X2xpbmVf + MSI6bnVsbCwic3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOiIy + MTE0IiwiY2l0eSI6bnVsbCwicmVnaW9uIjoiTlNXIiwiY291bnRyeSI6IkFV + IiwicGhvbmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJl + bWFpbCI6bnVsbCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lk + IjoiIiwidmF0X251bWJlciI6IjQ5MTY1ODUyMzYyIiwibGFuZ3VhZ2UiOiJF + UyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiI2ZWJiNzAwZWEzNWE5Yjgy + ZDY2YzcwZTM1YmJmZDM0ZmM1ODJmZTY4IiwicGVybWFsaW5rIjoiaHR0cDov + L3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvNmViYjcwMGVhMzVhOWI4 + MmQ2NmM3MGUzNWJiZmQzNGZjNTgyZmU2OCIsInVybCI6Imh0dHA6Ly9xdWFk + ZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc2In1d + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:12 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/all_contacts_by_access_token.yml b/spec/fixtures/quaderno_cassettes/all_contacts_by_access_token.yml new file mode 100644 index 0000000..c672bed --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/all_contacts_by_access_token.yml @@ -0,0 +1,213 @@ +--- +http_interactions: +- request: + method: get + uri: http://quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + Authorization: + - Bearer afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0 + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '15' + X-Ratelimit-Remaining: + - '99' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"b841128b2b1e425ca44a00eaecc1d3e9"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - ebc2d34f-edb6-4606-802f-fe3ef34a1ff8 + X-Runtime: + - '24.752304' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY4MCwia2luZCI6ImNvbXBhbnkiLCJj + cmVhdGVkX2F0IjoxNTEzNzcxNTY0LCJmdWxsX25hbWUiOiJGcmFuw6dvaXNl + IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJz + dHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6 + bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIiLCJwaG9uZV8xIjpu + dWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3 + ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVt + YmVyIjpudWxsLCJsYW5ndWFnZSI6IkZSIiwibm90ZXMiOm51bGwsInNlY3Vy + ZV9pZCI6IjA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZjMTkwMjMz + MTgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YmlsbGluZy8wN2FhZDMzNWVhNGEyOGZlY2U3OTljOTU5NDAxM2U2YzE5MDIz + MzE4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9j + b250YWN0cy82ODAifSx7ImlkIjo2NzEsImtpbmQiOiJjb21wYW55IiwiY3Jl + YXRlZF9hdCI6MTUxMDY1NDM5NSwiZnVsbF9uYW1lIjoiSmFtZXMiLCJjb250 + YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJlciI6 + bnVsbCwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQi + OiJmMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2ODY2ODg2Iiwi + cGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxp + bmcvZjI3ODNjYjU3ODYwYzhiZmUzNDM2ODNlZGQ2YzUyZGEyNjg2Njg4NiIs + InVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFj + dHMvNjcxIn0seyJpZCI6NjcyLCJraW5kIjoiY29tcGFueSIsImNyZWF0ZWRf + YXQiOjE1MTA2NTQ3MDYsImZ1bGxfbmFtZSI6IkphbWVzIiwiY29udGFjdF9u + YW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8y + IjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9u + IjpudWxsLCJjb3VudHJ5IjoiQVUiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8y + IjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRp + c2NvdW50IjpudWxsLCJ0YXhfaWQiOm51bGwsInZhdF9udW1iZXIiOiIxMjA0 + MjE2ODc0MyIsImxhbmd1YWdlIjoiRU4iLCJub3RlcyI6bnVsbCwic2VjdXJl + X2lkIjoiMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNjZWZmOTNmNTJl + MyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9i + aWxsaW5nLzA2YWI4YzNjYmVlODI4YTgwM2ZjNmQ0YjRlMWZjY2VmZjkzZjUy + ZTMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2Nv + bnRhY3RzLzY3MiJ9LHsiaWQiOjY3NSwia2luZCI6InBlcnNvbiIsImNyZWF0 + ZWRfYXQiOjE1MTMwNzYyNTYsImZpcnN0X25hbWUiOiJKYW1lcyIsImxhc3Rf + bmFtZSI6IkpveWNlIiwiZnVsbF9uYW1lIjoiSmFtZXMgSm95Y2UiLCJzdHJl + ZXRfbGluZV8xIjoiQ2hlYXBzaWRlIDEwNyIsInN0cmVldF9saW5lXzIiOiI5 + dGggZmxvb3IiLCJwb3N0YWxfY29kZSI6IkVDMlYgNkROIiwiY2l0eSI6Ikxv + bmRvbiIsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkdCIiwicGhvbmVfMSI6 + bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVsbCwi + d2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0X251 + bWJlciI6IkdCMjIyMTYxNzUxIiwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpu + dWxsLCJzZWN1cmVfaWQiOiI5NDYwODVkZTVhNTVhZTUyZGY3NWQ3OTM4ZTNl + NzdkYmIwZWQ0OTI1IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2JpbGxpbmcvOTQ2MDg1ZGU1YTU1YWU1MmRmNzVkNzkzOGUz + ZTc3ZGJiMGVkNDkyNSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9hcGkvY29udGFjdHMvNjc1In0seyJpZCI6NjY4LCJraW5kIjoiY29t + cGFueSIsImNyZWF0ZWRfYXQiOjE1MTAwNDk2NzksImZ1bGxfbmFtZSI6Ikpp + bWJvd3p6IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpu + dWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwi + Y2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiR0IiLCJwaG9u + ZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpu + dWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2 + YXRfbnVtYmVyIjoiR0I1MzE1MjUxNzciLCJsYW5ndWFnZSI6IkVOIiwibm90 + ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NTQ4NjM2NTY1NzJjMTYwN2NlNjli + MTJjZjcyYjUwMTgxZDczNmEiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDU0ODYzNjU2NTcyYzE2MDdjZTY5 + YjEyY2Y3MmI1MDE4MWQ3MzZhIiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2FwaS9jb250YWN0cy82NjgifSx7ImlkIjo2NzQsImtpbmQi + OiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDgyNzI0OSwiZnVsbF9uYW1l + IjoiTUlndWVsIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRVMiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291bnQiOm51bGwsImxhbmd1 + YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiZDZkN2ZmN2Q0 + Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInBlcm1hbGluayI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nL2Q2ZDdmZjdk + NGM4NjQwOWFhOWQ3YjkwNGQ2OGE0MTlkMGM1N2I4NzYiLCJ1cmwiOiJodHRw + Oi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY3NCJ9LHsi + aWQiOjY3Niwia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMwNzgw + ODIsImZpcnN0X25hbWUiOiJQYXVsIiwibGFzdF9uYW1lIjoiSG9nYW4iLCJm + dWxsX25hbWUiOiJQYXVsIEhvZ2FuIiwic3RyZWV0X2xpbmVfMSI6bnVsbCwi + c3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOiIyMTE0IiwiY2l0 + eSI6bnVsbCwicmVnaW9uIjoiTlNXIiwiY291bnRyeSI6IkFVIiwicGhvbmVf + MSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVs + bCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0 + X251bWJlciI6IjQ5MTY1ODUyMzYyIiwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVz + IjpudWxsLCJzZWN1cmVfaWQiOiI2ZWJiNzAwZWEzNWE5YjgyZDY2YzcwZTM1 + YmJmZDM0ZmM1ODJmZTY4IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2JpbGxpbmcvNmViYjcwMGVhMzVhOWI4MmQ2NmM3MGUz + NWJiZmQzNGZjNTgyZmU2OCIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9hcGkvY29udGFjdHMvNjc2In0seyJpZCI6NjczLCJraW5kIjoi + Y29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTA2NjY1OTEsImZ1bGxfbmFtZSI6 + IlRlc3RfT0NQIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiQVUiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjoiZG9udEBzdG9wLmJlbGlldmluZyIsIndlYiI6bnVsbCwiZGlzY291bnQi + Om51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiI1MTgyNDc1MzU1Njci + LCJsYW5ndWFnZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImU2 + OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4ZjU5MWI5MWMiLCJwZXJt + YWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9l + NjlkOTA1YjZkNzk5MGZiZTMyZWQyMWVmZGZiOWFjOGY1OTFiOTFjIiwidXJs + IjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82 + NzMifSx7ImlkIjo2NzksImtpbmQiOiJwZXJzb24iLCJjcmVhdGVkX2F0Ijox + NTEzNzcxNTQ0LCJmaXJzdF9uYW1lIjoiVGVzdF9PQ1AiLCJsYXN0X25hbWUi + Om51bGwsImZ1bGxfbmFtZSI6IlRlc3RfT0NQIiwic3RyZWV0X2xpbmVfMSI6 + bnVsbCwic3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGws + ImNpdHkiOm51bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkVTIiwicGhv + bmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6 + ImRvbnRAc3RvcC5iZWxpZXZpbmciLCJ3ZWIiOm51bGwsImRpc2NvdW50Ijpu + dWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291 + bnQiOm51bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJl + X2lkIjoiYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEzY2UxZWQzZmUyNTNh + MCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9i + aWxsaW5nL2M1YjMxMjkzMzc2NzQ2MWFlZTA1OTZiMTUxM2NlMWVkM2ZlMjUz + YTAiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2Nv + bnRhY3RzLzY3OSJ9LHsiaWQiOjY4MSwia2luZCI6ImNvbXBhbnkiLCJjcmVh + dGVkX2F0IjoxNTEzODU1MzkzLCJmdWxsX25hbWUiOiJUZXN0X1NreW5ldCIs + ImNvbnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3Ry + ZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51 + bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVs + bCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6Im15X2xpdHRs + ZUBwby5ueSIsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + bnVsbCwidmF0X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVz + IjpudWxsLCJzZWN1cmVfaWQiOiIxMzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNj + ZTNmZmNhMzU5ZjU3NTQxIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2JpbGxpbmcvMTM4YTcyZmFlMzI5MjY5ODM0NGMyY2Rj + Y2UzZmZjYTM1OWY1NzU0MSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9hcGkvY29udGFjdHMvNjgxIn0seyJpZCI6NjgzLCJraW5kIjoi + Y29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTM4NTU5MjMsImZ1bGxfbmFtZSI6 + IlRlc3RfU2t5bmV0IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGlu + ZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6 + bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIi + LCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVt + YWlsIjoibXlfbGl0dGxlQHBvLm55Iiwid2ViIjpudWxsLCJkaXNjb3VudCI6 + bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVtYmVyIjpudWxsLCJsYW5ndWFn + ZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImFjNTA0MWQ5N2E5 + MGQyMzMzMjI3OGM1MTQ4NjIxNWI1YmNhNzg3YzEiLCJwZXJtYWxpbmsiOiJo + dHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9hYzUwNDFkOTdh + OTBkMjMzMzIyNzhjNTE0ODYyMTViNWJjYTc4N2MxIiwidXJsIjoiaHR0cDov + L3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82ODMifV0= + http_version: + recorded_at: Thu, 21 Dec 2017 13:23:01 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/all_contacts_by_authentication_token.yml b/spec/fixtures/quaderno_cassettes/all_contacts_by_authentication_token.yml new file mode 100644 index 0000000..1a522df --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/all_contacts_by_authentication_token.yml @@ -0,0 +1,199 @@ +--- +http_interactions: +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '15' + X-Ratelimit-Remaining: + - '100' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"c76bfed4fe851e73924f7a85140bc1ae"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - a629b761-b08c-40ef-b1f9-fac85c722a5e + X-Runtime: + - '0.299150' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY3OSwia2luZCI6InBlcnNvbiIsImNy + ZWF0ZWRfYXQiOjE1MTM3NzE1NDQsImZpcnN0X25hbWUiOiJFbCBDaWQgT3du + ZWFkb3IiLCJsYXN0X25hbWUiOm51bGwsImZ1bGxfbmFtZSI6IkVsIENpZCBP + d25lYWRvciIsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIi + Om51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24i + Om51bGwsImNvdW50cnkiOiJFUyIsInBob25lXzEiOm51bGwsInBob25lXzIi + Om51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlz + Y291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImJh + bmtfYWNjb3VudCI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxs + LCJzZWN1cmVfaWQiOiJjNWIzMTI5MzM3Njc0NjFhZWUwNTk2YjE1MTNjZTFl + ZDNmZTI1M2EwIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5t + ZTozMDAwL2JpbGxpbmcvYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEzY2Ux + ZWQzZmUyNTNhMCIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9hcGkvY29udGFjdHMvNjc5In0seyJpZCI6NjgwLCJraW5kIjoiY29tcGFu + eSIsImNyZWF0ZWRfYXQiOjE1MTM3NzE1NjQsImZ1bGxfbmFtZSI6IkZyYW7D + p29pc2UiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51 + bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJj + aXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJGUiIsInBob25l + XzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51 + bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZh + dF9udW1iZXIiOm51bGwsImxhbmd1YWdlIjoiRlIiLCJub3RlcyI6bnVsbCwi + c2VjdXJlX2lkIjoiMDdhYWQzMzVlYTRhMjhmZWNlNzk5Yzk1OTQwMTNlNmMx + OTAyMzMxOCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9iaWxsaW5nLzA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZj + MTkwMjMzMTgiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YXBpL2NvbnRhY3RzLzY4MCJ9LHsiaWQiOjY3MSwia2luZCI6ImNvbXBhbnki + LCJjcmVhdGVkX2F0IjoxNTEwNjU0Mzk1LCJmdWxsX25hbWUiOiJKYW1lcyIs + ImNvbnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3Ry + ZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51 + bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkFVIiwicGhvbmVfMSI6bnVs + bCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVsbCwid2Vi + IjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVt + YmVyIjpudWxsLCJsYW5ndWFnZSI6IkVOIiwibm90ZXMiOm51bGwsInNlY3Vy + ZV9pZCI6ImYyNzgzY2I1Nzg2MGM4YmZlMzQzNjgzZWRkNmM1MmRhMjY4NjY4 + ODYiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YmlsbGluZy9mMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2ODY2 + ODg2IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9j + b250YWN0cy82NzEifSx7ImlkIjo2NzIsImtpbmQiOiJjb21wYW55IiwiY3Jl + YXRlZF9hdCI6MTUxMDY1NDcwNiwiZnVsbF9uYW1lIjoiSmFtZXMiLCJjb250 + YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJlciI6 + IjEyMDQyMTY4NzQzIiwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJz + ZWN1cmVfaWQiOiIwNmFiOGMzY2JlZTgyOGE4MDNmYzZkNGI0ZTFmY2NlZmY5 + M2Y1MmUzIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2JpbGxpbmcvMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNjZWZm + OTNmNTJlMyIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9h + cGkvY29udGFjdHMvNjcyIn0seyJpZCI6Njc1LCJraW5kIjoicGVyc29uIiwi + Y3JlYXRlZF9hdCI6MTUxMzA3NjI1NiwiZmlyc3RfbmFtZSI6IkphbWVzIiwi + bGFzdF9uYW1lIjoiSm95Y2UiLCJmdWxsX25hbWUiOiJKYW1lcyBKb3ljZSIs + InN0cmVldF9saW5lXzEiOiJDaGVhcHNpZGUgMTA3Iiwic3RyZWV0X2xpbmVf + MiI6Ijl0aCBmbG9vciIsInBvc3RhbF9jb2RlIjoiRUMyViA2RE4iLCJjaXR5 + IjoiTG9uZG9uIiwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiR0IiLCJwaG9u + ZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpu + dWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2 + YXRfbnVtYmVyIjoiR0IyMjIxNjE3NTEiLCJsYW5ndWFnZSI6IkVOIiwibm90 + ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NjA4NWRlNWE1NWFlNTJkZjc1ZDc5 + MzhlM2U3N2RiYjBlZDQ5MjUiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDYwODVkZTVhNTVhZTUyZGY3NWQ3 + OTM4ZTNlNzdkYmIwZWQ0OTI1IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2FwaS9jb250YWN0cy82NzUifSx7ImlkIjo2NjgsImtpbmQi + OiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDA0OTY3OSwiZnVsbF9uYW1l + IjoiSmltYm93enoiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5l + XzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpu + dWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IiIsInZhdF9udW1iZXIiOiJHQjUzMTUyNTE3NyIsImxhbmd1YWdlIjoiRU4i + LCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiOTQ1NDg2MzY1NjU3MmMxNjA3 + Y2U2OWIxMmNmNzJiNTAxODFkNzM2YSIsInBlcm1hbGluayI6Imh0dHA6Ly9x + dWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nLzk0NTQ4NjM2NTY1NzJjMTYw + N2NlNjliMTJjZjcyYjUwMTgxZDczNmEiLCJ1cmwiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY2OCJ9LHsiaWQiOjY3NCwi + a2luZCI6ImNvbXBhbnkiLCJjcmVhdGVkX2F0IjoxNTEwODI3MjQ5LCJmdWxs + X25hbWUiOiJNSWd1ZWwiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9s + aW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2Rl + IjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJF + UyIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwi + ZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9p + ZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImJhbmtfYWNjb3VudCI6bnVsbCwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiJkNmQ3 + ZmY3ZDRjODY0MDlhYTlkN2I5MDRkNjhhNDE5ZDBjNTdiODc2IiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvZDZk + N2ZmN2Q0Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc0 + In0seyJpZCI6Njc2LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzA3ODA4MiwiZmlyc3RfbmFtZSI6IlBhdWwiLCJsYXN0X25hbWUiOiJIb2dh + biIsImZ1bGxfbmFtZSI6IlBhdWwgSG9nYW4iLCJzdHJlZXRfbGluZV8xIjpu + dWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6IjIxMTQi + LCJjaXR5IjpudWxsLCJyZWdpb24iOiJOU1ciLCJjb3VudHJ5IjoiQVUiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjoiNDkxNjU4NTIzNjIiLCJsYW5ndWFnZSI6IkVTIiwi + bm90ZXMiOm51bGwsInNlY3VyZV9pZCI6IjZlYmI3MDBlYTM1YTliODJkNjZj + NzBlMzViYmZkMzRmYzU4MmZlNjgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVh + ZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy82ZWJiNzAwZWEzNWE5YjgyZDY2 + YzcwZTM1YmJmZDM0ZmM1ODJmZTY4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82NzYifSx7ImlkIjo2NzMsImtp + bmQiOiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDY2NjU5MSwiZnVsbF9u + YW1lIjoiVGVzdF9PQ1AiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9s + aW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2Rl + IjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJB + VSIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwi + ZW1haWwiOiJkb250QHN0b3AuYmVsaWV2aW5nIiwid2ViIjpudWxsLCJkaXNj + b3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0X251bWJlciI6IjUxODI0NzUz + NTU2NyIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lk + IjoiZTY5ZDkwNWI2ZDc5OTBmYmUzMmVkMjFlZmRmYjlhYzhmNTkxYjkxYyIs + InBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxs + aW5nL2U2OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4ZjU5MWI5MWMi + LCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRh + Y3RzLzY3MyJ9LHsiaWQiOjY4MSwia2luZCI6ImNvbXBhbnkiLCJjcmVhdGVk + X2F0IjoxNTEzODU1MzkzLCJmdWxsX25hbWUiOiJUZXN0X1NreW5ldCIsImNv + bnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3RyZWV0 + X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51bGws + InJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVsbCwi + cGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6Im15X2xpdHRsZUBw + by5ueSIsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVs + bCwidmF0X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpu + dWxsLCJzZWN1cmVfaWQiOiIxMzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNjZTNm + ZmNhMzU5ZjU3NTQxIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2JpbGxpbmcvMTM4YTcyZmFlMzI5MjY5ODM0NGMyY2RjY2Uz + ZmZjYTM1OWY1NzU0MSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9hcGkvY29udGFjdHMvNjgxIn1d + http_version: + recorded_at: Thu, 21 Dec 2017 11:32:03 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/deleted_contact.yml b/spec/fixtures/quaderno_cassettes/deleted_contact.yml new file mode 100644 index 0000000..6e31abf --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/deleted_contact.yml @@ -0,0 +1,488 @@ +--- +http_interactions: +- request: + method: post + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: UTF-8 + string: '{"kind":"company","first_name":"Z, Mazinger Z","email":"koji@kabuto.ftw"}' + headers: + Accept: + - application/json + Content-Type: + - application/json + response: + status: + code: 201 + message: Created + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '12' + X-Ratelimit-Remaining: + - '94' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"1c7a1398b32bd62ca685c2266b6c0872"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 60fd0121-5965-4a7a-bcb4-c82057f0eb32 + X-Runtime: + - '0.314616' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":682,"kind":"company","created_at":1513855394,"full_name":"Z, + Mazinger Z","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"koji@kabuto.ftw","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"43e46d5bc89ec97eb20d492351ed1c2c5b22e4a8","permalink":"http://quaderno.lvh.me:3000/billing/43e46d5bc89ec97eb20d492351ed1c2c5b22e4a8","url":"http://quaderno.lvh.me:3000/api/contacts/682"}' + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:14 GMT +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '12' + X-Ratelimit-Remaining: + - '93' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"c37fe9e2d3d0939630d198e8a30bb7ca"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 318d3764-0cbc-4d7f-a862-646ff13f2760 + X-Runtime: + - '0.384387' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY3OSwia2luZCI6InBlcnNvbiIsImNy + ZWF0ZWRfYXQiOjE1MTM3NzE1NDQsImZpcnN0X25hbWUiOiJFbCBDaWQgT3du + ZWFkb3IiLCJsYXN0X25hbWUiOm51bGwsImZ1bGxfbmFtZSI6IkVsIENpZCBP + d25lYWRvciIsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIi + Om51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24i + Om51bGwsImNvdW50cnkiOiJFUyIsInBob25lXzEiOm51bGwsInBob25lXzIi + Om51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlz + Y291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImJh + bmtfYWNjb3VudCI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxs + LCJzZWN1cmVfaWQiOiJjNWIzMTI5MzM3Njc0NjFhZWUwNTk2YjE1MTNjZTFl + ZDNmZTI1M2EwIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5t + ZTozMDAwL2JpbGxpbmcvYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEzY2Ux + ZWQzZmUyNTNhMCIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9hcGkvY29udGFjdHMvNjc5In0seyJpZCI6NjgwLCJraW5kIjoiY29tcGFu + eSIsImNyZWF0ZWRfYXQiOjE1MTM3NzE1NjQsImZ1bGxfbmFtZSI6IkZyYW7D + p29pc2UiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51 + bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJj + aXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJGUiIsInBob25l + XzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51 + bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZh + dF9udW1iZXIiOm51bGwsImxhbmd1YWdlIjoiRlIiLCJub3RlcyI6bnVsbCwi + c2VjdXJlX2lkIjoiMDdhYWQzMzVlYTRhMjhmZWNlNzk5Yzk1OTQwMTNlNmMx + OTAyMzMxOCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9iaWxsaW5nLzA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZj + MTkwMjMzMTgiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YXBpL2NvbnRhY3RzLzY4MCJ9LHsiaWQiOjY3MSwia2luZCI6ImNvbXBhbnki + LCJjcmVhdGVkX2F0IjoxNTEwNjU0Mzk1LCJmdWxsX25hbWUiOiJKYW1lcyIs + ImNvbnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3Ry + ZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51 + bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkFVIiwicGhvbmVfMSI6bnVs + bCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVsbCwid2Vi + IjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVt + YmVyIjpudWxsLCJsYW5ndWFnZSI6IkVOIiwibm90ZXMiOm51bGwsInNlY3Vy + ZV9pZCI6ImYyNzgzY2I1Nzg2MGM4YmZlMzQzNjgzZWRkNmM1MmRhMjY4NjY4 + ODYiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YmlsbGluZy9mMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2ODY2 + ODg2IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9j + b250YWN0cy82NzEifSx7ImlkIjo2NzIsImtpbmQiOiJjb21wYW55IiwiY3Jl + YXRlZF9hdCI6MTUxMDY1NDcwNiwiZnVsbF9uYW1lIjoiSmFtZXMiLCJjb250 + YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJlciI6 + IjEyMDQyMTY4NzQzIiwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJz + ZWN1cmVfaWQiOiIwNmFiOGMzY2JlZTgyOGE4MDNmYzZkNGI0ZTFmY2NlZmY5 + M2Y1MmUzIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2JpbGxpbmcvMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNjZWZm + OTNmNTJlMyIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9h + cGkvY29udGFjdHMvNjcyIn0seyJpZCI6Njc1LCJraW5kIjoicGVyc29uIiwi + Y3JlYXRlZF9hdCI6MTUxMzA3NjI1NiwiZmlyc3RfbmFtZSI6IkphbWVzIiwi + bGFzdF9uYW1lIjoiSm95Y2UiLCJmdWxsX25hbWUiOiJKYW1lcyBKb3ljZSIs + InN0cmVldF9saW5lXzEiOiJDaGVhcHNpZGUgMTA3Iiwic3RyZWV0X2xpbmVf + MiI6Ijl0aCBmbG9vciIsInBvc3RhbF9jb2RlIjoiRUMyViA2RE4iLCJjaXR5 + IjoiTG9uZG9uIiwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiR0IiLCJwaG9u + ZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpu + dWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2 + YXRfbnVtYmVyIjoiR0IyMjIxNjE3NTEiLCJsYW5ndWFnZSI6IkVOIiwibm90 + ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NjA4NWRlNWE1NWFlNTJkZjc1ZDc5 + MzhlM2U3N2RiYjBlZDQ5MjUiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDYwODVkZTVhNTVhZTUyZGY3NWQ3 + OTM4ZTNlNzdkYmIwZWQ0OTI1IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2FwaS9jb250YWN0cy82NzUifSx7ImlkIjo2NjgsImtpbmQi + OiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDA0OTY3OSwiZnVsbF9uYW1l + IjoiSmltYm93enoiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5l + XzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpu + dWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IiIsInZhdF9udW1iZXIiOiJHQjUzMTUyNTE3NyIsImxhbmd1YWdlIjoiRU4i + LCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiOTQ1NDg2MzY1NjU3MmMxNjA3 + Y2U2OWIxMmNmNzJiNTAxODFkNzM2YSIsInBlcm1hbGluayI6Imh0dHA6Ly9x + dWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nLzk0NTQ4NjM2NTY1NzJjMTYw + N2NlNjliMTJjZjcyYjUwMTgxZDczNmEiLCJ1cmwiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY2OCJ9LHsiaWQiOjY3NCwi + a2luZCI6ImNvbXBhbnkiLCJjcmVhdGVkX2F0IjoxNTEwODI3MjQ5LCJmdWxs + X25hbWUiOiJNSWd1ZWwiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9s + aW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2Rl + IjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJF + UyIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwi + ZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9p + ZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImJhbmtfYWNjb3VudCI6bnVsbCwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiJkNmQ3 + ZmY3ZDRjODY0MDlhYTlkN2I5MDRkNjhhNDE5ZDBjNTdiODc2IiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvZDZk + N2ZmN2Q0Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc0 + In0seyJpZCI6Njc2LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzA3ODA4MiwiZmlyc3RfbmFtZSI6IlBhdWwiLCJsYXN0X25hbWUiOiJIb2dh + biIsImZ1bGxfbmFtZSI6IlBhdWwgSG9nYW4iLCJzdHJlZXRfbGluZV8xIjpu + dWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6IjIxMTQi + LCJjaXR5IjpudWxsLCJyZWdpb24iOiJOU1ciLCJjb3VudHJ5IjoiQVUiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjoiNDkxNjU4NTIzNjIiLCJsYW5ndWFnZSI6IkVTIiwi + bm90ZXMiOm51bGwsInNlY3VyZV9pZCI6IjZlYmI3MDBlYTM1YTliODJkNjZj + NzBlMzViYmZkMzRmYzU4MmZlNjgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVh + ZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy82ZWJiNzAwZWEzNWE5YjgyZDY2 + YzcwZTM1YmJmZDM0ZmM1ODJmZTY4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82NzYifSx7ImlkIjo2NzMsImtp + bmQiOiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDY2NjU5MSwiZnVsbF9u + YW1lIjoiVGVzdF9PQ1AiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9s + aW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2Rl + IjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJB + VSIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwi + ZW1haWwiOiJkb250QHN0b3AuYmVsaWV2aW5nIiwid2ViIjpudWxsLCJkaXNj + b3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0X251bWJlciI6IjUxODI0NzUz + NTU2NyIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lk + IjoiZTY5ZDkwNWI2ZDc5OTBmYmUzMmVkMjFlZmRmYjlhYzhmNTkxYjkxYyIs + InBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxs + aW5nL2U2OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4ZjU5MWI5MWMi + LCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRh + Y3RzLzY3MyJ9LHsiaWQiOjY4MSwia2luZCI6ImNvbXBhbnkiLCJjcmVhdGVk + X2F0IjoxNTEzODU1MzkzLCJmdWxsX25hbWUiOiJUZXN0X1NreW5ldCIsImNv + bnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3RyZWV0 + X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51bGws + InJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVsbCwi + cGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6Im15X2xpdHRsZUBw + by5ueSIsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVs + bCwidmF0X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpu + dWxsLCJzZWN1cmVfaWQiOiIxMzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNjZTNm + ZmNhMzU5ZjU3NTQxIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2JpbGxpbmcvMTM4YTcyZmFlMzI5MjY5ODM0NGMyY2RjY2Uz + ZmZjYTM1OWY1NzU0MSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9hcGkvY29udGFjdHMvNjgxIn0seyJpZCI6NjgyLCJraW5kIjoiY29t + cGFueSIsImNyZWF0ZWRfYXQiOjE1MTM4NTUzOTQsImZ1bGxfbmFtZSI6Ilos + IE1hemluZ2VyIFoiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5l + XzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpu + dWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJGUiIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOiJrb2ppQGthYnV0by5mdHciLCJ3ZWIiOm51bGwsImRpc2NvdW50Ijpu + dWxsLCJ0YXhfaWQiOm51bGwsInZhdF9udW1iZXIiOm51bGwsImxhbmd1YWdl + IjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiNDNlNDZkNWJjODll + Yzk3ZWIyMGQ0OTIzNTFlZDFjMmM1YjIyZTRhOCIsInBlcm1hbGluayI6Imh0 + dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nLzQzZTQ2ZDViYzg5 + ZWM5N2ViMjBkNDkyMzUxZWQxYzJjNWIyMmU0YTgiLCJ1cmwiOiJodHRwOi8v + cXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY4MiJ9XQ== + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:15 GMT +- request: + method: delete + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts/682.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 204 + message: No Content + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '12' + X-Ratelimit-Remaining: + - '92' + Cache-Control: + - no-cache + X-Request-Id: + - 2e5af6d9-3209-4524-8184-3638522741e9 + X-Runtime: + - '0.240452' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:15 GMT +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '11' + X-Ratelimit-Remaining: + - '91' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"c76bfed4fe851e73924f7a85140bc1ae"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 15611f19-0d9c-4266-9068-81cd2257204b + X-Runtime: + - '0.302535' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY3OSwia2luZCI6InBlcnNvbiIsImNy + ZWF0ZWRfYXQiOjE1MTM3NzE1NDQsImZpcnN0X25hbWUiOiJFbCBDaWQgT3du + ZWFkb3IiLCJsYXN0X25hbWUiOm51bGwsImZ1bGxfbmFtZSI6IkVsIENpZCBP + d25lYWRvciIsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIi + Om51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24i + Om51bGwsImNvdW50cnkiOiJFUyIsInBob25lXzEiOm51bGwsInBob25lXzIi + Om51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlz + Y291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImJh + bmtfYWNjb3VudCI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxs + LCJzZWN1cmVfaWQiOiJjNWIzMTI5MzM3Njc0NjFhZWUwNTk2YjE1MTNjZTFl + ZDNmZTI1M2EwIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5t + ZTozMDAwL2JpbGxpbmcvYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEzY2Ux + ZWQzZmUyNTNhMCIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9hcGkvY29udGFjdHMvNjc5In0seyJpZCI6NjgwLCJraW5kIjoiY29tcGFu + eSIsImNyZWF0ZWRfYXQiOjE1MTM3NzE1NjQsImZ1bGxfbmFtZSI6IkZyYW7D + p29pc2UiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51 + bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJj + aXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJGUiIsInBob25l + XzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51 + bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZh + dF9udW1iZXIiOm51bGwsImxhbmd1YWdlIjoiRlIiLCJub3RlcyI6bnVsbCwi + c2VjdXJlX2lkIjoiMDdhYWQzMzVlYTRhMjhmZWNlNzk5Yzk1OTQwMTNlNmMx + OTAyMzMxOCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9iaWxsaW5nLzA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZj + MTkwMjMzMTgiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YXBpL2NvbnRhY3RzLzY4MCJ9LHsiaWQiOjY3MSwia2luZCI6ImNvbXBhbnki + LCJjcmVhdGVkX2F0IjoxNTEwNjU0Mzk1LCJmdWxsX25hbWUiOiJKYW1lcyIs + ImNvbnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3Ry + ZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51 + bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkFVIiwicGhvbmVfMSI6bnVs + bCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVsbCwid2Vi + IjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVt + YmVyIjpudWxsLCJsYW5ndWFnZSI6IkVOIiwibm90ZXMiOm51bGwsInNlY3Vy + ZV9pZCI6ImYyNzgzY2I1Nzg2MGM4YmZlMzQzNjgzZWRkNmM1MmRhMjY4NjY4 + ODYiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YmlsbGluZy9mMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2ODY2 + ODg2IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9j + b250YWN0cy82NzEifSx7ImlkIjo2NzIsImtpbmQiOiJjb21wYW55IiwiY3Jl + YXRlZF9hdCI6MTUxMDY1NDcwNiwiZnVsbF9uYW1lIjoiSmFtZXMiLCJjb250 + YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJlciI6 + IjEyMDQyMTY4NzQzIiwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJz + ZWN1cmVfaWQiOiIwNmFiOGMzY2JlZTgyOGE4MDNmYzZkNGI0ZTFmY2NlZmY5 + M2Y1MmUzIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2JpbGxpbmcvMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNjZWZm + OTNmNTJlMyIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9h + cGkvY29udGFjdHMvNjcyIn0seyJpZCI6Njc1LCJraW5kIjoicGVyc29uIiwi + Y3JlYXRlZF9hdCI6MTUxMzA3NjI1NiwiZmlyc3RfbmFtZSI6IkphbWVzIiwi + bGFzdF9uYW1lIjoiSm95Y2UiLCJmdWxsX25hbWUiOiJKYW1lcyBKb3ljZSIs + InN0cmVldF9saW5lXzEiOiJDaGVhcHNpZGUgMTA3Iiwic3RyZWV0X2xpbmVf + MiI6Ijl0aCBmbG9vciIsInBvc3RhbF9jb2RlIjoiRUMyViA2RE4iLCJjaXR5 + IjoiTG9uZG9uIiwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiR0IiLCJwaG9u + ZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpu + dWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2 + YXRfbnVtYmVyIjoiR0IyMjIxNjE3NTEiLCJsYW5ndWFnZSI6IkVOIiwibm90 + ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NjA4NWRlNWE1NWFlNTJkZjc1ZDc5 + MzhlM2U3N2RiYjBlZDQ5MjUiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDYwODVkZTVhNTVhZTUyZGY3NWQ3 + OTM4ZTNlNzdkYmIwZWQ0OTI1IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2FwaS9jb250YWN0cy82NzUifSx7ImlkIjo2NjgsImtpbmQi + OiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDA0OTY3OSwiZnVsbF9uYW1l + IjoiSmltYm93enoiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5l + XzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpu + dWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IiIsInZhdF9udW1iZXIiOiJHQjUzMTUyNTE3NyIsImxhbmd1YWdlIjoiRU4i + LCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiOTQ1NDg2MzY1NjU3MmMxNjA3 + Y2U2OWIxMmNmNzJiNTAxODFkNzM2YSIsInBlcm1hbGluayI6Imh0dHA6Ly9x + dWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nLzk0NTQ4NjM2NTY1NzJjMTYw + N2NlNjliMTJjZjcyYjUwMTgxZDczNmEiLCJ1cmwiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY2OCJ9LHsiaWQiOjY3NCwi + a2luZCI6ImNvbXBhbnkiLCJjcmVhdGVkX2F0IjoxNTEwODI3MjQ5LCJmdWxs + X25hbWUiOiJNSWd1ZWwiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9s + aW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2Rl + IjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJF + UyIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwi + ZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9p + ZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImJhbmtfYWNjb3VudCI6bnVsbCwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiJkNmQ3 + ZmY3ZDRjODY0MDlhYTlkN2I5MDRkNjhhNDE5ZDBjNTdiODc2IiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvZDZk + N2ZmN2Q0Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc0 + In0seyJpZCI6Njc2LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzA3ODA4MiwiZmlyc3RfbmFtZSI6IlBhdWwiLCJsYXN0X25hbWUiOiJIb2dh + biIsImZ1bGxfbmFtZSI6IlBhdWwgSG9nYW4iLCJzdHJlZXRfbGluZV8xIjpu + dWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6IjIxMTQi + LCJjaXR5IjpudWxsLCJyZWdpb24iOiJOU1ciLCJjb3VudHJ5IjoiQVUiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjoiNDkxNjU4NTIzNjIiLCJsYW5ndWFnZSI6IkVTIiwi + bm90ZXMiOm51bGwsInNlY3VyZV9pZCI6IjZlYmI3MDBlYTM1YTliODJkNjZj + NzBlMzViYmZkMzRmYzU4MmZlNjgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVh + ZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy82ZWJiNzAwZWEzNWE5YjgyZDY2 + YzcwZTM1YmJmZDM0ZmM1ODJmZTY4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82NzYifSx7ImlkIjo2NzMsImtp + bmQiOiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDY2NjU5MSwiZnVsbF9u + YW1lIjoiVGVzdF9PQ1AiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9s + aW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2Rl + IjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJB + VSIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwi + ZW1haWwiOiJkb250QHN0b3AuYmVsaWV2aW5nIiwid2ViIjpudWxsLCJkaXNj + b3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0X251bWJlciI6IjUxODI0NzUz + NTU2NyIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lk + IjoiZTY5ZDkwNWI2ZDc5OTBmYmUzMmVkMjFlZmRmYjlhYzhmNTkxYjkxYyIs + InBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxs + aW5nL2U2OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4ZjU5MWI5MWMi + LCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRh + Y3RzLzY3MyJ9LHsiaWQiOjY4MSwia2luZCI6ImNvbXBhbnkiLCJjcmVhdGVk + X2F0IjoxNTEzODU1MzkzLCJmdWxsX25hbWUiOiJUZXN0X1NreW5ldCIsImNv + bnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3RyZWV0 + X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51bGws + InJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVsbCwi + cGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6Im15X2xpdHRsZUBw + by5ueSIsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVs + bCwidmF0X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpu + dWxsLCJzZWN1cmVfaWQiOiIxMzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNjZTNm + ZmNhMzU5ZjU3NTQxIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2JpbGxpbmcvMTM4YTcyZmFlMzI5MjY5ODM0NGMyY2RjY2Uz + ZmZjYTM1OWY1NzU0MSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9hcGkvY29udGFjdHMvNjgxIn1d + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:15 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/deleted_contact_by_access_token.yml b/spec/fixtures/quaderno_cassettes/deleted_contact_by_access_token.yml new file mode 100644 index 0000000..3204381 --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/deleted_contact_by_access_token.yml @@ -0,0 +1,195 @@ +--- +http_interactions: +- request: + method: post + uri: http://quaderno.lvh.me:3000/api/contacts.json + body: + encoding: UTF-8 + string: '{"kind":"company","first_name":"Z, Mazinger Z","email":"koji@kabuto.ftw"}' + headers: + Accept: + - application/json + Authorization: + - Bearer afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0 + Content-Type: + - application/json + response: + status: + code: 201 + message: Created + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '10' + X-Ratelimit-Remaining: + - '95' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"ad5c7f8f7874b15e8ae2c84b30cef43c"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 3c88ae5b-7349-4842-8feb-78826080039d + X-Runtime: + - '1.286040' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":686,"kind":"company","created_at":1513863391,"full_name":"Z, + Mazinger Z","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"koji@kabuto.ftw","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"8df7ee0294af9939e708c6fa0cc754968e919a50","permalink":"http://quaderno.lvh.me:3000/billing/8df7ee0294af9939e708c6fa0cc754968e919a50","url":"http://quaderno.lvh.me:3000/api/contacts/686"}' + http_version: + recorded_at: Thu, 21 Dec 2017 13:36:32 GMT +- request: + method: get + uri: http://quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + Authorization: + - Bearer afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0 + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '9' + X-Ratelimit-Remaining: + - '94' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"987300b02b084aa8d8855ebb09b209f1"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 7a453c6f-5a98-4206-9f0e-ddf1528f099f + X-Runtime: + - '1.197503' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '[{"id":677,"kind":"person","created_at":1513078278,"first_name":"asdasd","last_name":"sdasd","full_name":"asdasd + sdasd","street_line_1":null,"street_line_2":null,"postal_code":"2206","city":null,"region":"NSW","country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"50 + 120 276 431","vat_number":"91134998020","language":"ES","notes":null,"secure_id":"0079dd8fc11e93cb76afa36ff5d8e108c2732682","permalink":"http://quaderno.lvh.me:3000/billing/0079dd8fc11e93cb76afa36ff5d8e108c2732682","url":"http://quaderno.lvh.me:3000/api/contacts/677"},{"id":678,"kind":"person","created_at":1513594244,"first_name":"Daphne","last_name":null,"full_name":"Daphne","street_line_1":"9TH + FLOOR 107 CHEAPSIDE LONDON EC2V 6DN","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"GB","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":"GB222161751","language":"ES","notes":null,"secure_id":"7b8e6c1e4b8b793152312d7be65a64efc584ca33","permalink":"http://quaderno.lvh.me:3000/billing/7b8e6c1e4b8b793152312d7be65a64efc584ca33","url":"http://quaderno.lvh.me:3000/api/contacts/678"},{"id":671,"kind":"company","created_at":1510654395,"full_name":"James","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"EN","notes":null,"secure_id":"f2783cb57860c8bfe343683edd6c52da26866886","permalink":"http://quaderno.lvh.me:3000/billing/f2783cb57860c8bfe343683edd6c52da26866886","url":"http://quaderno.lvh.me:3000/api/contacts/671"},{"id":672,"kind":"company","created_at":1510654706,"full_name":"James","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"vat_number":"12042168743","language":"EN","notes":null,"secure_id":"06ab8c3cbee828a803fc6d4b4e1fcceff93f52e3","permalink":"http://quaderno.lvh.me:3000/billing/06ab8c3cbee828a803fc6d4b4e1fcceff93f52e3","url":"http://quaderno.lvh.me:3000/api/contacts/672"},{"id":675,"kind":"person","created_at":1513076256,"first_name":"James","last_name":"Joyce","full_name":"James + Joyce","street_line_1":"Cheapside 107","street_line_2":"9th floor","postal_code":"EC2V + 6DN","city":"London","region":null,"country":"GB","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":"GB222161751","language":"EN","notes":null,"secure_id":"946085de5a55ae52df75d7938e3e77dbb0ed4925","permalink":"http://quaderno.lvh.me:3000/billing/946085de5a55ae52df75d7938e3e77dbb0ed4925","url":"http://quaderno.lvh.me:3000/api/contacts/675"},{"id":668,"kind":"company","created_at":1510049679,"full_name":"Jimbowzz","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"GB","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":"GB531525177","language":"EN","notes":null,"secure_id":"9454863656572c1607ce69b12cf72b50181d736a","permalink":"http://quaderno.lvh.me:3000/billing/9454863656572c1607ce69b12cf72b50181d736a","url":"http://quaderno.lvh.me:3000/api/contacts/668"},{"id":674,"kind":"company","created_at":1510827249,"full_name":"MIguel","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":null,"bank_account":null,"language":"ES","notes":null,"secure_id":"d6d7ff7d4c86409aa9d7b904d68a419d0c57b876","permalink":"http://quaderno.lvh.me:3000/billing/d6d7ff7d4c86409aa9d7b904d68a419d0c57b876","url":"http://quaderno.lvh.me:3000/api/contacts/674"},{"id":676,"kind":"person","created_at":1513078082,"first_name":"Paul","last_name":"Hogan","full_name":"Paul + Hogan","street_line_1":null,"street_line_2":null,"postal_code":"2114","city":null,"region":"NSW","country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":"49165852362","language":"ES","notes":null,"secure_id":"6ebb700ea35a9b82d66c70e35bbfd34fc582fe68","permalink":"http://quaderno.lvh.me:3000/billing/6ebb700ea35a9b82d66c70e35bbfd34fc582fe68","url":"http://quaderno.lvh.me:3000/api/contacts/676"},{"id":673,"kind":"company","created_at":1510666591,"full_name":"Test_OCP","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":"dont@stop.believing","web":null,"discount":null,"tax_id":"","vat_number":"518247535567","language":"ES","notes":null,"secure_id":"e69d905b6d7990fbe32ed21efdfb9ac8f591b91c","permalink":"http://quaderno.lvh.me:3000/billing/e69d905b6d7990fbe32ed21efdfb9ac8f591b91c","url":"http://quaderno.lvh.me:3000/api/contacts/673"},{"id":679,"kind":"person","created_at":1513771544,"first_name":"Test_OCP","last_name":null,"full_name":"Test_OCP","street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"dont@stop.believing","web":null,"discount":null,"tax_id":"","vat_number":null,"bank_account":null,"language":"ES","notes":null,"secure_id":"c5b312933767461aee0596b1513ce1ed3fe253a0","permalink":"http://quaderno.lvh.me:3000/billing/c5b312933767461aee0596b1513ce1ed3fe253a0","url":"http://quaderno.lvh.me:3000/api/contacts/679"},{"id":680,"kind":"company","created_at":1513771564,"full_name":"Test_OCP","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"dont@stop.believing","web":null,"discount":null,"tax_id":"","vat_number":null,"language":"FR","notes":null,"secure_id":"07aad335ea4a28fece799c9594013e6c19023318","permalink":"http://quaderno.lvh.me:3000/billing/07aad335ea4a28fece799c9594013e6c19023318","url":"http://quaderno.lvh.me:3000/api/contacts/680"},{"id":681,"kind":"company","created_at":1513855393,"full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"138a72fae3292698344c2cdcce3ffca359f57541","permalink":"http://quaderno.lvh.me:3000/billing/138a72fae3292698344c2cdcce3ffca359f57541","url":"http://quaderno.lvh.me:3000/api/contacts/681"},{"id":683,"kind":"company","created_at":1513855923,"full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"ac5041d97a90d23332278c51486215b5bca787c1","permalink":"http://quaderno.lvh.me:3000/billing/ac5041d97a90d23332278c51486215b5bca787c1","url":"http://quaderno.lvh.me:3000/api/contacts/683"},{"id":685,"kind":"company","created_at":1513863388,"full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"d2dad2da07440e6dcd2dd64b914df54ba50d8b2e","permalink":"http://quaderno.lvh.me:3000/billing/d2dad2da07440e6dcd2dd64b914df54ba50d8b2e","url":"http://quaderno.lvh.me:3000/api/contacts/685"},{"id":686,"kind":"company","created_at":1513863391,"full_name":"Z, + Mazinger Z","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"koji@kabuto.ftw","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"8df7ee0294af9939e708c6fa0cc754968e919a50","permalink":"http://quaderno.lvh.me:3000/billing/8df7ee0294af9939e708c6fa0cc754968e919a50","url":"http://quaderno.lvh.me:3000/api/contacts/686"}]' + http_version: + recorded_at: Thu, 21 Dec 2017 13:36:33 GMT +- request: + method: delete + uri: http://quaderno.lvh.me:3000/api/contacts/686.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + Authorization: + - Bearer afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0 + response: + status: + code: 204 + message: No Content + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '7' + X-Ratelimit-Remaining: + - '93' + Cache-Control: + - no-cache + X-Request-Id: + - c748bbfc-3a7f-47d3-9454-79f50e7d7748 + X-Runtime: + - '0.868076' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Thu, 21 Dec 2017 13:36:34 GMT +- request: + method: get + uri: http://quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + Authorization: + - Bearer afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0 + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '6' + X-Ratelimit-Remaining: + - '92' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"487d984a09c5c3fb113e09bf2ad28126"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 3f93e553-4b9c-42a6-a61b-fba5e939cd1f + X-Runtime: + - '1.171177' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '[{"id":677,"kind":"person","created_at":1513078278,"first_name":"asdasd","last_name":"sdasd","full_name":"asdasd + sdasd","street_line_1":null,"street_line_2":null,"postal_code":"2206","city":null,"region":"NSW","country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"50 + 120 276 431","vat_number":"91134998020","language":"ES","notes":null,"secure_id":"0079dd8fc11e93cb76afa36ff5d8e108c2732682","permalink":"http://quaderno.lvh.me:3000/billing/0079dd8fc11e93cb76afa36ff5d8e108c2732682","url":"http://quaderno.lvh.me:3000/api/contacts/677"},{"id":678,"kind":"person","created_at":1513594244,"first_name":"Daphne","last_name":null,"full_name":"Daphne","street_line_1":"9TH + FLOOR 107 CHEAPSIDE LONDON EC2V 6DN","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"GB","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":"GB222161751","language":"ES","notes":null,"secure_id":"7b8e6c1e4b8b793152312d7be65a64efc584ca33","permalink":"http://quaderno.lvh.me:3000/billing/7b8e6c1e4b8b793152312d7be65a64efc584ca33","url":"http://quaderno.lvh.me:3000/api/contacts/678"},{"id":671,"kind":"company","created_at":1510654395,"full_name":"James","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"EN","notes":null,"secure_id":"f2783cb57860c8bfe343683edd6c52da26866886","permalink":"http://quaderno.lvh.me:3000/billing/f2783cb57860c8bfe343683edd6c52da26866886","url":"http://quaderno.lvh.me:3000/api/contacts/671"},{"id":672,"kind":"company","created_at":1510654706,"full_name":"James","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"vat_number":"12042168743","language":"EN","notes":null,"secure_id":"06ab8c3cbee828a803fc6d4b4e1fcceff93f52e3","permalink":"http://quaderno.lvh.me:3000/billing/06ab8c3cbee828a803fc6d4b4e1fcceff93f52e3","url":"http://quaderno.lvh.me:3000/api/contacts/672"},{"id":675,"kind":"person","created_at":1513076256,"first_name":"James","last_name":"Joyce","full_name":"James + Joyce","street_line_1":"Cheapside 107","street_line_2":"9th floor","postal_code":"EC2V + 6DN","city":"London","region":null,"country":"GB","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":"GB222161751","language":"EN","notes":null,"secure_id":"946085de5a55ae52df75d7938e3e77dbb0ed4925","permalink":"http://quaderno.lvh.me:3000/billing/946085de5a55ae52df75d7938e3e77dbb0ed4925","url":"http://quaderno.lvh.me:3000/api/contacts/675"},{"id":668,"kind":"company","created_at":1510049679,"full_name":"Jimbowzz","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"GB","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":"GB531525177","language":"EN","notes":null,"secure_id":"9454863656572c1607ce69b12cf72b50181d736a","permalink":"http://quaderno.lvh.me:3000/billing/9454863656572c1607ce69b12cf72b50181d736a","url":"http://quaderno.lvh.me:3000/api/contacts/668"},{"id":674,"kind":"company","created_at":1510827249,"full_name":"MIguel","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":null,"bank_account":null,"language":"ES","notes":null,"secure_id":"d6d7ff7d4c86409aa9d7b904d68a419d0c57b876","permalink":"http://quaderno.lvh.me:3000/billing/d6d7ff7d4c86409aa9d7b904d68a419d0c57b876","url":"http://quaderno.lvh.me:3000/api/contacts/674"},{"id":676,"kind":"person","created_at":1513078082,"first_name":"Paul","last_name":"Hogan","full_name":"Paul + Hogan","street_line_1":null,"street_line_2":null,"postal_code":"2114","city":null,"region":"NSW","country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":"49165852362","language":"ES","notes":null,"secure_id":"6ebb700ea35a9b82d66c70e35bbfd34fc582fe68","permalink":"http://quaderno.lvh.me:3000/billing/6ebb700ea35a9b82d66c70e35bbfd34fc582fe68","url":"http://quaderno.lvh.me:3000/api/contacts/676"},{"id":673,"kind":"company","created_at":1510666591,"full_name":"Test_OCP","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":"dont@stop.believing","web":null,"discount":null,"tax_id":"","vat_number":"518247535567","language":"ES","notes":null,"secure_id":"e69d905b6d7990fbe32ed21efdfb9ac8f591b91c","permalink":"http://quaderno.lvh.me:3000/billing/e69d905b6d7990fbe32ed21efdfb9ac8f591b91c","url":"http://quaderno.lvh.me:3000/api/contacts/673"},{"id":679,"kind":"person","created_at":1513771544,"first_name":"Test_OCP","last_name":null,"full_name":"Test_OCP","street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"dont@stop.believing","web":null,"discount":null,"tax_id":"","vat_number":null,"bank_account":null,"language":"ES","notes":null,"secure_id":"c5b312933767461aee0596b1513ce1ed3fe253a0","permalink":"http://quaderno.lvh.me:3000/billing/c5b312933767461aee0596b1513ce1ed3fe253a0","url":"http://quaderno.lvh.me:3000/api/contacts/679"},{"id":680,"kind":"company","created_at":1513771564,"full_name":"Test_OCP","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"dont@stop.believing","web":null,"discount":null,"tax_id":"","vat_number":null,"language":"FR","notes":null,"secure_id":"07aad335ea4a28fece799c9594013e6c19023318","permalink":"http://quaderno.lvh.me:3000/billing/07aad335ea4a28fece799c9594013e6c19023318","url":"http://quaderno.lvh.me:3000/api/contacts/680"},{"id":681,"kind":"company","created_at":1513855393,"full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"138a72fae3292698344c2cdcce3ffca359f57541","permalink":"http://quaderno.lvh.me:3000/billing/138a72fae3292698344c2cdcce3ffca359f57541","url":"http://quaderno.lvh.me:3000/api/contacts/681"},{"id":683,"kind":"company","created_at":1513855923,"full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"ac5041d97a90d23332278c51486215b5bca787c1","permalink":"http://quaderno.lvh.me:3000/billing/ac5041d97a90d23332278c51486215b5bca787c1","url":"http://quaderno.lvh.me:3000/api/contacts/683"},{"id":685,"kind":"company","created_at":1513863388,"full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"d2dad2da07440e6dcd2dd64b914df54ba50d8b2e","permalink":"http://quaderno.lvh.me:3000/billing/d2dad2da07440e6dcd2dd64b914df54ba50d8b2e","url":"http://quaderno.lvh.me:3000/api/contacts/685"}]' + http_version: + recorded_at: Thu, 21 Dec 2017 13:36:35 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/deleted_contact_by_authentication_token.yml b/spec/fixtures/quaderno_cassettes/deleted_contact_by_authentication_token.yml new file mode 100644 index 0000000..3c3be77 --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/deleted_contact_by_authentication_token.yml @@ -0,0 +1,513 @@ +--- +http_interactions: +- request: + method: post + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: UTF-8 + string: '{"kind":"company","first_name":"Z, Mazinger Z","email":"koji@kabuto.ftw"}' + headers: + Accept: + - application/json + Content-Type: + - application/json + response: + status: + code: 201 + message: Created + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '13' + X-Ratelimit-Remaining: + - '94' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"9c5f2d09fee30320dc038552f3dfad7b"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - ff35fbc9-63e7-4b82-8515-1507e6b8bda4 + X-Runtime: + - '0.331856' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":684,"kind":"company","created_at":1513855924,"full_name":"Z, + Mazinger Z","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"koji@kabuto.ftw","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"15c24f1b991afd1f7351900deb4fdeb48722286e","permalink":"http://quaderno.lvh.me:3000/billing/15c24f1b991afd1f7351900deb4fdeb48722286e","url":"http://quaderno.lvh.me:3000/api/contacts/684"}' + http_version: + recorded_at: Thu, 21 Dec 2017 11:32:05 GMT +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '13' + X-Ratelimit-Remaining: + - '93' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"af58c3beec15eac27804bb0a8c0bc54a"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 4a948a3b-2885-4aa2-9260-1300e67f64f8 + X-Runtime: + - '0.380663' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY4MCwia2luZCI6ImNvbXBhbnkiLCJj + cmVhdGVkX2F0IjoxNTEzNzcxNTY0LCJmdWxsX25hbWUiOiJGcmFuw6dvaXNl + IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJz + dHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6 + bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIiLCJwaG9uZV8xIjpu + dWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3 + ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVt + YmVyIjpudWxsLCJsYW5ndWFnZSI6IkZSIiwibm90ZXMiOm51bGwsInNlY3Vy + ZV9pZCI6IjA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZjMTkwMjMz + MTgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YmlsbGluZy8wN2FhZDMzNWVhNGEyOGZlY2U3OTljOTU5NDAxM2U2YzE5MDIz + MzE4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9j + b250YWN0cy82ODAifSx7ImlkIjo2NzEsImtpbmQiOiJjb21wYW55IiwiY3Jl + YXRlZF9hdCI6MTUxMDY1NDM5NSwiZnVsbF9uYW1lIjoiSmFtZXMiLCJjb250 + YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJlciI6 + bnVsbCwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQi + OiJmMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2ODY2ODg2Iiwi + cGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxp + bmcvZjI3ODNjYjU3ODYwYzhiZmUzNDM2ODNlZGQ2YzUyZGEyNjg2Njg4NiIs + InVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFj + dHMvNjcxIn0seyJpZCI6NjcyLCJraW5kIjoiY29tcGFueSIsImNyZWF0ZWRf + YXQiOjE1MTA2NTQ3MDYsImZ1bGxfbmFtZSI6IkphbWVzIiwiY29udGFjdF9u + YW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8y + IjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9u + IjpudWxsLCJjb3VudHJ5IjoiQVUiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8y + IjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRp + c2NvdW50IjpudWxsLCJ0YXhfaWQiOm51bGwsInZhdF9udW1iZXIiOiIxMjA0 + MjE2ODc0MyIsImxhbmd1YWdlIjoiRU4iLCJub3RlcyI6bnVsbCwic2VjdXJl + X2lkIjoiMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNjZWZmOTNmNTJl + MyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9i + aWxsaW5nLzA2YWI4YzNjYmVlODI4YTgwM2ZjNmQ0YjRlMWZjY2VmZjkzZjUy + ZTMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2Nv + bnRhY3RzLzY3MiJ9LHsiaWQiOjY3NSwia2luZCI6InBlcnNvbiIsImNyZWF0 + ZWRfYXQiOjE1MTMwNzYyNTYsImZpcnN0X25hbWUiOiJKYW1lcyIsImxhc3Rf + bmFtZSI6IkpveWNlIiwiZnVsbF9uYW1lIjoiSmFtZXMgSm95Y2UiLCJzdHJl + ZXRfbGluZV8xIjoiQ2hlYXBzaWRlIDEwNyIsInN0cmVldF9saW5lXzIiOiI5 + dGggZmxvb3IiLCJwb3N0YWxfY29kZSI6IkVDMlYgNkROIiwiY2l0eSI6Ikxv + bmRvbiIsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkdCIiwicGhvbmVfMSI6 + bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVsbCwi + d2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0X251 + bWJlciI6IkdCMjIyMTYxNzUxIiwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpu + dWxsLCJzZWN1cmVfaWQiOiI5NDYwODVkZTVhNTVhZTUyZGY3NWQ3OTM4ZTNl + NzdkYmIwZWQ0OTI1IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2JpbGxpbmcvOTQ2MDg1ZGU1YTU1YWU1MmRmNzVkNzkzOGUz + ZTc3ZGJiMGVkNDkyNSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9hcGkvY29udGFjdHMvNjc1In0seyJpZCI6NjY4LCJraW5kIjoiY29t + cGFueSIsImNyZWF0ZWRfYXQiOjE1MTAwNDk2NzksImZ1bGxfbmFtZSI6Ikpp + bWJvd3p6IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpu + dWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwi + Y2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiR0IiLCJwaG9u + ZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpu + dWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2 + YXRfbnVtYmVyIjoiR0I1MzE1MjUxNzciLCJsYW5ndWFnZSI6IkVOIiwibm90 + ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NTQ4NjM2NTY1NzJjMTYwN2NlNjli + MTJjZjcyYjUwMTgxZDczNmEiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDU0ODYzNjU2NTcyYzE2MDdjZTY5 + YjEyY2Y3MmI1MDE4MWQ3MzZhIiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2FwaS9jb250YWN0cy82NjgifSx7ImlkIjo2NzQsImtpbmQi + OiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDgyNzI0OSwiZnVsbF9uYW1l + IjoiTUlndWVsIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRVMiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291bnQiOm51bGwsImxhbmd1 + YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiZDZkN2ZmN2Q0 + Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInBlcm1hbGluayI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nL2Q2ZDdmZjdk + NGM4NjQwOWFhOWQ3YjkwNGQ2OGE0MTlkMGM1N2I4NzYiLCJ1cmwiOiJodHRw + Oi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY3NCJ9LHsi + aWQiOjY3Niwia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMwNzgw + ODIsImZpcnN0X25hbWUiOiJQYXVsIiwibGFzdF9uYW1lIjoiSG9nYW4iLCJm + dWxsX25hbWUiOiJQYXVsIEhvZ2FuIiwic3RyZWV0X2xpbmVfMSI6bnVsbCwi + c3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOiIyMTE0IiwiY2l0 + eSI6bnVsbCwicmVnaW9uIjoiTlNXIiwiY291bnRyeSI6IkFVIiwicGhvbmVf + MSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVs + bCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0 + X251bWJlciI6IjQ5MTY1ODUyMzYyIiwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVz + IjpudWxsLCJzZWN1cmVfaWQiOiI2ZWJiNzAwZWEzNWE5YjgyZDY2YzcwZTM1 + YmJmZDM0ZmM1ODJmZTY4IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2JpbGxpbmcvNmViYjcwMGVhMzVhOWI4MmQ2NmM3MGUz + NWJiZmQzNGZjNTgyZmU2OCIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9hcGkvY29udGFjdHMvNjc2In0seyJpZCI6NjczLCJraW5kIjoi + Y29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTA2NjY1OTEsImZ1bGxfbmFtZSI6 + IlRlc3RfT0NQIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiQVUiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjoiZG9udEBzdG9wLmJlbGlldmluZyIsIndlYiI6bnVsbCwiZGlzY291bnQi + Om51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiI1MTgyNDc1MzU1Njci + LCJsYW5ndWFnZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImU2 + OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4ZjU5MWI5MWMiLCJwZXJt + YWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9l + NjlkOTA1YjZkNzk5MGZiZTMyZWQyMWVmZGZiOWFjOGY1OTFiOTFjIiwidXJs + IjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82 + NzMifSx7ImlkIjo2NzksImtpbmQiOiJwZXJzb24iLCJjcmVhdGVkX2F0Ijox + NTEzNzcxNTQ0LCJmaXJzdF9uYW1lIjoiVGVzdF9PQ1AiLCJsYXN0X25hbWUi + Om51bGwsImZ1bGxfbmFtZSI6IlRlc3RfT0NQIiwic3RyZWV0X2xpbmVfMSI6 + bnVsbCwic3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGws + ImNpdHkiOm51bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkVTIiwicGhv + bmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6 + ImRvbnRAc3RvcC5iZWxpZXZpbmciLCJ3ZWIiOm51bGwsImRpc2NvdW50Ijpu + dWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291 + bnQiOm51bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJl + X2lkIjoiYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEzY2UxZWQzZmUyNTNh + MCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9i + aWxsaW5nL2M1YjMxMjkzMzc2NzQ2MWFlZTA1OTZiMTUxM2NlMWVkM2ZlMjUz + YTAiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2Nv + bnRhY3RzLzY3OSJ9LHsiaWQiOjY4MSwia2luZCI6ImNvbXBhbnkiLCJjcmVh + dGVkX2F0IjoxNTEzODU1MzkzLCJmdWxsX25hbWUiOiJUZXN0X1NreW5ldCIs + ImNvbnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3Ry + ZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51 + bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVs + bCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6Im15X2xpdHRs + ZUBwby5ueSIsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + bnVsbCwidmF0X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVz + IjpudWxsLCJzZWN1cmVfaWQiOiIxMzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNj + ZTNmZmNhMzU5ZjU3NTQxIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2JpbGxpbmcvMTM4YTcyZmFlMzI5MjY5ODM0NGMyY2Rj + Y2UzZmZjYTM1OWY1NzU0MSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9hcGkvY29udGFjdHMvNjgxIn0seyJpZCI6NjgzLCJraW5kIjoi + Y29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTM4NTU5MjMsImZ1bGxfbmFtZSI6 + IlRlc3RfU2t5bmV0IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGlu + ZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6 + bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIi + LCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVt + YWlsIjoibXlfbGl0dGxlQHBvLm55Iiwid2ViIjpudWxsLCJkaXNjb3VudCI6 + bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVtYmVyIjpudWxsLCJsYW5ndWFn + ZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImFjNTA0MWQ5N2E5 + MGQyMzMzMjI3OGM1MTQ4NjIxNWI1YmNhNzg3YzEiLCJwZXJtYWxpbmsiOiJo + dHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9hYzUwNDFkOTdh + OTBkMjMzMzIyNzhjNTE0ODYyMTViNWJjYTc4N2MxIiwidXJsIjoiaHR0cDov + L3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82ODMifSx7Imlk + Ijo2ODQsImtpbmQiOiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMzg1NTky + NCwiZnVsbF9uYW1lIjoiWiwgTWF6aW5nZXIgWiIsImNvbnRhY3RfbmFtZSI6 + bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3RyZWV0X2xpbmVfMiI6bnVs + bCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51bGwsInJlZ2lvbiI6bnVs + bCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVsbCwicGhvbmVfMiI6bnVs + bCwiZmF4IjpudWxsLCJlbWFpbCI6ImtvamlAa2FidXRvLmZ0dyIsIndlYiI6 + bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJl + ciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVf + aWQiOiIxNWMyNGYxYjk5MWFmZDFmNzM1MTkwMGRlYjRmZGViNDg3MjIyODZl + IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2Jp + bGxpbmcvMTVjMjRmMWI5OTFhZmQxZjczNTE5MDBkZWI0ZmRlYjQ4NzIyMjg2 + ZSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29u + dGFjdHMvNjg0In1d + http_version: + recorded_at: Thu, 21 Dec 2017 11:32:05 GMT +- request: + method: delete + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts/684.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 204 + message: No Content + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '12' + X-Ratelimit-Remaining: + - '92' + Cache-Control: + - no-cache + X-Request-Id: + - a2c39dd2-8509-4819-83dd-dda5255b46c1 + X-Runtime: + - '0.226569' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Thu, 21 Dec 2017 11:32:05 GMT +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '12' + X-Ratelimit-Remaining: + - '91' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"b841128b2b1e425ca44a00eaecc1d3e9"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 777f4bbb-d564-4a7f-ac2a-329b715b2c20 + X-Runtime: + - '0.293708' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY4MCwia2luZCI6ImNvbXBhbnkiLCJj + cmVhdGVkX2F0IjoxNTEzNzcxNTY0LCJmdWxsX25hbWUiOiJGcmFuw6dvaXNl + IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJz + dHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6 + bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIiLCJwaG9uZV8xIjpu + dWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3 + ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVt + YmVyIjpudWxsLCJsYW5ndWFnZSI6IkZSIiwibm90ZXMiOm51bGwsInNlY3Vy + ZV9pZCI6IjA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZjMTkwMjMz + MTgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YmlsbGluZy8wN2FhZDMzNWVhNGEyOGZlY2U3OTljOTU5NDAxM2U2YzE5MDIz + MzE4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9j + b250YWN0cy82ODAifSx7ImlkIjo2NzEsImtpbmQiOiJjb21wYW55IiwiY3Jl + YXRlZF9hdCI6MTUxMDY1NDM5NSwiZnVsbF9uYW1lIjoiSmFtZXMiLCJjb250 + YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJlciI6 + bnVsbCwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQi + OiJmMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2ODY2ODg2Iiwi + cGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxp + bmcvZjI3ODNjYjU3ODYwYzhiZmUzNDM2ODNlZGQ2YzUyZGEyNjg2Njg4NiIs + InVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFj + dHMvNjcxIn0seyJpZCI6NjcyLCJraW5kIjoiY29tcGFueSIsImNyZWF0ZWRf + YXQiOjE1MTA2NTQ3MDYsImZ1bGxfbmFtZSI6IkphbWVzIiwiY29udGFjdF9u + YW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8y + IjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9u + IjpudWxsLCJjb3VudHJ5IjoiQVUiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8y + IjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRp + c2NvdW50IjpudWxsLCJ0YXhfaWQiOm51bGwsInZhdF9udW1iZXIiOiIxMjA0 + MjE2ODc0MyIsImxhbmd1YWdlIjoiRU4iLCJub3RlcyI6bnVsbCwic2VjdXJl + X2lkIjoiMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNjZWZmOTNmNTJl + MyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9i + aWxsaW5nLzA2YWI4YzNjYmVlODI4YTgwM2ZjNmQ0YjRlMWZjY2VmZjkzZjUy + ZTMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2Nv + bnRhY3RzLzY3MiJ9LHsiaWQiOjY3NSwia2luZCI6InBlcnNvbiIsImNyZWF0 + ZWRfYXQiOjE1MTMwNzYyNTYsImZpcnN0X25hbWUiOiJKYW1lcyIsImxhc3Rf + bmFtZSI6IkpveWNlIiwiZnVsbF9uYW1lIjoiSmFtZXMgSm95Y2UiLCJzdHJl + ZXRfbGluZV8xIjoiQ2hlYXBzaWRlIDEwNyIsInN0cmVldF9saW5lXzIiOiI5 + dGggZmxvb3IiLCJwb3N0YWxfY29kZSI6IkVDMlYgNkROIiwiY2l0eSI6Ikxv + bmRvbiIsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkdCIiwicGhvbmVfMSI6 + bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVsbCwi + d2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0X251 + bWJlciI6IkdCMjIyMTYxNzUxIiwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpu + dWxsLCJzZWN1cmVfaWQiOiI5NDYwODVkZTVhNTVhZTUyZGY3NWQ3OTM4ZTNl + NzdkYmIwZWQ0OTI1IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2JpbGxpbmcvOTQ2MDg1ZGU1YTU1YWU1MmRmNzVkNzkzOGUz + ZTc3ZGJiMGVkNDkyNSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9hcGkvY29udGFjdHMvNjc1In0seyJpZCI6NjY4LCJraW5kIjoiY29t + cGFueSIsImNyZWF0ZWRfYXQiOjE1MTAwNDk2NzksImZ1bGxfbmFtZSI6Ikpp + bWJvd3p6IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpu + dWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwi + Y2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiR0IiLCJwaG9u + ZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpu + dWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2 + YXRfbnVtYmVyIjoiR0I1MzE1MjUxNzciLCJsYW5ndWFnZSI6IkVOIiwibm90 + ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NTQ4NjM2NTY1NzJjMTYwN2NlNjli + MTJjZjcyYjUwMTgxZDczNmEiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDU0ODYzNjU2NTcyYzE2MDdjZTY5 + YjEyY2Y3MmI1MDE4MWQ3MzZhIiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2FwaS9jb250YWN0cy82NjgifSx7ImlkIjo2NzQsImtpbmQi + OiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDgyNzI0OSwiZnVsbF9uYW1l + IjoiTUlndWVsIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRVMiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291bnQiOm51bGwsImxhbmd1 + YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiZDZkN2ZmN2Q0 + Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInBlcm1hbGluayI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nL2Q2ZDdmZjdk + NGM4NjQwOWFhOWQ3YjkwNGQ2OGE0MTlkMGM1N2I4NzYiLCJ1cmwiOiJodHRw + Oi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY3NCJ9LHsi + aWQiOjY3Niwia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMwNzgw + ODIsImZpcnN0X25hbWUiOiJQYXVsIiwibGFzdF9uYW1lIjoiSG9nYW4iLCJm + dWxsX25hbWUiOiJQYXVsIEhvZ2FuIiwic3RyZWV0X2xpbmVfMSI6bnVsbCwi + c3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOiIyMTE0IiwiY2l0 + eSI6bnVsbCwicmVnaW9uIjoiTlNXIiwiY291bnRyeSI6IkFVIiwicGhvbmVf + MSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVs + bCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0 + X251bWJlciI6IjQ5MTY1ODUyMzYyIiwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVz + IjpudWxsLCJzZWN1cmVfaWQiOiI2ZWJiNzAwZWEzNWE5YjgyZDY2YzcwZTM1 + YmJmZDM0ZmM1ODJmZTY4IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2JpbGxpbmcvNmViYjcwMGVhMzVhOWI4MmQ2NmM3MGUz + NWJiZmQzNGZjNTgyZmU2OCIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9hcGkvY29udGFjdHMvNjc2In0seyJpZCI6NjczLCJraW5kIjoi + Y29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTA2NjY1OTEsImZ1bGxfbmFtZSI6 + IlRlc3RfT0NQIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiQVUiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjoiZG9udEBzdG9wLmJlbGlldmluZyIsIndlYiI6bnVsbCwiZGlzY291bnQi + Om51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiI1MTgyNDc1MzU1Njci + LCJsYW5ndWFnZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImU2 + OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4ZjU5MWI5MWMiLCJwZXJt + YWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9l + NjlkOTA1YjZkNzk5MGZiZTMyZWQyMWVmZGZiOWFjOGY1OTFiOTFjIiwidXJs + IjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82 + NzMifSx7ImlkIjo2NzksImtpbmQiOiJwZXJzb24iLCJjcmVhdGVkX2F0Ijox + NTEzNzcxNTQ0LCJmaXJzdF9uYW1lIjoiVGVzdF9PQ1AiLCJsYXN0X25hbWUi + Om51bGwsImZ1bGxfbmFtZSI6IlRlc3RfT0NQIiwic3RyZWV0X2xpbmVfMSI6 + bnVsbCwic3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGws + ImNpdHkiOm51bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkVTIiwicGhv + bmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6 + ImRvbnRAc3RvcC5iZWxpZXZpbmciLCJ3ZWIiOm51bGwsImRpc2NvdW50Ijpu + dWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291 + bnQiOm51bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJl + X2lkIjoiYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEzY2UxZWQzZmUyNTNh + MCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9i + aWxsaW5nL2M1YjMxMjkzMzc2NzQ2MWFlZTA1OTZiMTUxM2NlMWVkM2ZlMjUz + YTAiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2Nv + bnRhY3RzLzY3OSJ9LHsiaWQiOjY4MSwia2luZCI6ImNvbXBhbnkiLCJjcmVh + dGVkX2F0IjoxNTEzODU1MzkzLCJmdWxsX25hbWUiOiJUZXN0X1NreW5ldCIs + ImNvbnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3Ry + ZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51 + bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVs + bCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6Im15X2xpdHRs + ZUBwby5ueSIsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + bnVsbCwidmF0X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVz + IjpudWxsLCJzZWN1cmVfaWQiOiIxMzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNj + ZTNmZmNhMzU5ZjU3NTQxIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2JpbGxpbmcvMTM4YTcyZmFlMzI5MjY5ODM0NGMyY2Rj + Y2UzZmZjYTM1OWY1NzU0MSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9hcGkvY29udGFjdHMvNjgxIn0seyJpZCI6NjgzLCJraW5kIjoi + Y29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTM4NTU5MjMsImZ1bGxfbmFtZSI6 + IlRlc3RfU2t5bmV0IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGlu + ZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6 + bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIi + LCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVt + YWlsIjoibXlfbGl0dGxlQHBvLm55Iiwid2ViIjpudWxsLCJkaXNjb3VudCI6 + bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVtYmVyIjpudWxsLCJsYW5ndWFn + ZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImFjNTA0MWQ5N2E5 + MGQyMzMzMjI3OGM1MTQ4NjIxNWI1YmNhNzg3YzEiLCJwZXJtYWxpbmsiOiJo + dHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9hYzUwNDFkOTdh + OTBkMjMzMzIyNzhjNTE0ODYyMTViNWJjYTc4N2MxIiwidXJsIjoiaHR0cDov + L3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82ODMifV0= + http_version: + recorded_at: Thu, 21 Dec 2017 11:32:05 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/found_contact.yml b/spec/fixtures/quaderno_cassettes/found_contact.yml new file mode 100644 index 0000000..72fd35a --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/found_contact.yml @@ -0,0 +1,227 @@ +--- +http_interactions: +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '15' + X-Ratelimit-Remaining: + - '99' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"98e7a84077de79c07b61648700087a54"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 8ae5c7b9-e206-47aa-b94b-741305be6a18 + X-Runtime: + - '0.551649' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY3Mywia2luZCI6ImNvbXBhbnkiLCJj + cmVhdGVkX2F0IjoxNTEwNjY2NTkxLCJmdWxsX25hbWUiOiJEdW5kZWUiLCJj + b250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVl + dF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxs + LCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGws + InBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6 + bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIi + OiI1MTgyNDc1MzU1NjciLCJsYW5ndWFnZSI6IkVTIiwibm90ZXMiOm51bGws + InNlY3VyZV9pZCI6ImU2OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4 + ZjU5MWI5MWMiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1l + OjMwMDAvYmlsbGluZy9lNjlkOTA1YjZkNzk5MGZiZTMyZWQyMWVmZGZiOWFj + OGY1OTFiOTFjIiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAw + L2FwaS9jb250YWN0cy82NzMifSx7ImlkIjo2NzksImtpbmQiOiJwZXJzb24i + LCJjcmVhdGVkX2F0IjoxNTEzNzcxNTQ0LCJmaXJzdF9uYW1lIjoiRWwgQ2lk + IE93bmVhZG9yIiwibGFzdF9uYW1lIjpudWxsLCJmdWxsX25hbWUiOiJFbCBD + aWQgT3duZWFkb3IiLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGlu + ZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVn + aW9uIjpudWxsLCJjb3VudHJ5IjoiRVMiLCJwaG9uZV8xIjpudWxsLCJwaG9u + ZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGws + ImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxs + LCJiYW5rX2FjY291bnQiOm51bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6 + bnVsbCwic2VjdXJlX2lkIjoiYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEz + Y2UxZWQzZmUyNTNhMCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5s + dmgubWU6MzAwMC9iaWxsaW5nL2M1YjMxMjkzMzc2NzQ2MWFlZTA1OTZiMTUx + M2NlMWVkM2ZlMjUzYTAiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1l + OjMwMDAvYXBpL2NvbnRhY3RzLzY3OSJ9LHsiaWQiOjY4MCwia2luZCI6ImNv + bXBhbnkiLCJjcmVhdGVkX2F0IjoxNTEzNzcxNTY0LCJmdWxsX25hbWUiOiJG + cmFuw6dvaXNlIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjpudWxsLCJsYW5ndWFnZSI6IkZSIiwibm90ZXMiOm51 + bGwsInNlY3VyZV9pZCI6IjA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEz + ZTZjMTkwMjMzMTgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZo + Lm1lOjMwMDAvYmlsbGluZy8wN2FhZDMzNWVhNGEyOGZlY2U3OTljOTU5NDAx + M2U2YzE5MDIzMzE4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2FwaS9jb250YWN0cy82ODAifSx7ImlkIjo2NzEsImtpbmQiOiJjb21w + YW55IiwiY3JlYXRlZF9hdCI6MTUxMDY1NDM5NSwiZnVsbF9uYW1lIjoiSmFt + ZXMiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGws + InN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5 + IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEi + Om51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGws + IndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0 + X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJz + ZWN1cmVfaWQiOiJmMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2 + ODY2ODg2IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2JpbGxpbmcvZjI3ODNjYjU3ODYwYzhiZmUzNDM2ODNlZGQ2YzUyZGEy + Njg2Njg4NiIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9h + cGkvY29udGFjdHMvNjcxIn0seyJpZCI6NjcyLCJraW5kIjoiY29tcGFueSIs + ImNyZWF0ZWRfYXQiOjE1MTA2NTQ3MDYsImZ1bGxfbmFtZSI6IkphbWVzIiwi + Y29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJl + ZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVs + bCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiQVUiLCJwaG9uZV8xIjpudWxs + LCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIi + Om51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOm51bGwsInZhdF9udW1i + ZXIiOiIxMjA0MjE2ODc0MyIsImxhbmd1YWdlIjoiRU4iLCJub3RlcyI6bnVs + bCwic2VjdXJlX2lkIjoiMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNj + ZWZmOTNmNTJlMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9iaWxsaW5nLzA2YWI4YzNjYmVlODI4YTgwM2ZjNmQ0YjRlMWZj + Y2VmZjkzZjUyZTMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMw + MDAvYXBpL2NvbnRhY3RzLzY3MiJ9LHsiaWQiOjY3NSwia2luZCI6InBlcnNv + biIsImNyZWF0ZWRfYXQiOjE1MTMwNzYyNTYsImZpcnN0X25hbWUiOiJKYW1l + cyIsImxhc3RfbmFtZSI6IkpveWNlIiwiZnVsbF9uYW1lIjoiSmFtZXMgSm95 + Y2UiLCJzdHJlZXRfbGluZV8xIjoiQ2hlYXBzaWRlIDEwNyIsInN0cmVldF9s + aW5lXzIiOiI5dGggZmxvb3IiLCJwb3N0YWxfY29kZSI6IkVDMlYgNkROIiwi + Y2l0eSI6IkxvbmRvbiIsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkdCIiwi + cGhvbmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFp + bCI6bnVsbCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoi + IiwidmF0X251bWJlciI6IkdCMjIyMTYxNzUxIiwibGFuZ3VhZ2UiOiJFTiIs + Im5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiI5NDYwODVkZTVhNTVhZTUyZGY3 + NWQ3OTM4ZTNlNzdkYmIwZWQ0OTI1IiwicGVybWFsaW5rIjoiaHR0cDovL3F1 + YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvOTQ2MDg1ZGU1YTU1YWU1MmRm + NzVkNzkzOGUzZTc3ZGJiMGVkNDkyNSIsInVybCI6Imh0dHA6Ly9xdWFkZXJu + by5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc1In0seyJpZCI6NjY4LCJr + aW5kIjoiY29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTAwNDk2NzksImZ1bGxf + bmFtZSI6IkppbWJvd3p6IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRf + bGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29k + ZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5Ijoi + R0IiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGws + ImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhf + aWQiOiIiLCJ2YXRfbnVtYmVyIjoiR0I1MzE1MjUxNzciLCJsYW5ndWFnZSI6 + IkVOIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NTQ4NjM2NTY1NzJj + MTYwN2NlNjliMTJjZjcyYjUwMTgxZDczNmEiLCJwZXJtYWxpbmsiOiJodHRw + Oi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDU0ODYzNjU2NTcy + YzE2MDdjZTY5YjEyY2Y3MmI1MDE4MWQ3MzZhIiwidXJsIjoiaHR0cDovL3F1 + YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82NjgifSx7ImlkIjo2 + NzQsImtpbmQiOiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDgyNzI0OSwi + ZnVsbF9uYW1lIjoiTUlndWVsIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJl + ZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxf + Y29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5 + IjoiRVMiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51 + bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0 + YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291bnQiOm51 + bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoi + ZDZkN2ZmN2Q0Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInBl + cm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5n + L2Q2ZDdmZjdkNGM4NjQwOWFhOWQ3YjkwNGQ2OGE0MTlkMGM1N2I4NzYiLCJ1 + cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3Rz + LzY3NCJ9LHsiaWQiOjY3Niwia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQi + OjE1MTMwNzgwODIsImZpcnN0X25hbWUiOiJQYXVsIiwibGFzdF9uYW1lIjoi + SG9nYW4iLCJmdWxsX25hbWUiOiJQYXVsIEhvZ2FuIiwic3RyZWV0X2xpbmVf + MSI6bnVsbCwic3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOiIy + MTE0IiwiY2l0eSI6bnVsbCwicmVnaW9uIjoiTlNXIiwiY291bnRyeSI6IkFV + IiwicGhvbmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJl + bWFpbCI6bnVsbCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lk + IjoiIiwidmF0X251bWJlciI6IjQ5MTY1ODUyMzYyIiwibGFuZ3VhZ2UiOiJF + UyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiI2ZWJiNzAwZWEzNWE5Yjgy + ZDY2YzcwZTM1YmJmZDM0ZmM1ODJmZTY4IiwicGVybWFsaW5rIjoiaHR0cDov + L3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvNmViYjcwMGVhMzVhOWI4 + MmQ2NmM3MGUzNWJiZmQzNGZjNTgyZmU2OCIsInVybCI6Imh0dHA6Ly9xdWFk + ZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc2In1d + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:13 GMT +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts/673.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '14' + X-Ratelimit-Remaining: + - '98' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"0eca424b43d9773dcc155c8fbb5cbd6f"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - c6c3b35f-7975-4aa6-b4ee-5746d9ff1476 + X-Runtime: + - '0.322263' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":673,"kind":"company","created_at":1510666591,"full_name":"Dundee","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":"518247535567","language":"ES","notes":null,"secure_id":"e69d905b6d7990fbe32ed21efdfb9ac8f591b91c","permalink":"http://quaderno.lvh.me:3000/billing/e69d905b6d7990fbe32ed21efdfb9ac8f591b91c","url":"http://quaderno.lvh.me:3000/api/contacts/673"}' + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:13 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/found_contact_by_access_token.yml b/spec/fixtures/quaderno_cassettes/found_contact_by_access_token.yml new file mode 100644 index 0000000..ba67a4e --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/found_contact_by_access_token.yml @@ -0,0 +1,268 @@ +--- +http_interactions: +- request: + method: get + uri: http://quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + Authorization: + - Bearer afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0 + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '15' + X-Ratelimit-Remaining: + - '100' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"b841128b2b1e425ca44a00eaecc1d3e9"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 5478964e-b893-400c-933c-110d7c7ed31b + X-Runtime: + - '2.545913' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY4MCwia2luZCI6ImNvbXBhbnkiLCJj + cmVhdGVkX2F0IjoxNTEzNzcxNTY0LCJmdWxsX25hbWUiOiJGcmFuw6dvaXNl + IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJz + dHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6 + bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIiLCJwaG9uZV8xIjpu + dWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3 + ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVt + YmVyIjpudWxsLCJsYW5ndWFnZSI6IkZSIiwibm90ZXMiOm51bGwsInNlY3Vy + ZV9pZCI6IjA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZjMTkwMjMz + MTgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YmlsbGluZy8wN2FhZDMzNWVhNGEyOGZlY2U3OTljOTU5NDAxM2U2YzE5MDIz + MzE4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9j + b250YWN0cy82ODAifSx7ImlkIjo2NzEsImtpbmQiOiJjb21wYW55IiwiY3Jl + YXRlZF9hdCI6MTUxMDY1NDM5NSwiZnVsbF9uYW1lIjoiSmFtZXMiLCJjb250 + YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJlciI6 + bnVsbCwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQi + OiJmMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2ODY2ODg2Iiwi + cGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxp + bmcvZjI3ODNjYjU3ODYwYzhiZmUzNDM2ODNlZGQ2YzUyZGEyNjg2Njg4NiIs + InVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFj + dHMvNjcxIn0seyJpZCI6NjcyLCJraW5kIjoiY29tcGFueSIsImNyZWF0ZWRf + YXQiOjE1MTA2NTQ3MDYsImZ1bGxfbmFtZSI6IkphbWVzIiwiY29udGFjdF9u + YW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8y + IjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9u + IjpudWxsLCJjb3VudHJ5IjoiQVUiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8y + IjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRp + c2NvdW50IjpudWxsLCJ0YXhfaWQiOm51bGwsInZhdF9udW1iZXIiOiIxMjA0 + MjE2ODc0MyIsImxhbmd1YWdlIjoiRU4iLCJub3RlcyI6bnVsbCwic2VjdXJl + X2lkIjoiMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNjZWZmOTNmNTJl + MyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9i + aWxsaW5nLzA2YWI4YzNjYmVlODI4YTgwM2ZjNmQ0YjRlMWZjY2VmZjkzZjUy + ZTMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2Nv + bnRhY3RzLzY3MiJ9LHsiaWQiOjY3NSwia2luZCI6InBlcnNvbiIsImNyZWF0 + ZWRfYXQiOjE1MTMwNzYyNTYsImZpcnN0X25hbWUiOiJKYW1lcyIsImxhc3Rf + bmFtZSI6IkpveWNlIiwiZnVsbF9uYW1lIjoiSmFtZXMgSm95Y2UiLCJzdHJl + ZXRfbGluZV8xIjoiQ2hlYXBzaWRlIDEwNyIsInN0cmVldF9saW5lXzIiOiI5 + dGggZmxvb3IiLCJwb3N0YWxfY29kZSI6IkVDMlYgNkROIiwiY2l0eSI6Ikxv + bmRvbiIsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkdCIiwicGhvbmVfMSI6 + bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVsbCwi + d2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0X251 + bWJlciI6IkdCMjIyMTYxNzUxIiwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpu + dWxsLCJzZWN1cmVfaWQiOiI5NDYwODVkZTVhNTVhZTUyZGY3NWQ3OTM4ZTNl + NzdkYmIwZWQ0OTI1IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2JpbGxpbmcvOTQ2MDg1ZGU1YTU1YWU1MmRmNzVkNzkzOGUz + ZTc3ZGJiMGVkNDkyNSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9hcGkvY29udGFjdHMvNjc1In0seyJpZCI6NjY4LCJraW5kIjoiY29t + cGFueSIsImNyZWF0ZWRfYXQiOjE1MTAwNDk2NzksImZ1bGxfbmFtZSI6Ikpp + bWJvd3p6IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpu + dWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwi + Y2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiR0IiLCJwaG9u + ZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpu + dWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2 + YXRfbnVtYmVyIjoiR0I1MzE1MjUxNzciLCJsYW5ndWFnZSI6IkVOIiwibm90 + ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NTQ4NjM2NTY1NzJjMTYwN2NlNjli + MTJjZjcyYjUwMTgxZDczNmEiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDU0ODYzNjU2NTcyYzE2MDdjZTY5 + YjEyY2Y3MmI1MDE4MWQ3MzZhIiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2FwaS9jb250YWN0cy82NjgifSx7ImlkIjo2NzQsImtpbmQi + OiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDgyNzI0OSwiZnVsbF9uYW1l + IjoiTUlndWVsIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRVMiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291bnQiOm51bGwsImxhbmd1 + YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiZDZkN2ZmN2Q0 + Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInBlcm1hbGluayI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nL2Q2ZDdmZjdk + NGM4NjQwOWFhOWQ3YjkwNGQ2OGE0MTlkMGM1N2I4NzYiLCJ1cmwiOiJodHRw + Oi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY3NCJ9LHsi + aWQiOjY3Niwia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMwNzgw + ODIsImZpcnN0X25hbWUiOiJQYXVsIiwibGFzdF9uYW1lIjoiSG9nYW4iLCJm + dWxsX25hbWUiOiJQYXVsIEhvZ2FuIiwic3RyZWV0X2xpbmVfMSI6bnVsbCwi + c3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOiIyMTE0IiwiY2l0 + eSI6bnVsbCwicmVnaW9uIjoiTlNXIiwiY291bnRyeSI6IkFVIiwicGhvbmVf + MSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVs + bCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0 + X251bWJlciI6IjQ5MTY1ODUyMzYyIiwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVz + IjpudWxsLCJzZWN1cmVfaWQiOiI2ZWJiNzAwZWEzNWE5YjgyZDY2YzcwZTM1 + YmJmZDM0ZmM1ODJmZTY4IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2JpbGxpbmcvNmViYjcwMGVhMzVhOWI4MmQ2NmM3MGUz + NWJiZmQzNGZjNTgyZmU2OCIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9hcGkvY29udGFjdHMvNjc2In0seyJpZCI6NjczLCJraW5kIjoi + Y29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTA2NjY1OTEsImZ1bGxfbmFtZSI6 + IlRlc3RfT0NQIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiQVUiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjoiZG9udEBzdG9wLmJlbGlldmluZyIsIndlYiI6bnVsbCwiZGlzY291bnQi + Om51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiI1MTgyNDc1MzU1Njci + LCJsYW5ndWFnZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImU2 + OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4ZjU5MWI5MWMiLCJwZXJt + YWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9l + NjlkOTA1YjZkNzk5MGZiZTMyZWQyMWVmZGZiOWFjOGY1OTFiOTFjIiwidXJs + IjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82 + NzMifSx7ImlkIjo2NzksImtpbmQiOiJwZXJzb24iLCJjcmVhdGVkX2F0Ijox + NTEzNzcxNTQ0LCJmaXJzdF9uYW1lIjoiVGVzdF9PQ1AiLCJsYXN0X25hbWUi + Om51bGwsImZ1bGxfbmFtZSI6IlRlc3RfT0NQIiwic3RyZWV0X2xpbmVfMSI6 + bnVsbCwic3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGws + ImNpdHkiOm51bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkVTIiwicGhv + bmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6 + ImRvbnRAc3RvcC5iZWxpZXZpbmciLCJ3ZWIiOm51bGwsImRpc2NvdW50Ijpu + dWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291 + bnQiOm51bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJl + X2lkIjoiYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEzY2UxZWQzZmUyNTNh + MCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9i + aWxsaW5nL2M1YjMxMjkzMzc2NzQ2MWFlZTA1OTZiMTUxM2NlMWVkM2ZlMjUz + YTAiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2Nv + bnRhY3RzLzY3OSJ9LHsiaWQiOjY4MSwia2luZCI6ImNvbXBhbnkiLCJjcmVh + dGVkX2F0IjoxNTEzODU1MzkzLCJmdWxsX25hbWUiOiJUZXN0X1NreW5ldCIs + ImNvbnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3Ry + ZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51 + bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVs + bCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6Im15X2xpdHRs + ZUBwby5ueSIsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + bnVsbCwidmF0X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVz + IjpudWxsLCJzZWN1cmVfaWQiOiIxMzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNj + ZTNmZmNhMzU5ZjU3NTQxIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2JpbGxpbmcvMTM4YTcyZmFlMzI5MjY5ODM0NGMyY2Rj + Y2UzZmZjYTM1OWY1NzU0MSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9hcGkvY29udGFjdHMvNjgxIn0seyJpZCI6NjgzLCJraW5kIjoi + Y29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTM4NTU5MjMsImZ1bGxfbmFtZSI6 + IlRlc3RfU2t5bmV0IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGlu + ZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6 + bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIi + LCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVt + YWlsIjoibXlfbGl0dGxlQHBvLm55Iiwid2ViIjpudWxsLCJkaXNjb3VudCI6 + bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVtYmVyIjpudWxsLCJsYW5ndWFn + ZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImFjNTA0MWQ5N2E5 + MGQyMzMzMjI3OGM1MTQ4NjIxNWI1YmNhNzg3YzEiLCJwZXJtYWxpbmsiOiJo + dHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9hYzUwNDFkOTdh + OTBkMjMzMzIyNzhjNTE0ODYyMTViNWJjYTc4N2MxIiwidXJsIjoiaHR0cDov + L3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82ODMifV0= + http_version: + recorded_at: Thu, 21 Dec 2017 13:36:26 GMT +- request: + method: get + uri: http://quaderno.lvh.me:3000/api/contacts/680.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + Authorization: + - Bearer afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0 + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '15' + X-Ratelimit-Remaining: + - '99' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"2f45ef805c70a888b5b8921dbc253374"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 3894c15f-30f2-4692-b238-e2a34aa8509b + X-Runtime: + - '0.725892' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + eyJpZCI6NjgwLCJraW5kIjoiY29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTM3 + NzE1NjQsImZ1bGxfbmFtZSI6IkZyYW7Dp29pc2UiLCJjb250YWN0X25hbWUi + Om51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51 + bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51 + bGwsImNvdW50cnkiOiJGUiIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51 + bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291 + bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImxhbmd1 + YWdlIjoiRlIiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiMDdhYWQzMzVl + YTRhMjhmZWNlNzk5Yzk1OTQwMTNlNmMxOTAyMzMxOCIsInBlcm1hbGluayI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nLzA3YWFkMzM1 + ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZjMTkwMjMzMTgiLCJ1cmwiOiJodHRw + Oi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY4MCJ9 + http_version: + recorded_at: Thu, 21 Dec 2017 13:36:26 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/found_contact_by_authentication_token.yml b/spec/fixtures/quaderno_cassettes/found_contact_by_authentication_token.yml new file mode 100644 index 0000000..c716600 --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/found_contact_by_authentication_token.yml @@ -0,0 +1,241 @@ +--- +http_interactions: +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '15' + X-Ratelimit-Remaining: + - '99' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"c76bfed4fe851e73924f7a85140bc1ae"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - bbfae2d3-42b8-493b-9302-39fe6e6b0b06 + X-Runtime: + - '0.317197' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY3OSwia2luZCI6InBlcnNvbiIsImNy + ZWF0ZWRfYXQiOjE1MTM3NzE1NDQsImZpcnN0X25hbWUiOiJFbCBDaWQgT3du + ZWFkb3IiLCJsYXN0X25hbWUiOm51bGwsImZ1bGxfbmFtZSI6IkVsIENpZCBP + d25lYWRvciIsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIi + Om51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24i + Om51bGwsImNvdW50cnkiOiJFUyIsInBob25lXzEiOm51bGwsInBob25lXzIi + Om51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlz + Y291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImJh + bmtfYWNjb3VudCI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxs + LCJzZWN1cmVfaWQiOiJjNWIzMTI5MzM3Njc0NjFhZWUwNTk2YjE1MTNjZTFl + ZDNmZTI1M2EwIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5t + ZTozMDAwL2JpbGxpbmcvYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEzY2Ux + ZWQzZmUyNTNhMCIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9hcGkvY29udGFjdHMvNjc5In0seyJpZCI6NjgwLCJraW5kIjoiY29tcGFu + eSIsImNyZWF0ZWRfYXQiOjE1MTM3NzE1NjQsImZ1bGxfbmFtZSI6IkZyYW7D + p29pc2UiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51 + bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJj + aXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJGUiIsInBob25l + XzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51 + bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZh + dF9udW1iZXIiOm51bGwsImxhbmd1YWdlIjoiRlIiLCJub3RlcyI6bnVsbCwi + c2VjdXJlX2lkIjoiMDdhYWQzMzVlYTRhMjhmZWNlNzk5Yzk1OTQwMTNlNmMx + OTAyMzMxOCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9iaWxsaW5nLzA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZj + MTkwMjMzMTgiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YXBpL2NvbnRhY3RzLzY4MCJ9LHsiaWQiOjY3MSwia2luZCI6ImNvbXBhbnki + LCJjcmVhdGVkX2F0IjoxNTEwNjU0Mzk1LCJmdWxsX25hbWUiOiJKYW1lcyIs + ImNvbnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3Ry + ZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51 + bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkFVIiwicGhvbmVfMSI6bnVs + bCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVsbCwid2Vi + IjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVt + YmVyIjpudWxsLCJsYW5ndWFnZSI6IkVOIiwibm90ZXMiOm51bGwsInNlY3Vy + ZV9pZCI6ImYyNzgzY2I1Nzg2MGM4YmZlMzQzNjgzZWRkNmM1MmRhMjY4NjY4 + ODYiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YmlsbGluZy9mMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2ODY2 + ODg2IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9j + b250YWN0cy82NzEifSx7ImlkIjo2NzIsImtpbmQiOiJjb21wYW55IiwiY3Jl + YXRlZF9hdCI6MTUxMDY1NDcwNiwiZnVsbF9uYW1lIjoiSmFtZXMiLCJjb250 + YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJlciI6 + IjEyMDQyMTY4NzQzIiwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJz + ZWN1cmVfaWQiOiIwNmFiOGMzY2JlZTgyOGE4MDNmYzZkNGI0ZTFmY2NlZmY5 + M2Y1MmUzIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2JpbGxpbmcvMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNjZWZm + OTNmNTJlMyIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9h + cGkvY29udGFjdHMvNjcyIn0seyJpZCI6Njc1LCJraW5kIjoicGVyc29uIiwi + Y3JlYXRlZF9hdCI6MTUxMzA3NjI1NiwiZmlyc3RfbmFtZSI6IkphbWVzIiwi + bGFzdF9uYW1lIjoiSm95Y2UiLCJmdWxsX25hbWUiOiJKYW1lcyBKb3ljZSIs + InN0cmVldF9saW5lXzEiOiJDaGVhcHNpZGUgMTA3Iiwic3RyZWV0X2xpbmVf + MiI6Ijl0aCBmbG9vciIsInBvc3RhbF9jb2RlIjoiRUMyViA2RE4iLCJjaXR5 + IjoiTG9uZG9uIiwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiR0IiLCJwaG9u + ZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpu + dWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2 + YXRfbnVtYmVyIjoiR0IyMjIxNjE3NTEiLCJsYW5ndWFnZSI6IkVOIiwibm90 + ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NjA4NWRlNWE1NWFlNTJkZjc1ZDc5 + MzhlM2U3N2RiYjBlZDQ5MjUiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDYwODVkZTVhNTVhZTUyZGY3NWQ3 + OTM4ZTNlNzdkYmIwZWQ0OTI1IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2FwaS9jb250YWN0cy82NzUifSx7ImlkIjo2NjgsImtpbmQi + OiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDA0OTY3OSwiZnVsbF9uYW1l + IjoiSmltYm93enoiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5l + XzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpu + dWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IiIsInZhdF9udW1iZXIiOiJHQjUzMTUyNTE3NyIsImxhbmd1YWdlIjoiRU4i + LCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiOTQ1NDg2MzY1NjU3MmMxNjA3 + Y2U2OWIxMmNmNzJiNTAxODFkNzM2YSIsInBlcm1hbGluayI6Imh0dHA6Ly9x + dWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nLzk0NTQ4NjM2NTY1NzJjMTYw + N2NlNjliMTJjZjcyYjUwMTgxZDczNmEiLCJ1cmwiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY2OCJ9LHsiaWQiOjY3NCwi + a2luZCI6ImNvbXBhbnkiLCJjcmVhdGVkX2F0IjoxNTEwODI3MjQ5LCJmdWxs + X25hbWUiOiJNSWd1ZWwiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9s + aW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2Rl + IjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJF + UyIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwi + ZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9p + ZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImJhbmtfYWNjb3VudCI6bnVsbCwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiJkNmQ3 + ZmY3ZDRjODY0MDlhYTlkN2I5MDRkNjhhNDE5ZDBjNTdiODc2IiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvZDZk + N2ZmN2Q0Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc0 + In0seyJpZCI6Njc2LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzA3ODA4MiwiZmlyc3RfbmFtZSI6IlBhdWwiLCJsYXN0X25hbWUiOiJIb2dh + biIsImZ1bGxfbmFtZSI6IlBhdWwgSG9nYW4iLCJzdHJlZXRfbGluZV8xIjpu + dWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6IjIxMTQi + LCJjaXR5IjpudWxsLCJyZWdpb24iOiJOU1ciLCJjb3VudHJ5IjoiQVUiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjoiNDkxNjU4NTIzNjIiLCJsYW5ndWFnZSI6IkVTIiwi + bm90ZXMiOm51bGwsInNlY3VyZV9pZCI6IjZlYmI3MDBlYTM1YTliODJkNjZj + NzBlMzViYmZkMzRmYzU4MmZlNjgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVh + ZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy82ZWJiNzAwZWEzNWE5YjgyZDY2 + YzcwZTM1YmJmZDM0ZmM1ODJmZTY4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82NzYifSx7ImlkIjo2NzMsImtp + bmQiOiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDY2NjU5MSwiZnVsbF9u + YW1lIjoiVGVzdF9PQ1AiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9s + aW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2Rl + IjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJB + VSIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwi + ZW1haWwiOiJkb250QHN0b3AuYmVsaWV2aW5nIiwid2ViIjpudWxsLCJkaXNj + b3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0X251bWJlciI6IjUxODI0NzUz + NTU2NyIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lk + IjoiZTY5ZDkwNWI2ZDc5OTBmYmUzMmVkMjFlZmRmYjlhYzhmNTkxYjkxYyIs + InBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxs + aW5nL2U2OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4ZjU5MWI5MWMi + LCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRh + Y3RzLzY3MyJ9LHsiaWQiOjY4MSwia2luZCI6ImNvbXBhbnkiLCJjcmVhdGVk + X2F0IjoxNTEzODU1MzkzLCJmdWxsX25hbWUiOiJUZXN0X1NreW5ldCIsImNv + bnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3RyZWV0 + X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51bGws + InJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVsbCwi + cGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6Im15X2xpdHRsZUBw + by5ueSIsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVs + bCwidmF0X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpu + dWxsLCJzZWN1cmVfaWQiOiIxMzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNjZTNm + ZmNhMzU5ZjU3NTQxIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2JpbGxpbmcvMTM4YTcyZmFlMzI5MjY5ODM0NGMyY2RjY2Uz + ZmZjYTM1OWY1NzU0MSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9hcGkvY29udGFjdHMvNjgxIn1d + http_version: + recorded_at: Thu, 21 Dec 2017 11:32:03 GMT +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts/679.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '14' + X-Ratelimit-Remaining: + - '98' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"0ae83093255bd78fa576d03d616519a2"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 62a78667-59e5-4a93-8c62-3b1e856e90c2 + X-Runtime: + - '0.331213' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":679,"kind":"person","created_at":1513771544,"first_name":"El + Cid Owneador","last_name":null,"full_name":"El Cid Owneador","street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":"","vat_number":null,"bank_account":null,"language":"ES","notes":null,"secure_id":"c5b312933767461aee0596b1513ce1ed3fe253a0","permalink":"http://quaderno.lvh.me:3000/billing/c5b312933767461aee0596b1513ce1ed3fe253a0","url":"http://quaderno.lvh.me:3000/api/contacts/679"}' + http_version: + recorded_at: Thu, 21 Dec 2017 11:32:03 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/new_contact.yml b/spec/fixtures/quaderno_cassettes/new_contact.yml new file mode 100644 index 0000000..3327ead --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/new_contact.yml @@ -0,0 +1,46 @@ +--- +http_interactions: +- request: + method: post + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: UTF-8 + string: '{"kind":"company","first_name":"Test_Skynet","email":"my_little@po.ny"}' + headers: + Accept: + - application/json + Content-Type: + - application/json + response: + status: + code: 201 + message: Created + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '13' + X-Ratelimit-Remaining: + - '97' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"092cb049f00568e14a55d2587a6bd8b7"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - f78f0a68-ee2d-43ee-bdb8-48ce5514ca76 + X-Runtime: + - '0.367721' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":681,"kind":"company","created_at":1513855393,"full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"138a72fae3292698344c2cdcce3ffca359f57541","permalink":"http://quaderno.lvh.me:3000/billing/138a72fae3292698344c2cdcce3ffca359f57541","url":"http://quaderno.lvh.me:3000/api/contacts/681"}' + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:13 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/new_contact_by_access_token.yml b/spec/fixtures/quaderno_cassettes/new_contact_by_access_token.yml new file mode 100644 index 0000000..0c5de77 --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/new_contact_by_access_token.yml @@ -0,0 +1,48 @@ +--- +http_interactions: +- request: + method: post + uri: http://quaderno.lvh.me:3000/api/contacts.json + body: + encoding: UTF-8 + string: '{"kind":"company","first_name":"Test_Skynet","email":"my_little@po.ny"}' + headers: + Accept: + - application/json + Authorization: + - Bearer afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0 + Content-Type: + - application/json + response: + status: + code: 201 + message: Created + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '14' + X-Ratelimit-Remaining: + - '98' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"e773b58fc0fedb615bb3ef0c08354393"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 87dd2b3a-6b1a-4660-b161-be0a86b526b5 + X-Runtime: + - '1.463753' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":685,"kind":"company","created_at":1513863388,"full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"d2dad2da07440e6dcd2dd64b914df54ba50d8b2e","permalink":"http://quaderno.lvh.me:3000/billing/d2dad2da07440e6dcd2dd64b914df54ba50d8b2e","url":"http://quaderno.lvh.me:3000/api/contacts/685"}' + http_version: + recorded_at: Thu, 21 Dec 2017 13:36:28 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/new_contact_by_authentication_token.yml b/spec/fixtures/quaderno_cassettes/new_contact_by_authentication_token.yml new file mode 100644 index 0000000..6243c5f --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/new_contact_by_authentication_token.yml @@ -0,0 +1,46 @@ +--- +http_interactions: +- request: + method: post + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: UTF-8 + string: '{"kind":"company","first_name":"Test_Skynet","email":"my_little@po.ny"}' + headers: + Accept: + - application/json + Content-Type: + - application/json + response: + status: + code: 201 + message: Created + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '14' + X-Ratelimit-Remaining: + - '97' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"14f4f9aa65a95fa6523d9f7c1c983fe6"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - ded73741-78a2-440a-87ac-61d42350b717 + X-Runtime: + - '0.322456' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":683,"kind":"company","created_at":1513855923,"full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"vat_number":null,"language":"ES","notes":null,"secure_id":"ac5041d97a90d23332278c51486215b5bca787c1","permalink":"http://quaderno.lvh.me:3000/billing/ac5041d97a90d23332278c51486215b5bca787c1","url":"http://quaderno.lvh.me:3000/api/contacts/683"}' + http_version: + recorded_at: Thu, 21 Dec 2017 11:32:04 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/rate_limit.yml b/spec/fixtures/quaderno_cassettes/rate_limit.yml new file mode 100644 index 0000000..384f47e --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/rate_limit.yml @@ -0,0 +1,44 @@ +--- +http_interactions: +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/ping.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '11' + X-Ratelimit-Remaining: + - '90' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"0c776997933eb60833b37beaf43814c8"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - f015d840-476b-474e-98fc-67a4271c4199 + X-Runtime: + - '0.181127' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"status":"OK"}' + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:16 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/updated_contact.yml b/spec/fixtures/quaderno_cassettes/updated_contact.yml new file mode 100644 index 0000000..ffac08c --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/updated_contact.yml @@ -0,0 +1,242 @@ +--- +http_interactions: +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '13' + X-Ratelimit-Remaining: + - '96' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"62432497459508563805a90b657188fc"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 718b1b06-f43d-413f-830a-89d2677294c0 + X-Runtime: + - '0.330464' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY3Mywia2luZCI6ImNvbXBhbnkiLCJj + cmVhdGVkX2F0IjoxNTEwNjY2NTkxLCJmdWxsX25hbWUiOiJEdW5kZWUiLCJj + b250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVl + dF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxs + LCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGws + InBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6 + bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIi + OiI1MTgyNDc1MzU1NjciLCJsYW5ndWFnZSI6IkVTIiwibm90ZXMiOm51bGws + InNlY3VyZV9pZCI6ImU2OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4 + ZjU5MWI5MWMiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1l + OjMwMDAvYmlsbGluZy9lNjlkOTA1YjZkNzk5MGZiZTMyZWQyMWVmZGZiOWFj + OGY1OTFiOTFjIiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAw + L2FwaS9jb250YWN0cy82NzMifSx7ImlkIjo2NzksImtpbmQiOiJwZXJzb24i + LCJjcmVhdGVkX2F0IjoxNTEzNzcxNTQ0LCJmaXJzdF9uYW1lIjoiRWwgQ2lk + IE93bmVhZG9yIiwibGFzdF9uYW1lIjpudWxsLCJmdWxsX25hbWUiOiJFbCBD + aWQgT3duZWFkb3IiLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGlu + ZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVn + aW9uIjpudWxsLCJjb3VudHJ5IjoiRVMiLCJwaG9uZV8xIjpudWxsLCJwaG9u + ZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGws + ImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxs + LCJiYW5rX2FjY291bnQiOm51bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6 + bnVsbCwic2VjdXJlX2lkIjoiYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEz + Y2UxZWQzZmUyNTNhMCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5s + dmgubWU6MzAwMC9iaWxsaW5nL2M1YjMxMjkzMzc2NzQ2MWFlZTA1OTZiMTUx + M2NlMWVkM2ZlMjUzYTAiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1l + OjMwMDAvYXBpL2NvbnRhY3RzLzY3OSJ9LHsiaWQiOjY4MCwia2luZCI6ImNv + bXBhbnkiLCJjcmVhdGVkX2F0IjoxNTEzNzcxNTY0LCJmdWxsX25hbWUiOiJG + cmFuw6dvaXNlIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjpudWxsLCJsYW5ndWFnZSI6IkZSIiwibm90ZXMiOm51 + bGwsInNlY3VyZV9pZCI6IjA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEz + ZTZjMTkwMjMzMTgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZo + Lm1lOjMwMDAvYmlsbGluZy8wN2FhZDMzNWVhNGEyOGZlY2U3OTljOTU5NDAx + M2U2YzE5MDIzMzE4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2FwaS9jb250YWN0cy82ODAifSx7ImlkIjo2NzEsImtpbmQiOiJjb21w + YW55IiwiY3JlYXRlZF9hdCI6MTUxMDY1NDM5NSwiZnVsbF9uYW1lIjoiSmFt + ZXMiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGws + InN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5 + IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEi + Om51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGws + IndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0 + X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJz + ZWN1cmVfaWQiOiJmMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2 + ODY2ODg2IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2JpbGxpbmcvZjI3ODNjYjU3ODYwYzhiZmUzNDM2ODNlZGQ2YzUyZGEy + Njg2Njg4NiIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9h + cGkvY29udGFjdHMvNjcxIn0seyJpZCI6NjcyLCJraW5kIjoiY29tcGFueSIs + ImNyZWF0ZWRfYXQiOjE1MTA2NTQ3MDYsImZ1bGxfbmFtZSI6IkphbWVzIiwi + Y29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJl + ZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVs + bCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiQVUiLCJwaG9uZV8xIjpudWxs + LCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIi + Om51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOm51bGwsInZhdF9udW1i + ZXIiOiIxMjA0MjE2ODc0MyIsImxhbmd1YWdlIjoiRU4iLCJub3RlcyI6bnVs + bCwic2VjdXJlX2lkIjoiMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNj + ZWZmOTNmNTJlMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9iaWxsaW5nLzA2YWI4YzNjYmVlODI4YTgwM2ZjNmQ0YjRlMWZj + Y2VmZjkzZjUyZTMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMw + MDAvYXBpL2NvbnRhY3RzLzY3MiJ9LHsiaWQiOjY3NSwia2luZCI6InBlcnNv + biIsImNyZWF0ZWRfYXQiOjE1MTMwNzYyNTYsImZpcnN0X25hbWUiOiJKYW1l + cyIsImxhc3RfbmFtZSI6IkpveWNlIiwiZnVsbF9uYW1lIjoiSmFtZXMgSm95 + Y2UiLCJzdHJlZXRfbGluZV8xIjoiQ2hlYXBzaWRlIDEwNyIsInN0cmVldF9s + aW5lXzIiOiI5dGggZmxvb3IiLCJwb3N0YWxfY29kZSI6IkVDMlYgNkROIiwi + Y2l0eSI6IkxvbmRvbiIsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkdCIiwi + cGhvbmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFp + bCI6bnVsbCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoi + IiwidmF0X251bWJlciI6IkdCMjIyMTYxNzUxIiwibGFuZ3VhZ2UiOiJFTiIs + Im5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiI5NDYwODVkZTVhNTVhZTUyZGY3 + NWQ3OTM4ZTNlNzdkYmIwZWQ0OTI1IiwicGVybWFsaW5rIjoiaHR0cDovL3F1 + YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvOTQ2MDg1ZGU1YTU1YWU1MmRm + NzVkNzkzOGUzZTc3ZGJiMGVkNDkyNSIsInVybCI6Imh0dHA6Ly9xdWFkZXJu + by5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc1In0seyJpZCI6NjY4LCJr + aW5kIjoiY29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTAwNDk2NzksImZ1bGxf + bmFtZSI6IkppbWJvd3p6IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRf + bGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29k + ZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5Ijoi + R0IiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGws + ImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhf + aWQiOiIiLCJ2YXRfbnVtYmVyIjoiR0I1MzE1MjUxNzciLCJsYW5ndWFnZSI6 + IkVOIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NTQ4NjM2NTY1NzJj + MTYwN2NlNjliMTJjZjcyYjUwMTgxZDczNmEiLCJwZXJtYWxpbmsiOiJodHRw + Oi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDU0ODYzNjU2NTcy + YzE2MDdjZTY5YjEyY2Y3MmI1MDE4MWQ3MzZhIiwidXJsIjoiaHR0cDovL3F1 + YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82NjgifSx7ImlkIjo2 + NzQsImtpbmQiOiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDgyNzI0OSwi + ZnVsbF9uYW1lIjoiTUlndWVsIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJl + ZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxf + Y29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5 + IjoiRVMiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51 + bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0 + YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291bnQiOm51 + bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoi + ZDZkN2ZmN2Q0Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInBl + cm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5n + L2Q2ZDdmZjdkNGM4NjQwOWFhOWQ3YjkwNGQ2OGE0MTlkMGM1N2I4NzYiLCJ1 + cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3Rz + LzY3NCJ9LHsiaWQiOjY3Niwia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQi + OjE1MTMwNzgwODIsImZpcnN0X25hbWUiOiJQYXVsIiwibGFzdF9uYW1lIjoi + SG9nYW4iLCJmdWxsX25hbWUiOiJQYXVsIEhvZ2FuIiwic3RyZWV0X2xpbmVf + MSI6bnVsbCwic3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOiIy + MTE0IiwiY2l0eSI6bnVsbCwicmVnaW9uIjoiTlNXIiwiY291bnRyeSI6IkFV + IiwicGhvbmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJl + bWFpbCI6bnVsbCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lk + IjoiIiwidmF0X251bWJlciI6IjQ5MTY1ODUyMzYyIiwibGFuZ3VhZ2UiOiJF + UyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiI2ZWJiNzAwZWEzNWE5Yjgy + ZDY2YzcwZTM1YmJmZDM0ZmM1ODJmZTY4IiwicGVybWFsaW5rIjoiaHR0cDov + L3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvNmViYjcwMGVhMzVhOWI4 + MmQ2NmM3MGUzNWJiZmQzNGZjNTgyZmU2OCIsInVybCI6Imh0dHA6Ly9xdWFk + ZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc2In0seyJpZCI6Njgx + LCJraW5kIjoiY29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTM4NTUzOTMsImZ1 + bGxfbmFtZSI6IlRlc3RfU2t5bmV0IiwiY29udGFjdF9uYW1lIjpudWxsLCJz + dHJlZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0 + YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3Vu + dHJ5IjoiRlIiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgi + Om51bGwsImVtYWlsIjoibXlfbGl0dGxlQHBvLm55Iiwid2ViIjpudWxsLCJk + aXNjb3VudCI6bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVtYmVyIjpudWxs + LCJsYW5ndWFnZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6IjEz + OGE3MmZhZTMyOTI2OTgzNDRjMmNkY2NlM2ZmY2EzNTlmNTc1NDEiLCJwZXJt + YWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy8x + MzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNjZTNmZmNhMzU5ZjU3NTQxIiwidXJs + IjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82 + ODEifV0= + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:14 GMT +- request: + method: put + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts/673.json + body: + encoding: UTF-8 + string: '{"first_name":"Test_OCP","email":"dont@stop.believing"}' + headers: + Accept: + - application/json + Content-Type: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '13' + X-Ratelimit-Remaining: + - '95' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"aab6fb98fce246bc3c396e5a16a90ccd"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - bced80d4-d98c-4ede-ad6c-2b77eb449b68 + X-Runtime: + - '0.273897' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":673,"kind":"company","created_at":1510666591,"full_name":"Test_OCP","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"AU","phone_1":null,"phone_2":null,"fax":null,"email":"dont@stop.believing","web":null,"discount":null,"tax_id":"","vat_number":"518247535567","language":"ES","notes":null,"secure_id":"e69d905b6d7990fbe32ed21efdfb9ac8f591b91c","permalink":"http://quaderno.lvh.me:3000/billing/e69d905b6d7990fbe32ed21efdfb9ac8f591b91c","url":"http://quaderno.lvh.me:3000/api/contacts/673"}' + http_version: + recorded_at: Thu, 21 Dec 2017 11:23:14 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/updated_contact_by_access_token.yml b/spec/fixtures/quaderno_cassettes/updated_contact_by_access_token.yml new file mode 100644 index 0000000..abe1cf2 --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/updated_contact_by_access_token.yml @@ -0,0 +1,271 @@ +--- +http_interactions: +- request: + method: get + uri: http://quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + Authorization: + - Bearer afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0 + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '12' + X-Ratelimit-Remaining: + - '97' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"6085e26aae2e0244a9e122a426c42cad"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 783af899-8000-437a-a0b8-57db9b47bd45 + X-Runtime: + - '1.223245' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY4MCwia2luZCI6ImNvbXBhbnkiLCJj + cmVhdGVkX2F0IjoxNTEzNzcxNTY0LCJmdWxsX25hbWUiOiJGcmFuw6dvaXNl + IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJz + dHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6 + bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIiLCJwaG9uZV8xIjpu + dWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3 + ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVt + YmVyIjpudWxsLCJsYW5ndWFnZSI6IkZSIiwibm90ZXMiOm51bGwsInNlY3Vy + ZV9pZCI6IjA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZjMTkwMjMz + MTgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YmlsbGluZy8wN2FhZDMzNWVhNGEyOGZlY2U3OTljOTU5NDAxM2U2YzE5MDIz + MzE4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9j + b250YWN0cy82ODAifSx7ImlkIjo2NzEsImtpbmQiOiJjb21wYW55IiwiY3Jl + YXRlZF9hdCI6MTUxMDY1NDM5NSwiZnVsbF9uYW1lIjoiSmFtZXMiLCJjb250 + YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJlciI6 + bnVsbCwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQi + OiJmMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2ODY2ODg2Iiwi + cGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxp + bmcvZjI3ODNjYjU3ODYwYzhiZmUzNDM2ODNlZGQ2YzUyZGEyNjg2Njg4NiIs + InVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFj + dHMvNjcxIn0seyJpZCI6NjcyLCJraW5kIjoiY29tcGFueSIsImNyZWF0ZWRf + YXQiOjE1MTA2NTQ3MDYsImZ1bGxfbmFtZSI6IkphbWVzIiwiY29udGFjdF9u + YW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpudWxsLCJzdHJlZXRfbGluZV8y + IjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9u + IjpudWxsLCJjb3VudHJ5IjoiQVUiLCJwaG9uZV8xIjpudWxsLCJwaG9uZV8y + IjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpudWxsLCJ3ZWIiOm51bGwsImRp + c2NvdW50IjpudWxsLCJ0YXhfaWQiOm51bGwsInZhdF9udW1iZXIiOiIxMjA0 + MjE2ODc0MyIsImxhbmd1YWdlIjoiRU4iLCJub3RlcyI6bnVsbCwic2VjdXJl + X2lkIjoiMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNjZWZmOTNmNTJl + MyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9i + aWxsaW5nLzA2YWI4YzNjYmVlODI4YTgwM2ZjNmQ0YjRlMWZjY2VmZjkzZjUy + ZTMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2Nv + bnRhY3RzLzY3MiJ9LHsiaWQiOjY3NSwia2luZCI6InBlcnNvbiIsImNyZWF0 + ZWRfYXQiOjE1MTMwNzYyNTYsImZpcnN0X25hbWUiOiJKYW1lcyIsImxhc3Rf + bmFtZSI6IkpveWNlIiwiZnVsbF9uYW1lIjoiSmFtZXMgSm95Y2UiLCJzdHJl + ZXRfbGluZV8xIjoiQ2hlYXBzaWRlIDEwNyIsInN0cmVldF9saW5lXzIiOiI5 + dGggZmxvb3IiLCJwb3N0YWxfY29kZSI6IkVDMlYgNkROIiwiY2l0eSI6Ikxv + bmRvbiIsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkdCIiwicGhvbmVfMSI6 + bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVsbCwi + d2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0X251 + bWJlciI6IkdCMjIyMTYxNzUxIiwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpu + dWxsLCJzZWN1cmVfaWQiOiI5NDYwODVkZTVhNTVhZTUyZGY3NWQ3OTM4ZTNl + NzdkYmIwZWQ0OTI1IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2JpbGxpbmcvOTQ2MDg1ZGU1YTU1YWU1MmRmNzVkNzkzOGUz + ZTc3ZGJiMGVkNDkyNSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9hcGkvY29udGFjdHMvNjc1In0seyJpZCI6NjY4LCJraW5kIjoiY29t + cGFueSIsImNyZWF0ZWRfYXQiOjE1MTAwNDk2NzksImZ1bGxfbmFtZSI6Ikpp + bWJvd3p6IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8xIjpu + dWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVsbCwi + Y2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiR0IiLCJwaG9u + ZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpu + dWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2 + YXRfbnVtYmVyIjoiR0I1MzE1MjUxNzciLCJsYW5ndWFnZSI6IkVOIiwibm90 + ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NTQ4NjM2NTY1NzJjMTYwN2NlNjli + MTJjZjcyYjUwMTgxZDczNmEiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDU0ODYzNjU2NTcyYzE2MDdjZTY5 + YjEyY2Y3MmI1MDE4MWQ3MzZhIiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2FwaS9jb250YWN0cy82NjgifSx7ImlkIjo2NzQsImtpbmQi + OiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDgyNzI0OSwiZnVsbF9uYW1l + IjoiTUlndWVsIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRVMiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291bnQiOm51bGwsImxhbmd1 + YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiZDZkN2ZmN2Q0 + Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInBlcm1hbGluayI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nL2Q2ZDdmZjdk + NGM4NjQwOWFhOWQ3YjkwNGQ2OGE0MTlkMGM1N2I4NzYiLCJ1cmwiOiJodHRw + Oi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY3NCJ9LHsi + aWQiOjY3Niwia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMwNzgw + ODIsImZpcnN0X25hbWUiOiJQYXVsIiwibGFzdF9uYW1lIjoiSG9nYW4iLCJm + dWxsX25hbWUiOiJQYXVsIEhvZ2FuIiwic3RyZWV0X2xpbmVfMSI6bnVsbCwi + c3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOiIyMTE0IiwiY2l0 + eSI6bnVsbCwicmVnaW9uIjoiTlNXIiwiY291bnRyeSI6IkFVIiwicGhvbmVf + MSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVs + bCwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0 + X251bWJlciI6IjQ5MTY1ODUyMzYyIiwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVz + IjpudWxsLCJzZWN1cmVfaWQiOiI2ZWJiNzAwZWEzNWE5YjgyZDY2YzcwZTM1 + YmJmZDM0ZmM1ODJmZTY4IiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2JpbGxpbmcvNmViYjcwMGVhMzVhOWI4MmQ2NmM3MGUz + NWJiZmQzNGZjNTgyZmU2OCIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9hcGkvY29udGFjdHMvNjc2In0seyJpZCI6NjczLCJraW5kIjoi + Y29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTA2NjY1OTEsImZ1bGxfbmFtZSI6 + IlRlc3RfT0NQIiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiQVUiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjoiZG9udEBzdG9wLmJlbGlldmluZyIsIndlYiI6bnVsbCwiZGlzY291bnQi + Om51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiI1MTgyNDc1MzU1Njci + LCJsYW5ndWFnZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImU2 + OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4ZjU5MWI5MWMiLCJwZXJt + YWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9l + NjlkOTA1YjZkNzk5MGZiZTMyZWQyMWVmZGZiOWFjOGY1OTFiOTFjIiwidXJs + IjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82 + NzMifSx7ImlkIjo2NzksImtpbmQiOiJwZXJzb24iLCJjcmVhdGVkX2F0Ijox + NTEzNzcxNTQ0LCJmaXJzdF9uYW1lIjoiVGVzdF9PQ1AiLCJsYXN0X25hbWUi + Om51bGwsImZ1bGxfbmFtZSI6IlRlc3RfT0NQIiwic3RyZWV0X2xpbmVfMSI6 + bnVsbCwic3RyZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGws + ImNpdHkiOm51bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkVTIiwicGhv + bmVfMSI6bnVsbCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6 + ImRvbnRAc3RvcC5iZWxpZXZpbmciLCJ3ZWIiOm51bGwsImRpc2NvdW50Ijpu + dWxsLCJ0YXhfaWQiOiIiLCJ2YXRfbnVtYmVyIjpudWxsLCJiYW5rX2FjY291 + bnQiOm51bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJl + X2lkIjoiYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEzY2UxZWQzZmUyNTNh + MCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9i + aWxsaW5nL2M1YjMxMjkzMzc2NzQ2MWFlZTA1OTZiMTUxM2NlMWVkM2ZlMjUz + YTAiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2Nv + bnRhY3RzLzY3OSJ9LHsiaWQiOjY4MSwia2luZCI6ImNvbXBhbnkiLCJjcmVh + dGVkX2F0IjoxNTEzODU1MzkzLCJmdWxsX25hbWUiOiJUZXN0X1NreW5ldCIs + ImNvbnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3Ry + ZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51 + bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVs + bCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6Im15X2xpdHRs + ZUBwby5ueSIsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + bnVsbCwidmF0X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVz + IjpudWxsLCJzZWN1cmVfaWQiOiIxMzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNj + ZTNmZmNhMzU5ZjU3NTQxIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2JpbGxpbmcvMTM4YTcyZmFlMzI5MjY5ODM0NGMyY2Rj + Y2UzZmZjYTM1OWY1NzU0MSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgu + bWU6MzAwMC9hcGkvY29udGFjdHMvNjgxIn0seyJpZCI6NjgzLCJraW5kIjoi + Y29tcGFueSIsImNyZWF0ZWRfYXQiOjE1MTM4NTU5MjMsImZ1bGxfbmFtZSI6 + IlRlc3RfU2t5bmV0IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGlu + ZV8xIjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6 + bnVsbCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIi + LCJwaG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVt + YWlsIjoibXlfbGl0dGxlQHBvLm55Iiwid2ViIjpudWxsLCJkaXNjb3VudCI6 + bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVtYmVyIjpudWxsLCJsYW5ndWFn + ZSI6IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImFjNTA0MWQ5N2E5 + MGQyMzMzMjI3OGM1MTQ4NjIxNWI1YmNhNzg3YzEiLCJwZXJtYWxpbmsiOiJo + dHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9hYzUwNDFkOTdh + OTBkMjMzMzIyNzhjNTE0ODYyMTViNWJjYTc4N2MxIiwidXJsIjoiaHR0cDov + L3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82ODMifSx7Imlk + Ijo2ODUsImtpbmQiOiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMzg2MzM4 + OCwiZnVsbF9uYW1lIjoiVGVzdF9Ta3luZXQiLCJjb250YWN0X25hbWUiOm51 + bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGws + InBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGws + ImNvdW50cnkiOiJGUiIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGws + ImZheCI6bnVsbCwiZW1haWwiOiJteV9saXR0bGVAcG8ubnkiLCJ3ZWIiOm51 + bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOm51bGwsInZhdF9udW1iZXIi + Om51bGwsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lk + IjoiZDJkYWQyZGEwNzQ0MGU2ZGNkMmRkNjRiOTE0ZGY1NGJhNTBkOGIyZSIs + InBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxs + aW5nL2QyZGFkMmRhMDc0NDBlNmRjZDJkZDY0YjkxNGRmNTRiYTUwZDhiMmUi + LCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRh + Y3RzLzY4NSJ9XQ== + http_version: + recorded_at: Thu, 21 Dec 2017 13:36:29 GMT +- request: + method: put + uri: http://quaderno.lvh.me:3000/api/contacts/680.json + body: + encoding: UTF-8 + string: '{"first_name":"Test_OCP","email":"dont@stop.believing"}' + headers: + Accept: + - application/json + Authorization: + - Bearer afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0 + Content-Type: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '11' + X-Ratelimit-Remaining: + - '96' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"60ffd9085b6688ce4001867fe34e8333"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 4006124f-bfc6-494e-b38f-1b80e8f34ce7 + X-Runtime: + - '0.975398' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":680,"kind":"company","created_at":1513771564,"full_name":"Test_OCP","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"FR","phone_1":null,"phone_2":null,"fax":null,"email":"dont@stop.believing","web":null,"discount":null,"tax_id":"","vat_number":null,"language":"FR","notes":null,"secure_id":"07aad335ea4a28fece799c9594013e6c19023318","permalink":"http://quaderno.lvh.me:3000/billing/07aad335ea4a28fece799c9594013e6c19023318","url":"http://quaderno.lvh.me:3000/api/contacts/680"}' + http_version: + recorded_at: Thu, 21 Dec 2017 13:36:30 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/fixtures/quaderno_cassettes/updated_contact_by_authentication_token.yml b/spec/fixtures/quaderno_cassettes/updated_contact_by_authentication_token.yml new file mode 100644 index 0000000..8f8bde8 --- /dev/null +++ b/spec/fixtures/quaderno_cassettes/updated_contact_by_authentication_token.yml @@ -0,0 +1,254 @@ +--- +http_interactions: +- request: + method: get + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts.json + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '14' + X-Ratelimit-Remaining: + - '96' + X-Pages-Currentpage: + - '1' + X-Pages-Totalpages: + - '1' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"eb0168984fcdc6c4a40c40893aed757d"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 7536bb9b-f75f-4d5e-889f-1cfba35fa0eb + X-Runtime: + - '0.287532' + Connection: + - close + Server: + - thin + body: + encoding: ASCII-8BIT + string: !binary |- + W3siaWQiOjY3Nywia2luZCI6InBlcnNvbiIsImNyZWF0ZWRfYXQiOjE1MTMw + NzgyNzgsImZpcnN0X25hbWUiOiJhc2Rhc2QiLCJsYXN0X25hbWUiOiJzZGFz + ZCIsImZ1bGxfbmFtZSI6ImFzZGFzZCBzZGFzZCIsInN0cmVldF9saW5lXzEi + Om51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjoiMjIw + NiIsImNpdHkiOm51bGwsInJlZ2lvbiI6Ik5TVyIsImNvdW50cnkiOiJBVSIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IjUwIDEyMCAyNzYgNDMxIiwidmF0X251bWJlciI6IjkxMTM0OTk4MDIwIiwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiIwMDc5 + ZGQ4ZmMxMWU5M2NiNzZhZmEzNmZmNWQ4ZTEwOGMyNzMyNjgyIiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvMDA3 + OWRkOGZjMTFlOTNjYjc2YWZhMzZmZjVkOGUxMDhjMjczMjY4MiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc3 + In0seyJpZCI6Njc4LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzU5NDI0NCwiZmlyc3RfbmFtZSI6IkRhcGhuZSIsImxhc3RfbmFtZSI6bnVs + bCwiZnVsbF9uYW1lIjoiRGFwaG5lIiwic3RyZWV0X2xpbmVfMSI6IjlUSCBG + TE9PUiAxMDcgQ0hFQVBTSURFIExPTkRPTiBFQzJWIDZETiIsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOiJH + QjIyMjE2MTc1MSIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2Vj + dXJlX2lkIjoiN2I4ZTZjMWU0YjhiNzkzMTUyMzEyZDdiZTY1YTY0ZWZjNTg0 + Y2EzMyIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9iaWxsaW5nLzdiOGU2YzFlNGI4Yjc5MzE1MjMxMmQ3YmU2NWE2NGVmYzU4 + NGNhMzMiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBp + L2NvbnRhY3RzLzY3OCJ9LHsiaWQiOjY3OSwia2luZCI6InBlcnNvbiIsImNy + ZWF0ZWRfYXQiOjE1MTM3NzE1NDQsImZpcnN0X25hbWUiOiJFbCBDaWQgT3du + ZWFkb3IiLCJsYXN0X25hbWUiOm51bGwsImZ1bGxfbmFtZSI6IkVsIENpZCBP + d25lYWRvciIsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIi + Om51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24i + Om51bGwsImNvdW50cnkiOiJFUyIsInBob25lXzEiOm51bGwsInBob25lXzIi + Om51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlz + Y291bnQiOm51bGwsInRheF9pZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImJh + bmtfYWNjb3VudCI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxs + LCJzZWN1cmVfaWQiOiJjNWIzMTI5MzM3Njc0NjFhZWUwNTk2YjE1MTNjZTFl + ZDNmZTI1M2EwIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5t + ZTozMDAwL2JpbGxpbmcvYzViMzEyOTMzNzY3NDYxYWVlMDU5NmIxNTEzY2Ux + ZWQzZmUyNTNhMCIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAw + MC9hcGkvY29udGFjdHMvNjc5In0seyJpZCI6NjgwLCJraW5kIjoiY29tcGFu + eSIsImNyZWF0ZWRfYXQiOjE1MTM3NzE1NjQsImZ1bGxfbmFtZSI6IkZyYW7D + p29pc2UiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51 + bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJj + aXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJGUiIsInBob25l + XzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51 + bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6IiIsInZh + dF9udW1iZXIiOm51bGwsImxhbmd1YWdlIjoiRlIiLCJub3RlcyI6bnVsbCwi + c2VjdXJlX2lkIjoiMDdhYWQzMzVlYTRhMjhmZWNlNzk5Yzk1OTQwMTNlNmMx + OTAyMzMxOCIsInBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9iaWxsaW5nLzA3YWFkMzM1ZWE0YTI4ZmVjZTc5OWM5NTk0MDEzZTZj + MTkwMjMzMTgiLCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YXBpL2NvbnRhY3RzLzY4MCJ9LHsiaWQiOjY3MSwia2luZCI6ImNvbXBhbnki + LCJjcmVhdGVkX2F0IjoxNTEwNjU0Mzk1LCJmdWxsX25hbWUiOiJKYW1lcyIs + ImNvbnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3Ry + ZWV0X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51 + bGwsInJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkFVIiwicGhvbmVfMSI6bnVs + bCwicGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6bnVsbCwid2Vi + IjpudWxsLCJkaXNjb3VudCI6bnVsbCwidGF4X2lkIjpudWxsLCJ2YXRfbnVt + YmVyIjpudWxsLCJsYW5ndWFnZSI6IkVOIiwibm90ZXMiOm51bGwsInNlY3Vy + ZV9pZCI6ImYyNzgzY2I1Nzg2MGM4YmZlMzQzNjgzZWRkNmM1MmRhMjY4NjY4 + ODYiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAv + YmlsbGluZy9mMjc4M2NiNTc4NjBjOGJmZTM0MzY4M2VkZDZjNTJkYTI2ODY2 + ODg2IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9j + b250YWN0cy82NzEifSx7ImlkIjo2NzIsImtpbmQiOiJjb21wYW55IiwiY3Jl + YXRlZF9hdCI6MTUxMDY1NDcwNiwiZnVsbF9uYW1lIjoiSmFtZXMiLCJjb250 + YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5lXzEiOm51bGwsInN0cmVldF9s + aW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpudWxsLCJjaXR5IjpudWxsLCJy + ZWdpb24iOm51bGwsImNvdW50cnkiOiJBVSIsInBob25lXzEiOm51bGwsInBo + b25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1haWwiOm51bGwsIndlYiI6bnVs + bCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVsbCwidmF0X251bWJlciI6 + IjEyMDQyMTY4NzQzIiwibGFuZ3VhZ2UiOiJFTiIsIm5vdGVzIjpudWxsLCJz + ZWN1cmVfaWQiOiIwNmFiOGMzY2JlZTgyOGE4MDNmYzZkNGI0ZTFmY2NlZmY5 + M2Y1MmUzIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZToz + MDAwL2JpbGxpbmcvMDZhYjhjM2NiZWU4MjhhODAzZmM2ZDRiNGUxZmNjZWZm + OTNmNTJlMyIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9h + cGkvY29udGFjdHMvNjcyIn0seyJpZCI6Njc1LCJraW5kIjoicGVyc29uIiwi + Y3JlYXRlZF9hdCI6MTUxMzA3NjI1NiwiZmlyc3RfbmFtZSI6IkphbWVzIiwi + bGFzdF9uYW1lIjoiSm95Y2UiLCJmdWxsX25hbWUiOiJKYW1lcyBKb3ljZSIs + InN0cmVldF9saW5lXzEiOiJDaGVhcHNpZGUgMTA3Iiwic3RyZWV0X2xpbmVf + MiI6Ijl0aCBmbG9vciIsInBvc3RhbF9jb2RlIjoiRUMyViA2RE4iLCJjaXR5 + IjoiTG9uZG9uIiwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiR0IiLCJwaG9u + ZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWlsIjpu + dWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIiLCJ2 + YXRfbnVtYmVyIjoiR0IyMjIxNjE3NTEiLCJsYW5ndWFnZSI6IkVOIiwibm90 + ZXMiOm51bGwsInNlY3VyZV9pZCI6Ijk0NjA4NWRlNWE1NWFlNTJkZjc1ZDc5 + MzhlM2U3N2RiYjBlZDQ5MjUiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYmlsbGluZy85NDYwODVkZTVhNTVhZTUyZGY3NWQ3 + OTM4ZTNlNzdkYmIwZWQ0OTI1IiwidXJsIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2FwaS9jb250YWN0cy82NzUifSx7ImlkIjo2NjgsImtpbmQi + OiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDA0OTY3OSwiZnVsbF9uYW1l + IjoiSmltYm93enoiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9saW5l + XzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2RlIjpu + dWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJHQiIs + InBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwiZW1h + aWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6 + IiIsInZhdF9udW1iZXIiOiJHQjUzMTUyNTE3NyIsImxhbmd1YWdlIjoiRU4i + LCJub3RlcyI6bnVsbCwic2VjdXJlX2lkIjoiOTQ1NDg2MzY1NjU3MmMxNjA3 + Y2U2OWIxMmNmNzJiNTAxODFkNzM2YSIsInBlcm1hbGluayI6Imh0dHA6Ly9x + dWFkZXJuby5sdmgubWU6MzAwMC9iaWxsaW5nLzk0NTQ4NjM2NTY1NzJjMTYw + N2NlNjliMTJjZjcyYjUwMTgxZDczNmEiLCJ1cmwiOiJodHRwOi8vcXVhZGVy + bm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRhY3RzLzY2OCJ9LHsiaWQiOjY3NCwi + a2luZCI6ImNvbXBhbnkiLCJjcmVhdGVkX2F0IjoxNTEwODI3MjQ5LCJmdWxs + X25hbWUiOiJNSWd1ZWwiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9s + aW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2Rl + IjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJF + UyIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwi + ZW1haWwiOm51bGwsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9p + ZCI6IiIsInZhdF9udW1iZXIiOm51bGwsImJhbmtfYWNjb3VudCI6bnVsbCwi + bGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpudWxsLCJzZWN1cmVfaWQiOiJkNmQ3 + ZmY3ZDRjODY0MDlhYTlkN2I5MDRkNjhhNDE5ZDBjNTdiODc2IiwicGVybWFs + aW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2aC5tZTozMDAwL2JpbGxpbmcvZDZk + N2ZmN2Q0Yzg2NDA5YWE5ZDdiOTA0ZDY4YTQxOWQwYzU3Yjg3NiIsInVybCI6 + Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9hcGkvY29udGFjdHMvNjc0 + In0seyJpZCI6Njc2LCJraW5kIjoicGVyc29uIiwiY3JlYXRlZF9hdCI6MTUx + MzA3ODA4MiwiZmlyc3RfbmFtZSI6IlBhdWwiLCJsYXN0X25hbWUiOiJIb2dh + biIsImZ1bGxfbmFtZSI6IlBhdWwgSG9nYW4iLCJzdHJlZXRfbGluZV8xIjpu + dWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6IjIxMTQi + LCJjaXR5IjpudWxsLCJyZWdpb24iOiJOU1ciLCJjb3VudHJ5IjoiQVUiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjpudWxsLCJ3ZWIiOm51bGwsImRpc2NvdW50IjpudWxsLCJ0YXhfaWQiOiIi + LCJ2YXRfbnVtYmVyIjoiNDkxNjU4NTIzNjIiLCJsYW5ndWFnZSI6IkVTIiwi + bm90ZXMiOm51bGwsInNlY3VyZV9pZCI6IjZlYmI3MDBlYTM1YTliODJkNjZj + NzBlMzViYmZkMzRmYzU4MmZlNjgiLCJwZXJtYWxpbmsiOiJodHRwOi8vcXVh + ZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy82ZWJiNzAwZWEzNWE5YjgyZDY2 + YzcwZTM1YmJmZDM0ZmM1ODJmZTY4IiwidXJsIjoiaHR0cDovL3F1YWRlcm5v + Lmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82NzYifSx7ImlkIjo2NzMsImtp + bmQiOiJjb21wYW55IiwiY3JlYXRlZF9hdCI6MTUxMDY2NjU5MSwiZnVsbF9u + YW1lIjoiVGVzdF9PQ1AiLCJjb250YWN0X25hbWUiOm51bGwsInN0cmVldF9s + aW5lXzEiOm51bGwsInN0cmVldF9saW5lXzIiOm51bGwsInBvc3RhbF9jb2Rl + IjpudWxsLCJjaXR5IjpudWxsLCJyZWdpb24iOm51bGwsImNvdW50cnkiOiJB + VSIsInBob25lXzEiOm51bGwsInBob25lXzIiOm51bGwsImZheCI6bnVsbCwi + ZW1haWwiOiJkb250QHN0b3AuYmVsaWV2aW5nIiwid2ViIjpudWxsLCJkaXNj + b3VudCI6bnVsbCwidGF4X2lkIjoiIiwidmF0X251bWJlciI6IjUxODI0NzUz + NTU2NyIsImxhbmd1YWdlIjoiRVMiLCJub3RlcyI6bnVsbCwic2VjdXJlX2lk + IjoiZTY5ZDkwNWI2ZDc5OTBmYmUzMmVkMjFlZmRmYjlhYzhmNTkxYjkxYyIs + InBlcm1hbGluayI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6MzAwMC9iaWxs + aW5nL2U2OWQ5MDViNmQ3OTkwZmJlMzJlZDIxZWZkZmI5YWM4ZjU5MWI5MWMi + LCJ1cmwiOiJodHRwOi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYXBpL2NvbnRh + Y3RzLzY3MyJ9LHsiaWQiOjY4MSwia2luZCI6ImNvbXBhbnkiLCJjcmVhdGVk + X2F0IjoxNTEzODU1MzkzLCJmdWxsX25hbWUiOiJUZXN0X1NreW5ldCIsImNv + bnRhY3RfbmFtZSI6bnVsbCwic3RyZWV0X2xpbmVfMSI6bnVsbCwic3RyZWV0 + X2xpbmVfMiI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsImNpdHkiOm51bGws + InJlZ2lvbiI6bnVsbCwiY291bnRyeSI6IkZSIiwicGhvbmVfMSI6bnVsbCwi + cGhvbmVfMiI6bnVsbCwiZmF4IjpudWxsLCJlbWFpbCI6Im15X2xpdHRsZUBw + by5ueSIsIndlYiI6bnVsbCwiZGlzY291bnQiOm51bGwsInRheF9pZCI6bnVs + bCwidmF0X251bWJlciI6bnVsbCwibGFuZ3VhZ2UiOiJFUyIsIm5vdGVzIjpu + dWxsLCJzZWN1cmVfaWQiOiIxMzhhNzJmYWUzMjkyNjk4MzQ0YzJjZGNjZTNm + ZmNhMzU5ZjU3NTQxIiwicGVybWFsaW5rIjoiaHR0cDovL3F1YWRlcm5vLmx2 + aC5tZTozMDAwL2JpbGxpbmcvMTM4YTcyZmFlMzI5MjY5ODM0NGMyY2RjY2Uz + ZmZjYTM1OWY1NzU0MSIsInVybCI6Imh0dHA6Ly9xdWFkZXJuby5sdmgubWU6 + MzAwMC9hcGkvY29udGFjdHMvNjgxIn0seyJpZCI6NjgzLCJraW5kIjoiY29t + cGFueSIsImNyZWF0ZWRfYXQiOjE1MTM4NTU5MjMsImZ1bGxfbmFtZSI6IlRl + c3RfU2t5bmV0IiwiY29udGFjdF9uYW1lIjpudWxsLCJzdHJlZXRfbGluZV8x + IjpudWxsLCJzdHJlZXRfbGluZV8yIjpudWxsLCJwb3N0YWxfY29kZSI6bnVs + bCwiY2l0eSI6bnVsbCwicmVnaW9uIjpudWxsLCJjb3VudHJ5IjoiRlIiLCJw + aG9uZV8xIjpudWxsLCJwaG9uZV8yIjpudWxsLCJmYXgiOm51bGwsImVtYWls + IjoibXlfbGl0dGxlQHBvLm55Iiwid2ViIjpudWxsLCJkaXNjb3VudCI6bnVs + bCwidGF4X2lkIjpudWxsLCJ2YXRfbnVtYmVyIjpudWxsLCJsYW5ndWFnZSI6 + IkVTIiwibm90ZXMiOm51bGwsInNlY3VyZV9pZCI6ImFjNTA0MWQ5N2E5MGQy + MzMzMjI3OGM1MTQ4NjIxNWI1YmNhNzg3YzEiLCJwZXJtYWxpbmsiOiJodHRw + Oi8vcXVhZGVybm8ubHZoLm1lOjMwMDAvYmlsbGluZy9hYzUwNDFkOTdhOTBk + MjMzMzIyNzhjNTE0ODYyMTViNWJjYTc4N2MxIiwidXJsIjoiaHR0cDovL3F1 + YWRlcm5vLmx2aC5tZTozMDAwL2FwaS9jb250YWN0cy82ODMifV0= + http_version: + recorded_at: Thu, 21 Dec 2017 11:32:04 GMT +- request: + method: put + uri: http://sk_test_bMz9mJJ5bZnWPwWGuV8y:@quaderno.lvh.me:3000/api/contacts/679.json + body: + encoding: UTF-8 + string: '{"first_name":"Test_OCP","email":"dont@stop.believing"}' + headers: + Accept: + - application/json + Content-Type: + - application/json + response: + status: + code: 200 + message: OK + headers: + X-Frame-Options: + - ALLOWALL + X-Ratelimit-Limit: + - '2000' + X-Ratelimit-Reset: + - '14' + X-Ratelimit-Remaining: + - '95' + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"963258470af5e14ede5a0f60baff74ff"' + Cache-Control: + - max-age=0, private, must-revalidate + X-Request-Id: + - 54e1d5e0-690b-4066-a38a-f924646399e8 + X-Runtime: + - '0.271096' + Connection: + - close + Server: + - thin + body: + encoding: UTF-8 + string: '{"id":679,"kind":"person","created_at":1513771544,"first_name":"Test_OCP","last_name":null,"full_name":"Test_OCP","street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"dont@stop.believing","web":null,"discount":null,"tax_id":"","vat_number":null,"bank_account":null,"language":"ES","notes":null,"secure_id":"c5b312933767461aee0596b1513ce1ed3fe253a0","permalink":"http://quaderno.lvh.me:3000/billing/c5b312933767461aee0596b1513ce1ed3fe253a0","url":"http://quaderno.lvh.me:3000/api/contacts/679"}' + http_version: + recorded_at: Thu, 21 Dec 2017 11:32:04 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/helper.rb b/spec/helper.rb new file mode 100644 index 0000000..d6802df --- /dev/null +++ b/spec/helper.rb @@ -0,0 +1,20 @@ +$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) +$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) +$LOAD_PATH.unshift(File.dirname(__FILE__)) + +require 'quaderno-ruby' +require 'vcr' +require 'webmock/rspec' + +VCR.configure do |c| + c.allow_http_connections_when_no_cassette = true + c.cassette_library_dir = 'spec/fixtures/quaderno_cassettes' + c.ignore_localhost = false + c.hook_into :webmock +end + +TEST_URL = 'http://quaderno.lvh.me:3000/api/' +TEST_KEY = 'sk_test_bMz9mJJ5bZnWPwWGuV8y' +TEST_OAUTH_ACCESS_TOKEN = 'afa16c7478f0ba3be222e627c2571d4dd5dca47924996b13a3af377feca47ff0' +OLDEST_SUPPORTED_API_VERSION = 20160602 + diff --git a/spec/unit/test_quaderno_contacts.rb b/spec/unit/test_quaderno_contacts.rb new file mode 100644 index 0000000..f22f0de --- /dev/null +++ b/spec/unit/test_quaderno_contacts.rb @@ -0,0 +1,166 @@ +require 'helper' + +describe Quaderno::Contact do + + context 'using the default configuration with an authentication token' do + before(:each) do + Quaderno::Base.configure do |config| + config.auth_token = TEST_KEY + config.url = TEST_URL + config.api_version = nil + end + end + + it 'should get all contacts (populated db)' do + VCR.use_cassette('all contacts') do + contacts = Quaderno::Contact.all + expect(contacts.empty?).to be false + expect(contacts.is_a? Array).to be true + contacts.each { |contact| expect(contact.is_a?(Quaderno::Contact)).to be true } + end + end + + it 'should find a contact' do + VCR.use_cassette('found contact') do + contacts = Quaderno::Contact.all + contact = Quaderno::Contact.find contacts[2].id + expect(contact.is_a?(Quaderno::Contact)).to be true + expect(contacts[2].id).to eq contact.id + end + end + + it 'should create a contact' do + VCR.use_cassette('new contact') do + contact = Quaderno::Contact.create(kind: 'company', first_name: 'Test_Skynet', email: 'my_little@po.ny') + expect(contact.is_a?(Quaderno::Contact)).to be true + expect(contact.kind).to eq 'company' + expect(contact.full_name).to eq 'Test_Skynet' + end + end + + it 'should update a contact' do + VCR.use_cassette('updated contact') do + contacts = Quaderno::Contact.all + contact = Quaderno::Contact.update(contacts[2].id, first_name: 'Test_OCP', email: 'dont@stop.believing') + expect(contact.is_a?(Quaderno::Contact)).to be true + expect(contact.first_name || contact.full_name).to eq 'Test_OCP' + end + end + + it 'should delete a contact' do + VCR.use_cassette('deleted contact') do + new_contact = Quaderno::Contact.create(kind: 'company', first_name: 'Z, Mazinger Z', email: 'koji@kabuto.ftw') + contacts_before = Quaderno::Contact.all + contact_id = contacts_before.last.id + Quaderno::Contact.delete contact_id + contacts_after = Quaderno::Contact.all + expect(contacts_after.last.id).not_to eq contact_id + end + end + + it 'should know the rate limit' do + VCR.use_cassette('rate limit') do + rate_limit_info = Quaderno::Base.rate_limit_info + expect(rate_limit_info[:remaining] < 2000).to be true + end + end + end + + context 'using the thread-safe configuration' do + context 'with an authentication token' do + it 'should get all contacts (populated db)' do + VCR.use_cassette('all contacts by authentication token') do + contacts = Quaderno::Contact.all(api_url: TEST_URL, auth_token: TEST_KEY) + expect(contacts.is_a? Array).to be true + contacts.each { |contact| expect(contact.is_a?(Quaderno::Contact)).to be true } + end + end + + it 'should find a contact' do + VCR.use_cassette('found contact by authentication token') do + contacts = Quaderno::Contact.all(api_url: TEST_URL, auth_token: TEST_KEY) + contact = Quaderno::Contact.find contacts[2].id, api_url: TEST_URL, auth_token: TEST_KEY + expect(contact.is_a?(Quaderno::Contact)).to be true + expect(contacts[2].id).to eq contact.id + end + end + + it 'should create a contact' do + VCR.use_cassette('new contact by authentication token') do + contact = Quaderno::Contact.create(kind: 'company', first_name: 'Test_Skynet', email: 'my_little@po.ny', api_url: TEST_URL, auth_token: TEST_KEY) + expect(contact.is_a?(Quaderno::Contact)).to be true + expect(contact.kind).to eq 'company' + expect(contact.full_name).to eq 'Test_Skynet' + end + end + + it 'should update a contact' do + VCR.use_cassette('updated contact by authentication token') do + contacts = Quaderno::Contact.all(api_url: TEST_URL, auth_token: TEST_KEY) + contact = Quaderno::Contact.update(contacts[2].id, first_name: 'Test_OCP', email: 'dont@stop.believing', api_url: TEST_URL, auth_token: TEST_KEY) + expect(contact.is_a?(Quaderno::Contact)).to be true + expect(contact.first_name || contact.full_name).to eq 'Test_OCP' + end + end + + it 'should delete a contact' do + VCR.use_cassette('deleted contact by authentication token') do + new_contact = Quaderno::Contact.create(kind: 'company', first_name: 'Z, Mazinger Z', email: 'koji@kabuto.ftw', api_url: TEST_URL, auth_token: TEST_KEY) + contacts_before = Quaderno::Contact.all(api_url: TEST_URL, auth_token: TEST_KEY) + contact_id = contacts_before.last.id + Quaderno::Contact.delete contact_id, api_url: TEST_URL, auth_token: TEST_KEY + contacts_after = Quaderno::Contact.all(api_url: TEST_URL, auth_token: TEST_KEY) + expect(contacts_after.last.id).not_to eq contact_id + end + end + end + + context 'with an OAuth 2.0 access token' do + it 'should get all contacts (populated db)' do + VCR.use_cassette('all contacts by access token') do + contacts = Quaderno::Contact.all(api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) + expect(contacts.is_a? Array).to be true + contacts.each { |contact| expect(contact.is_a?(Quaderno::Contact)).to be true } + end + end + + it 'should find a contact' do + VCR.use_cassette('found contact by access token') do + contacts = Quaderno::Contact.all(api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) + contact = Quaderno::Contact.find contacts[2].id, api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN + expect(contact.is_a? Quaderno::Contact).to be true + expect(contacts[2].id).to eq contact.id + end + end + + it 'should create a contact' do + VCR.use_cassette('new contact by access token') do + contact = Quaderno::Contact.create(kind: 'company', first_name: 'Test_Skynet', email: 'my_little@po.ny', api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) + expect(contact.is_a? Quaderno::Contact).to be true + expect(contact.kind).to eq 'company' + expect(contact.full_name).to eq 'Test_Skynet' + end + end + + it 'should update a contact' do + VCR.use_cassette('updated contact by access token') do + contacts = Quaderno::Contact.all(api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) + contact = Quaderno::Contact.update(contacts[2].id, first_name: 'Test_OCP', email: 'dont@stop.believing', api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) + expect(contact.is_a?(Quaderno::Contact)).to be true + expect(contact.first_name || contact.full_name).to eq 'Test_OCP' + end + end + + it 'should delete a contact' do + VCR.use_cassette('deleted contact by access token') do + new_contact = Quaderno::Contact.create(kind: 'company', first_name: 'Z, Mazinger Z', email: 'koji@kabuto.ftw', api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) + contacts_before = Quaderno::Contact.all(api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) + contact_id = contacts_before.last.id + Quaderno::Contact.delete contact_id, api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN + contacts_after = Quaderno::Contact.all(api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) + expect(contacts_after.last.id).not_to eq contact_id + end + end + end + end +end \ No newline at end of file diff --git a/test/unit/test_quaderno_estimates.rb b/spec/unit/test_quaderno_estimates.rb similarity index 100% rename from test/unit/test_quaderno_estimates.rb rename to spec/unit/test_quaderno_estimates.rb diff --git a/test/unit/test_quaderno_evidences.rb b/spec/unit/test_quaderno_evidences.rb similarity index 100% rename from test/unit/test_quaderno_evidences.rb rename to spec/unit/test_quaderno_evidences.rb diff --git a/test/unit/test_quaderno_expenses.rb b/spec/unit/test_quaderno_expenses.rb similarity index 100% rename from test/unit/test_quaderno_expenses.rb rename to spec/unit/test_quaderno_expenses.rb diff --git a/test/unit/test_quaderno_invoices.rb b/spec/unit/test_quaderno_invoices.rb similarity index 100% rename from test/unit/test_quaderno_invoices.rb rename to spec/unit/test_quaderno_invoices.rb diff --git a/test/unit/test_quaderno_items.rb b/spec/unit/test_quaderno_items.rb similarity index 100% rename from test/unit/test_quaderno_items.rb rename to spec/unit/test_quaderno_items.rb diff --git a/test/unit/test_quaderno_receipts.rb b/spec/unit/test_quaderno_receipts.rb similarity index 100% rename from test/unit/test_quaderno_receipts.rb rename to spec/unit/test_quaderno_receipts.rb diff --git a/test/unit/test_quaderno_tax.rb b/spec/unit/test_quaderno_tax.rb similarity index 100% rename from test/unit/test_quaderno_tax.rb rename to spec/unit/test_quaderno_tax.rb diff --git a/test/unit/test_quaderno_webhooks.rb b/spec/unit/test_quaderno_webhooks.rb similarity index 100% rename from test/unit/test_quaderno_webhooks.rb rename to spec/unit/test_quaderno_webhooks.rb diff --git a/test/fixtures/quaderno_cassettes/.DS_Store b/test/fixtures/quaderno_cassettes/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 e - $stderr.puts e.message - $stderr.puts "Run `bundle install` to install missing gems" - exit e.status_code -end - -require 'vcr' -require 'test/unit' -require 'shoulda-context' -require 'quaderno-ruby' - -VCR.configure do |c| - c.cassette_library_dir = 'test/fixtures/quaderno_cassettes' - c.ignore_localhost = false - c.hook_into :fakeweb -end - -TEST_URL = 'http://development.lvh.me:3000/api/' -TEST_KEY = 'sk_test_B7xXrTspfeGukQqGN1pK' -TEST_OAUTH_ACCESS_TOKEN = '36b82411e6686581fe3d7d10fbe931a3fdc9265a353832f0e3ff6269bd319e12' -OLDEST_SUPPORTED_API_VERSION = 20160602 - -class Test::Unit::TestCase -end diff --git a/test/unit/test_quaderno_contacts.rb b/test/unit/test_quaderno_contacts.rb deleted file mode 100644 index 0f4f41c..0000000 --- a/test/unit/test_quaderno_contacts.rb +++ /dev/null @@ -1,83 +0,0 @@ -require 'helper' - -class TestQuadernoContact < Test::Unit::TestCase - - context 'using the default configuration with an authentication token' do - setup do - Quaderno::Base.configure do |config| - config.auth_token = TEST_KEY - config.url = TEST_URL - config.api_version = nil - end - end - - should 'get exception if pass wrong arguments' do - assert_raise ArgumentError do - VCR.use_cassette('all contacts') do - Quaderno::Contact.all 1, 2, 3 - end - end - assert_raise ArgumentError do - VCR.use_cassette('found contact') do - Quaderno::Contact.find - end - end - end - - should 'get all contacts (populated db)' do - VCR.use_cassette('all contacts') do - contacts = Quaderno::Contact.all - assert_not_nil contacts - assert_kind_of Array, contacts - contacts.each do |contact| - assert_kind_of Quaderno::Contact, contact - end - end - end - - should 'find a contact' do - VCR.use_cassette('found contact') do - contacts = Quaderno::Contact.all - contact = Quaderno::Contact.find contacts[2].id - assert_kind_of Quaderno::Contact, contact - assert_equal contacts[2].id, contact.id - end - end - - should 'create a contact' do - VCR.use_cassette('new contact') do - contact = Quaderno::Contact.create(kind: 'company', first_name: 'Test_Skynet', email: 'my_little@po.ny') - assert_kind_of Quaderno::Contact, contact - assert_equal 'company', contact.kind - assert_equal 'Test_Skynet', contact.full_name - end - end - - should 'update a contact' do - VCR.use_cassette('updated contact') do - contacts = Quaderno::Contact.all - contact = Quaderno::Contact.update(contacts[2].id, first_name: 'Test_OCP', email: 'dont@stop.believing') - assert_kind_of Quaderno::Contact, contact - assert_equal 'Test_OCP', contact.first_name || contact.full_name - end - end - - should 'delete a contact' do - VCR.use_cassette('deleted contact') do - new_contact = Quaderno::Contact.create(kind: 'company', first_name: 'Z, Mazinger Z', email: 'koji@kabuto.ftw') - contacts_before = Quaderno::Contact.all - contact_id = contacts_before.last.id - Quaderno::Contact.delete contact_id - contacts_after = Quaderno::Contact.all - assert_not_equal contacts_after.last.id, contact_id - end - end - - should 'know the rate limit' do - VCR.use_cassette('rate limit') do - rate_limit_info = Quaderno::Base.rate_limit_info - assert_operator rate_limit_info[:remaining], :< ,2000 - end - end - end -end \ No newline at end of file diff --git a/test/unit/test_quaderno_contacts_thread_safe.rb b/test/unit/test_quaderno_contacts_thread_safe.rb deleted file mode 100644 index f12f70a..0000000 --- a/test/unit/test_quaderno_contacts_thread_safe.rb +++ /dev/null @@ -1,104 +0,0 @@ -require 'helper' - -class TestQuadernoContactThreadSafe < Test::Unit::TestCase - context 'using the thread-safe configuration' do - context 'with an authentication token' do - should 'get all contacts (populated db)' do - VCR.use_cassette('all contacts by authentication token') do - puts Quaderno::Base.url - contacts = Quaderno::Contact.all(api_url: TEST_URL, auth_token: TEST_KEY) - assert_not_nil contacts - assert_kind_of Array, contacts - contacts.each { |contact| assert_kind_of Quaderno::Contact, contact } - end - end - - should 'find a contact' do - VCR.use_cassette('found contact by authentication token') do - contacts = Quaderno::Contact.all(api_url: TEST_URL, auth_token: TEST_KEY) - contact = Quaderno::Contact.find contacts[2].id, api_url: TEST_URL, auth_token: TEST_KEY - assert_kind_of Quaderno::Contact, contact - assert_equal contacts[2].id, contact.id - end - end - - should 'create a contact' do - VCR.use_cassette('new contact by authentication token') do - contact = Quaderno::Contact.create(kind: 'company', first_name: 'Test_Skynet', email: 'my_little@po.ny', api_url: TEST_URL, auth_token: TEST_KEY) - assert_kind_of Quaderno::Contact, contact - assert_equal 'company', contact.kind - assert_equal 'Test_Skynet', contact.full_name - end - end - - should 'update a contact' do - VCR.use_cassette('updated contact by authentication token') do - contacts = Quaderno::Contact.all(api_url: TEST_URL, auth_token: TEST_KEY) - contact = Quaderno::Contact.update(contacts[2].id, first_name: 'Test_OCP', email: 'dont@stop.believing', api_url: TEST_URL, auth_token: TEST_KEY) - assert_kind_of Quaderno::Contact, contact - assert_equal 'Test_OCP', contact.first_name || contact.full_name - end - end - - should 'delete a contact' do - VCR.use_cassette('deleted contact by authentication token') do - new_contact = Quaderno::Contact.create(kind: 'company', first_name: 'Z, Mazinger Z', email: 'koji@kabuto.ftw', api_url: TEST_URL, auth_token: TEST_KEY) - contacts_before = Quaderno::Contact.all(api_url: TEST_URL, auth_token: TEST_KEY) - contact_id = contacts_before.last.id - Quaderno::Contact.delete contact_id, api_url: TEST_URL, auth_token: TEST_KEY - contacts_after = Quaderno::Contact.all(api_url: TEST_URL, auth_token: TEST_KEY) - assert_not_equal contacts_after.last.id, contact_id - end - end - end - - context 'with an OAuth 2.0 access token' do - should 'get all contacts (populated db)' do - VCR.use_cassette('all contacts by access token') do - contacts = Quaderno::Contact.all(api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) - assert_not_nil contacts - assert_kind_of Array, contacts - contacts.each { |contact| assert_kind_of Quaderno::Contact, contact } - end - end - - should 'find a contact' do - VCR.use_cassette('found contact by access token') do - contacts = Quaderno::Contact.all(api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) - contact = Quaderno::Contact.find contacts[2].id, api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN - assert_kind_of Quaderno::Contact, contact - assert_equal contacts[2].id, contact.id - end - end - - should 'create a contact' do - VCR.use_cassette('new contact by access token') do - contact = Quaderno::Contact.create(kind: 'company', first_name: 'Test_Skynet', email: 'my_little@po.ny', api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) - assert_kind_of Quaderno::Contact, contact - assert_equal 'company', contact.kind - assert_equal 'Test_Skynet', contact.full_name - end - end - - should 'update a contact' do - VCR.use_cassette('updated contact by access token') do - contacts = Quaderno::Contact.all(api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) - contact = Quaderno::Contact.update(contacts[2].id, first_name: 'Test_OCP', email: 'dont@stop.believing', api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) - assert_kind_of Quaderno::Contact, contact - assert_equal 'Test_OCP', contact.first_name || contact.full_name - end - end - - should 'delete a contact' do - VCR.use_cassette('deleted contact by access token') do - new_contact = Quaderno::Contact.create(kind: 'company', first_name: 'Z, Mazinger Z', email: 'koji@kabuto.ftw', api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) - contacts_before = Quaderno::Contact.all(api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) - contact_id = contacts_before.last.id - Quaderno::Contact.delete contact_id, api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN - contacts_after = Quaderno::Contact.all(api_url: TEST_URL, access_token: TEST_OAUTH_ACCESS_TOKEN) - assert_not_equal contacts_after.last.id, contact_id - end - end - end - end -end \ No newline at end of file