stripe_webhooks 0.3 → 0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e0592b945f0b8f6dcc22b465338e266edb8e1da4
4
- data.tar.gz: 7f35b9a9f565afb154351f6486319f79ba398e41
3
+ metadata.gz: f069c998280e950ef58ee9cf8e78bf94f44cc458
4
+ data.tar.gz: 3fabcf9db7389bb00ebfce7cbbd689094b78c949
5
5
  SHA512:
6
- metadata.gz: 31e2ee5f45feb89438cfc0d866b2022fa115c6bb9ccfefcde9a038c334fb63f601fc2cabba118547d1fa9809ee09907123f65e47d976ad71d10865f45f445853
7
- data.tar.gz: aca513f030fac3f13cc4d800cd65fa8c6df60920d35307002d6fd3ee6f65fa2084291f601400a321a952d8d0d61187aba55ab20df1b447d5fd69d928fe3e461b
6
+ metadata.gz: 261e7691366f50ae94e5a8613ef18ebd685c66a6c37136cbf71ca29a31c9a2975a3dc4ec1f574d0ba6211f89989d5390b15c4546e957956fee25f9aebfcc9fe4
7
+ data.tar.gz: 1cdeb62697cbfa7765dbddc14eae12252c5aed2bdcc3f3dff4acdcb7e52cd316d32b020b6fb906f03d24151ce47585955b276ea7a427a6ecd0242e865bca82e3
@@ -8,17 +8,20 @@ module StripeWebhooks
8
8
  begin
9
9
  raw_data = JSON.parse(request.body.read)
10
10
  rescue JSON::ParserError => e
11
- render text: e.message, status: 400
11
+ render plain: e.message, status: 400
12
12
  return
13
13
  end
14
14
 
15
15
  @event = StripeWebhooks::Event.find_or_initialize_by(stripe_event_id: raw_data['id'])
16
+ @event.stripe_event_type = raw_data['type']
17
+ @event.livemode = raw_data['livemode']
18
+ @event.user_id = raw_data['user_id']
16
19
 
17
20
  if @event.save()
18
21
  StripeWebhooks::ProcessorJob.perform_later(@event)
19
- render nothing: true, status: 200
22
+ head :ok
20
23
  else
21
- render text: @event.errors.full_messages.first, status: 422
24
+ render plain: @event.errors.full_messages.first, status: 422
22
25
  end
23
26
  end
24
27
 
