stripe_webhooks 0.0.1 → 0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +33 -4
- data/app/jobs/stripe_webhooks/processor_job.rb +0 -1
- data/app/models/stripe_webhooks/callback.rb +4 -0
- data/lib/stripe_webhooks/version.rb +1 -1
- data/spec/controllers/stripe_webhooks/events_controller_spec.rb +37 -3
- data/spec/data/invalid_data.json +6 -0
- data/spec/data/parse_error.json +6 -0
- data/spec/dummy/app/callbacks/application_callback.rb +3 -0
- data/spec/dummy/config/environments/test.rb +2 -0
- data/spec/dummy/config/initializers/stripe_webhook_callbacks.rb +0 -0
- data/spec/dummy/config/routes.rb +0 -1
- data/spec/dummy/db/schema.rb +37 -0
- data/spec/factories/stripe_webhooks_events.rb +5 -6
- data/spec/helpers/stripe_webhooks/events_helper_spec.rb +1 -1
- data/spec/jobs/stripe_webhooks/processor_job_spec.rb +17 -1
- data/spec/lib/stripe_webhooks/callbacks_spec.rb +20 -0
- data/spec/models/stripe_webhooks/callback_spec.rb +81 -0
- data/spec/models/stripe_webhooks/event_spec.rb +50 -1
- data/spec/models/stripe_webhooks/performed_callback_spec.rb +1 -1
- data/spec/rails_helper.rb +22 -2
- metadata +38 -15
- data/app/assets/javascripts/stripe_webhooks/application.js +0 -13
- data/app/assets/stylesheets/stripe_webhooks/application.css +0 -15
- data/app/views/layouts/stripe_webhooks/application.html.erb +0 -14
- data/spec/views/stripe_webhooks/events/create.html.erb_spec.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db9fc92d2726f727a3658c8c11de00784440a412
|
4
|
+
data.tar.gz: 41d70d0e78569b17bee76405aab05b340bad361c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4304d004d08aa941ff8941a6c29cfd1f2d50f03317923d2506c375a75a79701cd3607a45c8c31e73bc46e1fb5c62e4b1e085baa0eee7f25364f3edaf1dc0b753
|
7
|
+
data.tar.gz: b9b8a6ded885468ee5a6af6f5b83daf74c919da4bb7f455d46f6064267c1c543b9a0ebb82df4e75e463d78866c1a991f856ff765c970412aa4478779c4a80179
|
data/README.md
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# StripeWebhooks
|
2
2
|
|
3
|
-
**NOTICE**: This project is in early development. As such, I don't recommend using it for anything serious just yet. You have been warned!
|
4
|
-
|
5
3
|
StripeWebhooks is a Rails engine for dealing with data posted from [Stripe via Webhooks](https://stripe.com/docs/webhooks).
|
6
4
|
|
7
5
|
## Goals
|
@@ -38,6 +36,37 @@ First, install and configure the [stripe](https://rubygems.org/gems/stripe) gem
|
|
38
36
|
|
39
37
|
5. Restart your application
|
40
38
|
|
41
|
-
##
|
39
|
+
## Configuration
|
40
|
+
|
41
|
+
Once the gem has been installed and configured, log in to your Stripe account and [configure the webhook](https://stripe.com/docs/webhooks#configuring-your-webhook-settings) with your application endpoint.
|
42
|
+
|
43
|
+
The `stripe_webhooks` gem will capture and process events using [ActiveJob](http://guides.rubyonrails.org/active_job_basics.html). The default behavior for ActiveJob is to run tasks immediately; It is strongly recommended that you configure a background queue instead. See the ActiveJob docs for a list of available queueing back ends.
|
44
|
+
|
45
|
+
## Callbacks
|
46
|
+
|
47
|
+
Create a callback object using the generator, which accepts a name argument followed by a list of stripe event types.
|
48
|
+
|
49
|
+
rails g stripe_webhooks:callback Customer customer.created customer.updated customer.deleted
|
50
|
+
|
51
|
+
*See the [official documentation](https://stripe.com/docs/api/ruby#event_types) for a list of possible events.*
|
52
|
+
|
53
|
+
This will do a few things for you:
|
54
|
+
|
55
|
+
1. Appends an entry to `config/initializers/stripe_webhook_callbacks.rb`, and creates this file if it does not exist.
|
56
|
+
2. Creates a new callback object at `app/callbacks/NAME_callback.rb`
|
57
|
+
|
58
|
+
A callback is a simple ruby object with a `#run` method.
|
59
|
+
|
60
|
+
class CustomerCallback < ApplicationCallback
|
61
|
+
handles_events 'customer.created', 'customer.updated', 'customer.deleted'
|
62
|
+
|
63
|
+
def run(event)
|
64
|
+
# do useful stuff here!
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
Callbacks must be registered in order to be recognized. If you ran the generator, this will have been done for you in an initializer.
|
70
|
+
|
71
|
+
StripeWebhooks.register_callback('customer')
|
42
72
|
|
43
|
-
TODO: This project is in the early development phase. This section will be updated as soon as the dust starts to settle.
|
@@ -3,11 +3,45 @@ require 'rails_helper'
|
|
3
3
|
module StripeWebhooks
|
4
4
|
RSpec.describe EventsController, type: :controller do
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
routes { StripeWebhooks::Engine.routes }
|
7
|
+
|
8
|
+
let(:customer_created){
|
9
|
+
StripeMock.mock_webhook_payload('customer.created').to_json
|
10
|
+
}
|
11
|
+
|
12
|
+
describe "POST #create" do
|
13
|
+
|
14
|
+
it "should create the event" do
|
15
|
+
expect{
|
16
|
+
post :create, customer_created
|
17
|
+
}.to change(StripeWebhooks::Event, :count).by(1)
|
18
|
+
expect(response).to have_http_status(:success)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should not create a duplicate event" do
|
22
|
+
post :create, customer_created
|
23
|
+
expect{
|
24
|
+
post :create, customer_created
|
25
|
+
}.to_not change(StripeWebhooks::Event, :count)
|
9
26
|
expect(response).to have_http_status(:success)
|
10
27
|
end
|
28
|
+
|
29
|
+
it "should queue an active job" do
|
30
|
+
expect{
|
31
|
+
post :create, customer_created
|
32
|
+
}.to change(ActiveJob::Base.queue_adapter.enqueued_jobs, :length).by(1)
|
33
|
+
expect(ActiveJob::Base.queue_adapter.enqueued_jobs.last[:job]).to eq(StripeWebhooks::ProcessorJob)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should return an 400 error when the JSON is poorly formed" do
|
37
|
+
post :create, File.read(StripeWebhooks::Engine.root.join('spec', 'data', 'parse_error.json'))
|
38
|
+
expect(response).to have_http_status(400)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return a 422 error when the provided data is not valid" do
|
42
|
+
post :create, File.read(StripeWebhooks::Engine.root.join('spec', 'data', 'invalid_data.json'))
|
43
|
+
expect(response).to have_http_status(422)
|
44
|
+
end
|
11
45
|
end
|
12
46
|
|
13
47
|
end
|
File without changes
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# This file is auto-generated from the current state of the database. Instead
|
3
|
+
# of editing this file, please use the migrations feature of Active Record to
|
4
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
5
|
+
#
|
6
|
+
# Note that this schema.rb definition is the authoritative source for your
|
7
|
+
# database schema. If you need to create the application database on another
|
8
|
+
# system, you should be using db:schema:load, not running all the migrations
|
9
|
+
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
10
|
+
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
11
|
+
#
|
12
|
+
# It's strongly recommended that you check this file into your version control system.
|
13
|
+
|
14
|
+
ActiveRecord::Schema.define(version: 20150716195741) do
|
15
|
+
|
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
|
19
|
+
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
|
24
|
+
end
|
25
|
+
|
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
|
33
|
+
end
|
34
|
+
|
35
|
+
add_index "stripe_webhooks_performed_callbacks", ["stripe_event_id", "label"], name: "index_stripe_webhooks_performed_callbacks_event_id_label", using: :btree
|
36
|
+
|
37
|
+
end
|
@@ -1,10 +1,9 @@
|
|
1
1
|
FactoryGirl.define do
|
2
2
|
factory :stripe_webhooks_event, :class => 'StripeWebhooks::Event' do
|
3
|
-
stripe_event_id "
|
4
|
-
stripe_event_type "
|
5
|
-
stripe_created_at
|
6
|
-
is_processed
|
7
|
-
is_authentic
|
3
|
+
stripe_event_id "evt_00000000000000"
|
4
|
+
stripe_event_type "charge.succeeded"
|
5
|
+
stripe_created_at DateTime.now()
|
6
|
+
is_processed true
|
7
|
+
is_authentic true
|
8
8
|
end
|
9
|
-
|
10
9
|
end
|
@@ -2,6 +2,22 @@ require 'rails_helper'
|
|
2
2
|
|
3
3
|
module StripeWebhooks
|
4
4
|
RSpec.describe ProcessorJob, type: :job do
|
5
|
-
|
5
|
+
|
6
|
+
describe '#perform' do
|
7
|
+
it 'should validate the event and run callbacks' do
|
8
|
+
mock_event = StripeMock.mock_webhook_event('customer.created')
|
9
|
+
event = StripeWebhooks::Event.create(:stripe_event_id => mock_event.id)
|
10
|
+
expect(event).to receive(:run_callbacks!)
|
11
|
+
StripeWebhooks::ProcessorJob.new(event).perform_now
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should not run callbacks on an event that is not authentic' do
|
15
|
+
event = StripeWebhooks::Event.create(:stripe_event_id => 'fail!')
|
16
|
+
expect(event).to_not receive(:run_callbacks!)
|
17
|
+
StripeWebhooks::ProcessorJob.perform_now(event)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
6
22
|
end
|
7
23
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
module StripeWebhooks
|
4
|
+
RSpec.describe Callbacks do
|
5
|
+
|
6
|
+
class ::HelloWorldCallback < StripeWebhooks::Callback
|
7
|
+
handles_events 'test'
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '.register_callback' do
|
11
|
+
it 'should append the label to the list of callbacks' do
|
12
|
+
expect{
|
13
|
+
StripeWebhooks.register_callback('hello_world')
|
14
|
+
}.to change(StripeWebhooks.callbacks, :length).by(1)
|
15
|
+
expect(StripeWebhooks.callbacks.last).to eq('hello_world')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
module StripeWebhooks
|
4
|
+
RSpec.describe Callback, type: :model do
|
5
|
+
|
6
|
+
class ::CustomerCallback < StripeWebhooks::Callback
|
7
|
+
handles_events 'customer.created', 'customer.updated'
|
8
|
+
mattr_accessor :callback_has_ran
|
9
|
+
mattr_accessor :run_count
|
10
|
+
def run(event)
|
11
|
+
self.run_count += 1
|
12
|
+
self.callback_has_ran = true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
StripeWebhooks.register_callback('customer')
|
16
|
+
|
17
|
+
# Reset the callback_has_ran flag for each test so we can tell if the callback was triggered
|
18
|
+
before(:each) do
|
19
|
+
CustomerCallback.run_count = 0
|
20
|
+
CustomerCallback.callback_has_ran = false
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.run_callbacks_for' do
|
24
|
+
it 'should run the callbacks' do
|
25
|
+
event = StripeMock.mock_webhook_event('customer.created')
|
26
|
+
StripeWebhooks::Callback.run_callbacks_for('customer.created', event)
|
27
|
+
expect(CustomerCallback.callback_has_ran).to eq(true)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should not run a callback that does not handle the requested event type' do
|
31
|
+
event = StripeMock.mock_webhook_event('charge.succeeded')
|
32
|
+
StripeWebhooks::Callback.run_callbacks_for('charge.succeeded', event)
|
33
|
+
expect(CustomerCallback.callback_has_ran).to eq(false)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '.handles_events' do
|
38
|
+
it 'should store a reference to the event types' do
|
39
|
+
expect(CustomerCallback.event_types).to eq(['customer.created', 'customer.updated'])
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#label' do
|
44
|
+
it 'should return a label string' do
|
45
|
+
expect(CustomerCallback.new.label).to eq('customer')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#run_once' do
|
50
|
+
it 'should run the callback' do
|
51
|
+
callback = CustomerCallback.new()
|
52
|
+
event = StripeMock.mock_webhook_event('customer.created')
|
53
|
+
callback.run_once(event)
|
54
|
+
expect(CustomerCallback.callback_has_ran).to eq(true)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should not run the callback if it has been ran before' do
|
58
|
+
callback = CustomerCallback.new()
|
59
|
+
event = StripeMock.mock_webhook_event('customer.created')
|
60
|
+
callback.run_once(event)
|
61
|
+
expect{
|
62
|
+
callback.run_once(event)
|
63
|
+
}.to_not change(CustomerCallback, :run_count)
|
64
|
+
expect(CustomerCallback.run_count).to eq(1)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#handles?' do
|
69
|
+
it 'should return true' do
|
70
|
+
callback = CustomerCallback.new()
|
71
|
+
expect(callback.handles?('customer.created')).to eq(true)
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should return false' do
|
75
|
+
callback = CustomerCallback.new()
|
76
|
+
expect(callback.handles?('charge.succeeded')).to eq(false)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -2,6 +2,55 @@ require 'rails_helper'
|
|
2
2
|
|
3
3
|
module StripeWebhooks
|
4
4
|
RSpec.describe Event, type: :model do
|
5
|
-
|
5
|
+
|
6
|
+
describe '#stripe_event' do
|
7
|
+
it 'should return the event from the Stripe API' do
|
8
|
+
mock_event = StripeMock.mock_webhook_event('customer.created')
|
9
|
+
event = StripeWebhooks::Event.create(:stripe_event_id => mock_event.id)
|
10
|
+
expect(event.stripe_event).to be_a(Stripe::Event)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should trigger a Stripe::InvalidRequestError error' do
|
14
|
+
event = StripeWebhooks::Event.create(:stripe_event_id => 'fail!')
|
15
|
+
expect{
|
16
|
+
event.stripe_event
|
17
|
+
}.to raise_error(Stripe::InvalidRequestError)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should log a warning if the event is too old' do
|
21
|
+
mock_event = StripeMock.mock_webhook_event('customer.created')
|
22
|
+
event = StripeWebhooks::Event.create(:stripe_event_id => mock_event.id, :created_at => 31.days.ago)
|
23
|
+
expect(Rails.logger).to receive(:warn)
|
24
|
+
event.stripe_event
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#validate!' do
|
29
|
+
it 'should mark the event as authentic and update the columns' do
|
30
|
+
mock_event = StripeMock.mock_webhook_event('customer.created')
|
31
|
+
event = StripeWebhooks::Event.create(:stripe_event_id => mock_event.id)
|
32
|
+
event.validate!
|
33
|
+
expect(event.is_authentic).to eq(true)
|
34
|
+
expect(event.is_processed).to eq(true)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should mark the event as not authentic' do
|
38
|
+
event = StripeWebhooks::Event.create(:stripe_event_id => 'fail!')
|
39
|
+
event.validate!
|
40
|
+
expect(event.is_authentic).to eq(false)
|
41
|
+
expect(event.is_processed).to eq(true)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#run_callbacks!' do
|
46
|
+
it 'should run callbacks associated with the given event type' do
|
47
|
+
mock_event = StripeMock.mock_webhook_event('customer.created')
|
48
|
+
event = StripeWebhooks::Event.create(:stripe_event_id => mock_event.id)
|
49
|
+
event.validate!
|
50
|
+
expect(StripeWebhooks::Callback).to receive(:run_callbacks_for).with(event.stripe_event_type, event.stripe_event)
|
51
|
+
event.run_callbacks!
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
6
55
|
end
|
7
56
|
end
|
data/spec/rails_helper.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
2
2
|
ENV['RAILS_ENV'] ||= 'test'
|
3
3
|
require 'spec_helper'
|
4
|
-
require File.expand_path(
|
4
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
5
5
|
require 'rspec/rails'
|
6
6
|
|
7
7
|
# Add additional requires below this line. Rails is not loaded until this point!
|
8
8
|
require 'database_cleaner'
|
9
9
|
require "factory_girl_rails"
|
10
|
+
require 'stripe_mock'
|
11
|
+
require 'simplecov'
|
12
|
+
|
13
|
+
SimpleCov.start 'rails'
|
10
14
|
|
11
15
|
# Requires supporting ruby files with custom matchers and macros, etc, in
|
12
16
|
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
|
@@ -25,7 +29,7 @@ require "factory_girl_rails"
|
|
25
29
|
|
26
30
|
# Checks for pending migrations before tests are run.
|
27
31
|
# If you are not using ActiveRecord, you can remove this line.
|
28
|
-
ActiveRecord::Migration.maintain_test_schema!
|
32
|
+
# ActiveRecord::Migration.maintain_test_schema!
|
29
33
|
|
30
34
|
RSpec.configure do |config|
|
31
35
|
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
@@ -51,6 +55,22 @@ RSpec.configure do |config|
|
|
51
55
|
# https://relishapp.com/rspec/rspec-rails/docs
|
52
56
|
config.infer_spec_type_from_file_location!
|
53
57
|
|
58
|
+
# Clear the active job queue after every test
|
59
|
+
#
|
60
|
+
config.after(:each) do
|
61
|
+
ActiveJob::Base.queue_adapter.enqueued_jobs = []
|
62
|
+
ActiveJob::Base.queue_adapter.performed_jobs = []
|
63
|
+
end
|
64
|
+
|
65
|
+
# Use StripeMock to simulate Stripe API calls
|
66
|
+
#
|
67
|
+
config.before(:each) do
|
68
|
+
StripeMock.start
|
69
|
+
end
|
70
|
+
config.after(:each) do
|
71
|
+
StripeMock.stop
|
72
|
+
end
|
73
|
+
|
54
74
|
# Clean the test database
|
55
75
|
config.before(:suite) do
|
56
76
|
DatabaseCleaner.strategy = :transaction
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stripe_webhooks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.1'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Westlake Interactive
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07
|
11
|
+
date: 2015-10-07 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: 4.2.
|
19
|
+
version: 4.2.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: 4.2.
|
26
|
+
version: 4.2.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: stripe
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.18.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.18.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mysql2
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 0.9.2
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: stripe-ruby-mock
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 2.1.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 2.1.0
|
111
125
|
description: Provides an endpoint for captring data posted via Webhooks in Stripe,
|
112
126
|
and a system for running callbacks in response to desired event types.
|
113
127
|
email:
|
@@ -119,8 +133,6 @@ files:
|
|
119
133
|
- MIT-LICENSE
|
120
134
|
- README.md
|
121
135
|
- Rakefile
|
122
|
-
- app/assets/javascripts/stripe_webhooks/application.js
|
123
|
-
- app/assets/stylesheets/stripe_webhooks/application.css
|
124
136
|
- app/controllers/stripe_webhooks/application_controller.rb
|
125
137
|
- app/controllers/stripe_webhooks/events_controller.rb
|
126
138
|
- app/helpers/stripe_webhooks/application_helper.rb
|
@@ -129,7 +141,6 @@ files:
|
|
129
141
|
- app/models/stripe_webhooks/callback.rb
|
130
142
|
- app/models/stripe_webhooks/event.rb
|
131
143
|
- app/models/stripe_webhooks/performed_callback.rb
|
132
|
-
- app/views/layouts/stripe_webhooks/application.html.erb
|
133
144
|
- config/routes.rb
|
134
145
|
- db/migrate/20150715152905_create_stripe_webhooks_events.rb
|
135
146
|
- db/migrate/20150716195741_create_stripe_webhooks_performed_callbacks.rb
|
@@ -143,10 +154,13 @@ files:
|
|
143
154
|
- lib/stripe_webhooks/version.rb
|
144
155
|
- lib/tasks/stripe_webhooks_tasks.rake
|
145
156
|
- spec/controllers/stripe_webhooks/events_controller_spec.rb
|
157
|
+
- spec/data/invalid_data.json
|
158
|
+
- spec/data/parse_error.json
|
146
159
|
- spec/dummy/README.rdoc
|
147
160
|
- spec/dummy/Rakefile
|
148
161
|
- spec/dummy/app/assets/javascripts/application.js
|
149
162
|
- spec/dummy/app/assets/stylesheets/application.css
|
163
|
+
- spec/dummy/app/callbacks/application_callback.rb
|
150
164
|
- spec/dummy/app/controllers/application_controller.rb
|
151
165
|
- spec/dummy/app/helpers/application_helper.rb
|
152
166
|
- spec/dummy/app/views/layouts/application.html.erb
|
@@ -169,10 +183,12 @@ files:
|
|
169
183
|
- spec/dummy/config/initializers/inflections.rb
|
170
184
|
- spec/dummy/config/initializers/mime_types.rb
|
171
185
|
- spec/dummy/config/initializers/session_store.rb
|
186
|
+
- spec/dummy/config/initializers/stripe_webhook_callbacks.rb
|
172
187
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
173
188
|
- spec/dummy/config/locales/en.yml
|
174
189
|
- spec/dummy/config/routes.rb
|
175
190
|
- spec/dummy/config/secrets.yml
|
191
|
+
- spec/dummy/db/schema.rb
|
176
192
|
- spec/dummy/public/404.html
|
177
193
|
- spec/dummy/public/422.html
|
178
194
|
- spec/dummy/public/500.html
|
@@ -181,11 +197,12 @@ files:
|
|
181
197
|
- spec/factories/stripe_webhooks_performed_callbacks.rb
|
182
198
|
- spec/helpers/stripe_webhooks/events_helper_spec.rb
|
183
199
|
- spec/jobs/stripe_webhooks/processor_job_spec.rb
|
200
|
+
- spec/lib/stripe_webhooks/callbacks_spec.rb
|
201
|
+
- spec/models/stripe_webhooks/callback_spec.rb
|
184
202
|
- spec/models/stripe_webhooks/event_spec.rb
|
185
203
|
- spec/models/stripe_webhooks/performed_callback_spec.rb
|
186
204
|
- spec/rails_helper.rb
|
187
205
|
- spec/spec_helper.rb
|
188
|
-
- spec/views/stripe_webhooks/events/create.html.erb_spec.rb
|
189
206
|
homepage: https://github.com/westlakedesign/stripe_webhooks
|
190
207
|
licenses:
|
191
208
|
- MIT
|
@@ -212,8 +229,11 @@ specification_version: 4
|
|
212
229
|
summary: Stripe Webhook event capture and processing engine.
|
213
230
|
test_files:
|
214
231
|
- spec/controllers/stripe_webhooks/events_controller_spec.rb
|
232
|
+
- spec/data/invalid_data.json
|
233
|
+
- spec/data/parse_error.json
|
215
234
|
- spec/dummy/app/assets/javascripts/application.js
|
216
235
|
- spec/dummy/app/assets/stylesheets/application.css
|
236
|
+
- spec/dummy/app/callbacks/application_callback.rb
|
217
237
|
- spec/dummy/app/controllers/application_controller.rb
|
218
238
|
- spec/dummy/app/helpers/application_helper.rb
|
219
239
|
- spec/dummy/app/views/layouts/application.html.erb
|
@@ -235,11 +255,13 @@ test_files:
|
|
235
255
|
- spec/dummy/config/initializers/inflections.rb
|
236
256
|
- spec/dummy/config/initializers/mime_types.rb
|
237
257
|
- spec/dummy/config/initializers/session_store.rb
|
258
|
+
- spec/dummy/config/initializers/stripe_webhook_callbacks.rb
|
238
259
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
239
260
|
- spec/dummy/config/locales/en.yml
|
240
261
|
- spec/dummy/config/routes.rb
|
241
262
|
- spec/dummy/config/secrets.yml
|
242
263
|
- spec/dummy/config.ru
|
264
|
+
- spec/dummy/db/schema.rb
|
243
265
|
- spec/dummy/public/404.html
|
244
266
|
- spec/dummy/public/422.html
|
245
267
|
- spec/dummy/public/500.html
|
@@ -250,8 +272,9 @@ test_files:
|
|
250
272
|
- spec/factories/stripe_webhooks_performed_callbacks.rb
|
251
273
|
- spec/helpers/stripe_webhooks/events_helper_spec.rb
|
252
274
|
- spec/jobs/stripe_webhooks/processor_job_spec.rb
|
275
|
+
- spec/lib/stripe_webhooks/callbacks_spec.rb
|
276
|
+
- spec/models/stripe_webhooks/callback_spec.rb
|
253
277
|
- spec/models/stripe_webhooks/event_spec.rb
|
254
278
|
- spec/models/stripe_webhooks/performed_callback_spec.rb
|
255
279
|
- spec/rails_helper.rb
|
256
280
|
- spec/spec_helper.rb
|
257
|
-
- spec/views/stripe_webhooks/events/create.html.erb_spec.rb
|
@@ -1,13 +0,0 @@
|
|
1
|
-
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
-
// listed below.
|
3
|
-
//
|
4
|
-
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
-
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
-
//
|
7
|
-
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
-
// compiled file.
|
9
|
-
//
|
10
|
-
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
-
// about supported directives.
|
12
|
-
//
|
13
|
-
//= require_tree .
|
@@ -1,15 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
-
* listed below.
|
4
|
-
*
|
5
|
-
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
-
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
7
|
-
*
|
8
|
-
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
-
* compiled file so the styles you add here take precedence over styles defined in any styles
|
10
|
-
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
11
|
-
* file per style scope.
|
12
|
-
*
|
13
|
-
*= require_tree .
|
14
|
-
*= require_self
|
15
|
-
*/
|
@@ -1,14 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>StripeWebhooks</title>
|
5
|
-
<%= stylesheet_link_tag "stripe_webhooks/application", media: "all" %>
|
6
|
-
<%= javascript_include_tag "stripe_webhooks/application" %>
|
7
|
-
<%= csrf_meta_tags %>
|
8
|
-
</head>
|
9
|
-
<body>
|
10
|
-
|
11
|
-
<%= yield %>
|
12
|
-
|
13
|
-
</body>
|
14
|
-
</html>
|