stripe_webhooks 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
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.