@@ -8,7 +8,7 @@ module StripeWebhooks
8
8
  Rails.logger.warn('The event you requested was created over 30 days ago,
9
9
  which means it may no longer be available via the Stripe Events API.')
10
10
  end
11
- @_stripe_event ||= Stripe::Event.retrieve(stripe_event_id)
11
+ @_stripe_event ||= fetch_event
12
12
  return @_stripe_event
13
13
  end
14
14
 
@@ -32,5 +32,15 @@ module StripeWebhooks
32
32
  return true
33
33
  end
34
34
 
35
+ private
36
+
37
+ def fetch_event
38
+ if user_id
39
+ Stripe::Event.retrieve(stripe_event_id, stripe_account: user_id)
40
+ else
41
+ Stripe::Event.retrieve(stripe_event_id)
42
+ end
43
+ end
44
+
35
45
  end
36
46
  end
@@ -0,0 +1,8 @@
1
+ class AddUserIdToStripeWebhookEvents < ActiveRecord::Migration[5.0]
2
+ def change
3
+ change_table :stripe_webhooks_events do |t|
4
+ t.string :user_id
5
+ t.boolean :livemode, default: false
6
+ end
7
+ end
8
+ end
@@ -15,9 +15,9 @@ module StripeWebhooks
15
15
  end
16
16
  template 'callback.rb.erb', "app/callbacks/#{name.underscore}_callback.rb"
17
17
 
18
- if defined?(RSpec)
18
+ if defined?(RSpec) && Dir.exist?(Rails.root.join('spec'))
19
19
  template 'callback_spec.rb.erb',
20
- "#{RSpec.configuration.default_path}/callbacks/#{name.underscore}_callback_spec.rb"
20
+ Rails.root.join('spec', 'callbacks', "#{name.underscore}_callback_spec.rb")
21
21
  end
22
22
  end
23
23
 
@@ -1,3 +1,3 @@
1
1
  module StripeWebhooks
2
- VERSION = '0.3'.freeze
2
+ VERSION = '0.4'.freeze
3
3
  end
@@ -11,33 +11,37 @@ module StripeWebhooks
11
11
  describe 'POST #create' do
12
12
  it 'should create the event' do
13
13
  expect do
14
- post :create, customer_created
14
+ post :create, body: customer_created, format: :json
15
15
  end.to change(StripeWebhooks::Event, :count).by(1)
16
16
  expect(response).to have_http_status(:success)
17
17
  end
18
18
 
19
19
  it 'should not create a duplicate event' do
20
- post :create, customer_created
20
+ post :create, body: customer_created, format: :json
21
21
  expect do
22
- post :create, customer_created
22
+ post :create, body: customer_created, format: :json
23
23
  end.to_not change(StripeWebhooks::Event, :count)
24
24
  expect(response).to have_http_status(:success)
25
25
  end
26
26
 
27
27
  it 'should queue an active job' do
28
28
  expect do
29
- post :create, customer_created
29
+ post :create, body: customer_created, format: :json
30
30
  end.to change(ActiveJob::Base.queue_adapter.enqueued_jobs, :length).by(1)
31
31
  expect(ActiveJob::Base.queue_adapter.enqueued_jobs.last[:job]).to eq(StripeWebhooks::ProcessorJob)
32
32
  end
33
33
 
34
34
  it 'should return an 400 error when the JSON is poorly formed' do
35
- post :create, File.read(StripeWebhooks::Engine.root.join('spec', 'data', 'parse_error.json'))
35
+ post :create,
36
+ body: File.read(StripeWebhooks::Engine.root.join('spec', 'data', 'parse_error.json')),
37
+ format: :json
36
38
  expect(response).to have_http_status(400)
37
39
  end
38
40
 
39
41
  it 'should return a 422 error when the provided data is not valid' do
40
- post :create, File.read(StripeWebhooks::Engine.root.join('spec', 'data', 'invalid_data.json'))
42
+ post :create,
43
+ body: File.read(StripeWebhooks::Engine.root.join('spec', 'data', 'invalid_data.json')),
44
+ format: :json
41
45
  expect(response).to have_http_status(422)
42
46
  end
43
47
  end
@@ -19,8 +19,5 @@ module Dummy
19
19
  # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
20
20
  # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
21
21
  # config.i18n.default_locale = :de
22
-
23
- # Do not swallow errors in after_commit/after_rollback callbacks.
24
- config.active_record.raise_in_transactional_callbacks = true
25
22
  end
26
23
  end
@@ -13,8 +13,8 @@ Rails.application.configure do
13
13
  config.eager_load = false
14
14
 
15
15
  # Configure static file server for tests with Cache-Control for performance.
16
- config.serve_static_files = true
17
- config.static_cache_control = 'public, max-age=3600'
16
+ config.public_file_server.enabled = true
17
+ config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
18
18
 
19
19
  # Show full error reports and disable caching.
20
20
  config.consider_all_requests_local = true
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # This file is auto-generated from the current state of the database. Instead
3
2
  # of editing this file, please use the migrations feature of Active Record to
4
3
  # incrementally modify your database, and then regenerate this schema definition.
@@ -11,27 +10,27 @@
11
10
  #
12
11
  # It's strongly recommended that you check this file into your version control system.
13
12
 
14
- ActiveRecord::Schema.define(version: 20150716195741) do
13
+ ActiveRecord::Schema.define(version: 20170201180822) do
15
14
 
16
- create_table "stripe_webhooks_events", force: :cascade do |t|
17
- t.string "stripe_event_id", limit: 255
18
- t.string "stripe_event_type", limit: 255
15
+ create_table "stripe_webhooks_events", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
16
+ t.string "stripe_event_id"
17
+ t.string "stripe_event_type"
19
18
  t.datetime "stripe_created_at"
20
- t.boolean "is_processed", default: false
21
- t.boolean "is_authentic", default: false
22
- t.datetime "created_at", null: false
23
- t.datetime "updated_at", null: false
19
+ t.boolean "is_processed", default: false
20
+ t.boolean "is_authentic", default: false
21
+ t.datetime "created_at", null: false
22
+ t.datetime "updated_at", null: false
23
+ t.string "user_id"
24
+ t.boolean "livemode", default: false
25
+ t.index ["stripe_event_id"], name: "index_stripe_webhooks_events_on_stripe_event_id", unique: true, using: :btree
24
26
  end
25
27
 
26
- add_index "stripe_webhooks_events", ["stripe_event_id"], name: "index_stripe_webhooks_events_on_stripe_event_id", unique: true, using: :btree
27
-
28
- create_table "stripe_webhooks_performed_callbacks", force: :cascade do |t|
29
- t.string "stripe_event_id", limit: 255, null: false
30
- t.string "label", limit: 255, null: false
31
- t.datetime "created_at", null: false
32
- t.datetime "updated_at", null: false
28
+ create_table "stripe_webhooks_performed_callbacks", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
29
+ t.string "stripe_event_id", null: false
30
+ t.string "label", null: false
31
+ t.datetime "created_at", null: false
32
+ t.datetime "updated_at", null: false
33
+ t.index ["stripe_event_id", "label"], name: "index_stripe_webhooks_performed_callbacks_event_id_label", using: :btree
33
34
  end
34
35
 
35
- add_index "stripe_webhooks_performed_callbacks", ["stripe_event_id", "label"], name: "index_stripe_webhooks_performed_callbacks_event_id_label", using: :btree
36
-
37
36
  end
data/spec/rails_helper.rb CHANGED
@@ -11,9 +11,6 @@ require 'stripe_mock'
11
11
  require 'simplecov'
12
12
  SimpleCov.start 'rails'
13
13
 
14
- require 'codeclimate-test-reporter'
15
- CodeClimate::TestReporter.start
16
-
17
14
  # Requires supporting ruby files with custom matchers and macros, etc, in
18
15
  # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
19
16
  # run as spec files by default. This means that files in spec/support that end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe_webhooks
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: '0.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Moser Consulting
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-11 00:00:00.000000000 Z
11
+ date: 2017-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "<"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "<"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.0'
26
+ version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: stripe
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,56 +58,56 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 3.2.1
61
+ version: 3.5.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 3.2.1
68
+ version: 3.5.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: factory_girl_rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 4.5.0
75
+ version: 4.8.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 4.5.0
82
+ version: 4.8.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: database_cleaner
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 1.4.1
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 1.4.1
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: simplecov
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 0.9.2
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 0.9.2
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: stripe-ruby-mock
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -173,6 +173,7 @@ files:
173
173
  - config/routes.rb
174
174
  - db/migrate/20150715152905_create_stripe_webhooks_events.rb
175
175
  - db/migrate/20150716195741_create_stripe_webhooks_performed_callbacks.rb
176
+ - db/migrate/20170201175643_add_user_id_to_stripe_webhook_events.rb
176
177
  - lib/generators/stripe_webhooks.rb
177
178
  - lib/generators/stripe_webhooks/callback_generator.rb
178
179
  - lib/generators/stripe_webhooks/templates/application_callback.rb.erb
@@ -253,7 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
253
254
  version: '0'
254
255
  requirements: []
255
256
  rubyforge_project:
256
- rubygems_version: 2.5.1
257
+ rubygems_version: 2.5.2
257
258
  signing_key:
258
259
  specification_version: 4
259
260
  summary: Stripe Webhook event capture and processing engine.