From c057f10d0eadad60822de0276339dbc7bfe02803 Mon Sep 17 00:00:00 2001 From: Nora Alvarado Date: Fri, 26 Jan 2018 16:12:37 -0600 Subject: [PATCH 1/4] Add User Endpoint - Add endpoint to request a widget_id for the endorsables setup - Add specs - Update readme --- README.md | 16 ++++++++++++++++ lib/mifiel.rb | 1 + lib/mifiel/user.rb | 27 +++++++++++++++++++++++++++ spec/mifiel/user_spec.rb | 14 ++++++++++++++ spec/support/fake_mifiel.rb | 6 ++++++ 5 files changed, 64 insertions(+) create mode 100644 lib/mifiel/user.rb create mode 100644 spec/mifiel/user_spec.rb diff --git a/README.md b/README.md index a14311a..3751474 100644 --- a/README.md +++ b/README.md @@ -149,6 +149,22 @@ Certificate methods: certificate.delete ``` +User methods + +- Setup Widget + + ```ruby + args = { + email: 'some@email.com', + tax_id: 'AAA010101AAA', + callback_url: 'http://some-callback.url' + } + + user = Mifiel::User.create(args) + user.widget_id + ``` + + ## Contributing 1. Fork it ( https://github.com/[my-github-username]/mifiel/fork ) diff --git a/lib/mifiel.rb b/lib/mifiel.rb index fd24ef0..bc882fe 100644 --- a/lib/mifiel.rb +++ b/lib/mifiel.rb @@ -7,6 +7,7 @@ module Mifiel autoload :Certificate, 'mifiel/certificate' autoload :Template, 'mifiel/template' autoload :Config, 'mifiel/config' + autoload :User, 'mifiel/user' BASE_URL = 'https://www.mifiel.com/api/v1'.freeze diff --git a/lib/mifiel/user.rb b/lib/mifiel/user.rb new file mode 100644 index 0000000..63f67fc --- /dev/null +++ b/lib/mifiel/user.rb @@ -0,0 +1,27 @@ +module Mifiel + class User < Mifiel::Base + post :create, '/users/setup-widget' + + # rubocop:disable Metrics/MethodLength, Metrics/AbcSize + def self.create(args) + email = args[:email] + tax_id = args[:tax_id] + callback_url = args[:callback_url] + + raise ArgumentError, 'Email must be provided' unless email + raise ArgumentError, 'Tax id must be provided' unless tax_id + rest_request = RestClient::Request.new( + url: "#{Mifiel.config.base_url}/users/setup-widget", + method: :post, + payload: { + email: email, + tax_id: tax_id, + callback_url: callback_url + }, + ssl_version: 'SSLv23' + ) + req = ApiAuth.sign!(rest_request, Mifiel.config.app_id, Mifiel.config.app_secret) + Mifiel::User.new(JSON.parse(req.execute)) + end + end +end diff --git a/spec/mifiel/user_spec.rb b/spec/mifiel/user_spec.rb new file mode 100644 index 0000000..399b856 --- /dev/null +++ b/spec/mifiel/user_spec.rb @@ -0,0 +1,14 @@ +describe Mifiel::User do + describe '#create' do + let(:user) do + Mifiel::User.create( + email: 'user@email.com', + tax_id: 'AAA010101AAA', + callback_url: 'http://some-callback.url/mifiel' + ) + end + + it { expect(user.success).to be_truthy } + it { expect(user.widget_id).to_not be_nil } + end +end diff --git a/spec/support/fake_mifiel.rb b/spec/support/fake_mifiel.rb index 7e71f35..65b79a4 100644 --- a/spec/support/fake_mifiel.rb +++ b/spec/support/fake_mifiel.rb @@ -99,6 +99,12 @@ class FakeMifiel < Sinatra::Base { bla: 'Correo enviado' }.to_json end + post '/api/v1/users/setup-widget' do + content_type :json + status 200 + { widget_id: '123bc', success: true }.to_json + end + private def template(args = {}) From 491691ebaf910837ef7484aa69dc1215801d7b3e Mon Sep 17 00:00:00 2001 From: Nora Alvarado Date: Fri, 26 Jan 2018 16:14:36 -0600 Subject: [PATCH 2/4] Fix some rubocop warnings --- mifiel.gemspec | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mifiel.gemspec b/mifiel.gemspec index 48c8536..c49be61 100644 --- a/mifiel.gemspec +++ b/mifiel.gemspec @@ -1,9 +1,9 @@ -# coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) + require 'mifiel/version' -# rubocop:disable Metrics/BlockLength +# rubocop:disable Metrics/BlockLength, Layout/ExtraSpacing Gem::Specification.new do |spec| spec.name = 'mifiel' spec.version = Mifiel::VERSION @@ -19,9 +19,9 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.required_ruby_version = '~> 2.1' - spec.add_runtime_dependency 'rest-client', '>= 1.8' - spec.add_runtime_dependency 'json', '~> 1.8' spec.add_runtime_dependency 'api-auth', '~> 1.4' + spec.add_runtime_dependency 'json', '~> 1.8' + spec.add_runtime_dependency 'rest-client', '>= 1.8' # Use Gem::Version to parse the Ruby version for reliable comparison # ActiveSupport 5+ requires Ruby 2.2.2 if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.2.2') @@ -31,14 +31,14 @@ Gem::Specification.new do |spec| end spec.add_runtime_dependency 'flexirest', '~> 1.3.35' + spec.add_development_dependency 'bump', '~> 0.5', '>= 0.5.3' spec.add_development_dependency 'bundler', '~> 1.6' - spec.add_development_dependency 'rake', '~> 10.0' - spec.add_development_dependency 'rspec', '~> 3.1', '>= 3.1.7' spec.add_development_dependency 'byebug', '~> 9.0', '< 9.0.6' spec.add_development_dependency 'pry-byebug', '~> 3.4', '>= 3.3.0' - spec.add_development_dependency 'bump', '~> 0.5', '>= 0.5.3' - spec.add_development_dependency 'webmock', '~> 1.22', '>= 1.22.2' - spec.add_development_dependency 'sinatra', '~> 1.4', '>= 1.4.7' + spec.add_development_dependency 'rake', '~> 10.0' + spec.add_development_dependency 'rspec', '~> 3.1', '>= 3.1.7' spec.add_development_dependency 'rubocop', '0.47.1' spec.add_development_dependency 'simplecov', '~> 0.15' + spec.add_development_dependency 'sinatra', '~> 1.4', '>= 1.4.7' + spec.add_development_dependency 'webmock', '~> 1.22', '>= 1.22.2' end From 0d79f374a90391fb65a880030f558e24b03a09d8 Mon Sep 17 00:00:00 2001 From: Nora Alvarado Date: Fri, 26 Jan 2018 16:16:56 -0600 Subject: [PATCH 3/4] v1.2.1 --- lib/mifiel/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mifiel/version.rb b/lib/mifiel/version.rb index fd466ee..6b5d32c 100644 --- a/lib/mifiel/version.rb +++ b/lib/mifiel/version.rb @@ -1,3 +1,3 @@ module Mifiel - VERSION = '1.2.0'.freeze + VERSION = '1.2.1'.freeze end From 839ca24f759a73b2a2ea69bb765a67ea4d8bb8ac Mon Sep 17 00:00:00 2001 From: Nora Alvarado Date: Mon, 29 Jan 2018 10:56:40 -0600 Subject: [PATCH 4/4] Rename user create method to setup_widget, rollback version --- lib/mifiel/user.rb | 4 ++-- lib/mifiel/version.rb | 2 +- spec/mifiel/user_spec.rb | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/mifiel/user.rb b/lib/mifiel/user.rb index 63f67fc..22ed7cf 100644 --- a/lib/mifiel/user.rb +++ b/lib/mifiel/user.rb @@ -1,9 +1,9 @@ module Mifiel class User < Mifiel::Base - post :create, '/users/setup-widget' + post :setup_widget, '/users/setup-widget' # rubocop:disable Metrics/MethodLength, Metrics/AbcSize - def self.create(args) + def self.setup_widget(args) email = args[:email] tax_id = args[:tax_id] callback_url = args[:callback_url] diff --git a/lib/mifiel/version.rb b/lib/mifiel/version.rb index 6b5d32c..fd466ee 100644 --- a/lib/mifiel/version.rb +++ b/lib/mifiel/version.rb @@ -1,3 +1,3 @@ module Mifiel - VERSION = '1.2.1'.freeze + VERSION = '1.2.0'.freeze end diff --git a/spec/mifiel/user_spec.rb b/spec/mifiel/user_spec.rb index 399b856..4ca9204 100644 --- a/spec/mifiel/user_spec.rb +++ b/spec/mifiel/user_spec.rb @@ -1,7 +1,7 @@ describe Mifiel::User do - describe '#create' do + describe '#setup_widget' do let(:user) do - Mifiel::User.create( + Mifiel::User.setup_widget( email: 'user@email.com', tax_id: 'AAA010101AAA', callback_url: 'http://some-callback.url/mifiel'