cangaroo 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +32 -0
  4. data/app/controllers/cangaroo/application_controller.rb +4 -0
  5. data/app/controllers/cangaroo/endpoint_controller.rb +49 -0
  6. data/app/interactors/cangaroo/authenticate_connection.rb +19 -0
  7. data/app/interactors/cangaroo/count_json_object.rb +20 -0
  8. data/app/interactors/cangaroo/handle_request.rb +10 -0
  9. data/app/interactors/cangaroo/perform_jobs.rb +31 -0
  10. data/app/interactors/cangaroo/validate_json_schema.rb +31 -0
  11. data/app/jobs/cangaroo/job.rb +63 -0
  12. data/app/models/cangaroo/connection.rb +12 -0
  13. data/config/routes.rb +3 -0
  14. data/db/migrate/20151028172151_create_cangaroo_connections.rb +12 -0
  15. data/db/migrate/20151030140821_add_parameters_to_cangaroo_connection.rb +5 -0
  16. data/lib/cangaroo.rb +10 -0
  17. data/lib/cangaroo/engine.rb +17 -0
  18. data/lib/cangaroo/version.rb +3 -0
  19. data/lib/cangaroo/webhook/client.rb +44 -0
  20. data/lib/cangaroo/webhook/error.rb +6 -0
  21. data/lib/tasks/cangaroo_tasks.rake +4 -0
  22. data/spec/controllers/cangaroo/endpoint_controller_spec.rb +72 -0
  23. data/spec/dummy/README.rdoc +28 -0
  24. data/spec/dummy/Rakefile +6 -0
  25. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  26. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  27. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  28. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  29. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  30. data/spec/dummy/bin/bundle +3 -0
  31. data/spec/dummy/bin/rails +4 -0
  32. data/spec/dummy/bin/rake +4 -0
  33. data/spec/dummy/bin/setup +29 -0
  34. data/spec/dummy/config.ru +4 -0
  35. data/spec/dummy/config/application.rb +31 -0
  36. data/spec/dummy/config/boot.rb +5 -0
  37. data/spec/dummy/config/database.yml +11 -0
  38. data/spec/dummy/config/environment.rb +5 -0
  39. data/spec/dummy/config/environments/development.rb +41 -0
  40. data/spec/dummy/config/environments/production.rb +79 -0
  41. data/spec/dummy/config/environments/test.rb +42 -0
  42. data/spec/dummy/config/initializers/assets.rb +11 -0
  43. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  44. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  45. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  46. data/spec/dummy/config/initializers/inflections.rb +16 -0
  47. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  48. data/spec/dummy/config/initializers/session_store.rb +3 -0
  49. data/spec/dummy/config/initializers/wrap_parameters.rb +9 -0
  50. data/spec/dummy/config/locales/en.yml +23 -0
  51. data/spec/dummy/config/routes.rb +4 -0
  52. data/spec/dummy/config/secrets.yml +22 -0
  53. data/spec/dummy/db/development.sqlite3 +0 -0
  54. data/spec/dummy/db/schema.rb +29 -0
  55. data/spec/dummy/db/test.sqlite3 +0 -0
  56. data/spec/dummy/log/cangaroo.log +0 -0
  57. data/spec/dummy/log/development.log +3466 -0
  58. data/spec/dummy/log/test.log +139640 -0
  59. data/spec/dummy/public/404.html +67 -0
  60. data/spec/dummy/public/422.html +67 -0
  61. data/spec/dummy/public/500.html +66 -0
  62. data/spec/dummy/public/favicon.ico +0 -0
  63. data/spec/factories/cangaroo_connections.rb +9 -0
  64. data/spec/fixtures/json_payload_no_id.json +21 -0
  65. data/spec/fixtures/json_payload_ok.json +22 -0
  66. data/spec/fixtures/json_payload_wrong_key.json +22 -0
  67. data/spec/interactors/cangaroo/authenticate_connection_spec.rb +46 -0
  68. data/spec/interactors/cangaroo/count_json_object_spec.rb +17 -0
  69. data/spec/interactors/cangaroo/handle_request_spec.rb +18 -0
  70. data/spec/interactors/cangaroo/perform_jobs_spec.rb +42 -0
  71. data/spec/interactors/cangaroo/validate_json_schema_spec.rb +51 -0
  72. data/spec/jobs/cangaroo/job_spec.rb +55 -0
  73. data/spec/lib/cangaroo/webhook/client_spec.rb +69 -0
  74. data/spec/models/cangaroo/connection_spec.rb +15 -0
  75. data/spec/rails_helper.rb +85 -0
  76. data/spec/spec_helper.rb +9 -0
  77. data/spec/support/spec_helpers.rb +11 -0
  78. metadata +345 -0
@@ -0,0 +1,55 @@
1
+ require 'rails_helper'
2
+
3
+ module Cangaroo
4
+ RSpec.describe Job, type: :job do
5
+ class FakeJob < Cangaroo::Job
6
+ connection :store
7
+ path '/webhook_path'
8
+ parameters(email: 'info@nebulab.it')
9
+ end
10
+
11
+ let(:job_class) { FakeJob }
12
+ let(:source_connection) { create(:cangaroo_connection) }
13
+ let(:type) { 'orders' }
14
+ let(:payload) { { id: 'O123' } }
15
+
16
+ let(:options) do
17
+ { connection: source_connection,
18
+ type: type,
19
+ payload: payload }
20
+ end
21
+
22
+ let(:client) do
23
+ Cangaroo::Webhook::Client.new(source_connection, '/webhook_path')
24
+ end
25
+
26
+ before do
27
+ client.stub(:post)
28
+ allow(Cangaroo::Webhook::Client).to receive(:new).and_return(client)
29
+ end
30
+
31
+ describe '#perform' do
32
+ it 'instantiates a Cangaroo::Webhook::Client' do
33
+ expect(Cangaroo::Webhook::Client).to receive(:new)
34
+ .with(source_connection, '/webhook_path')
35
+ .and_return(client)
36
+ FakeJob.perform_now(options)
37
+ end
38
+
39
+ it 'calls post on client' do
40
+ job = job_class.new(options)
41
+ job.perform
42
+ expect(client).to have_received(:post)
43
+ .with(job.transform, job.job_id, email: 'info@nebulab.it')
44
+ end
45
+ end
46
+
47
+ describe '#perform?' do
48
+ it { expect { job_class.new(options).perform? }.to raise_error(NotImplementedError) }
49
+ end
50
+
51
+ describe '#transform' do
52
+ it { expect(job_class.new(options).transform).to eq('order' => payload) }
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,69 @@
1
+ require 'rails_helper'
2
+
3
+ module Cangaroo
4
+ module Webhook
5
+ RSpec.describe Client do
6
+ let(:client) { Client.new(connection, '/api_path') }
7
+
8
+ let(:connection) { create(:cangaroo_connection) }
9
+
10
+ let(:url) { "http://#{connection.url}/api_path" }
11
+
12
+ let(:request_id) { '123456' }
13
+ let(:parameters) { { email: 'info@nebulab.it' } }
14
+ let(:payload) { { order: { id: 'R12345', state: 'completed' } } }
15
+
16
+ let(:response) do
17
+ { 'request_id': '52f367367575e449c3000001',
18
+ 'summary': 'Successfully updated order for R12345' }
19
+ end
20
+
21
+ before do
22
+ stub_request(:post, /^#{url}.*/)
23
+ .to_return(body: response.to_json, status: 200)
24
+ end
25
+
26
+ describe '.post' do
27
+ it 'makes the post request with correct url, headers and body' do
28
+ client.post(payload, request_id, parameters)
29
+ expect(WebMock).to have_requested(:post,
30
+ 'http://www.store.com/api_path')
31
+ .with(
32
+ headers: { 'X_HUB_TOKEN': connection.token },
33
+ body: {
34
+ request_id: request_id,
35
+ parameters: connection.parameters.deep_merge(parameters),
36
+ order: { id: 'R12345', state: 'completed' }
37
+ }.to_json)
38
+ end
39
+
40
+ context 'when response code is 200 (success)' do
41
+ it 'returns the parsed response' do
42
+ expect(client.post(payload, request_id, parameters))
43
+ .to eq(response.stringify_keys)
44
+ end
45
+ end
46
+
47
+ context 'when response code is not 200 (success)' do
48
+ let(:failure_response) do
49
+ {
50
+ 'request_id': '52f367367575e449c3000001',
51
+ 'summary': 'Cannot update order. Order R12345 not found in storefront.'
52
+ }
53
+ end
54
+
55
+ before do
56
+ stub_request(:post, /^#{url}.*/).to_return(
57
+ body: failure_response.to_json,
58
+ status: 500)
59
+ end
60
+
61
+ it 'raises Cangaroo::Webhook::Error' do
62
+ expect { client.post(payload, request_id, parameters) }
63
+ .to raise_error(Cangaroo::Webhook::Error)
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,15 @@
1
+ require 'rails_helper'
2
+
3
+ module Cangaroo
4
+ RSpec.describe Connection, type: :model do
5
+ it { is_expected.to validate_presence_of(:name) }
6
+ it { is_expected.to validate_presence_of(:url) }
7
+ it { is_expected.to validate_presence_of(:key) }
8
+ it { is_expected.to validate_presence_of(:token) }
9
+
10
+ it { is_expected.to validate_uniqueness_of(:name) }
11
+ it { is_expected.to validate_uniqueness_of(:url) }
12
+ it { is_expected.to validate_uniqueness_of(:key) }
13
+ it { is_expected.to validate_uniqueness_of(:token) }
14
+ end
15
+ end
@@ -0,0 +1,85 @@
1
+ require 'simplecov'
2
+ SimpleCov.start 'rails' do
3
+ add_group 'Commands', 'app/commands'
4
+ end
5
+
6
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
7
+ ENV['RAILS_ENV'] ||= 'test'
8
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
9
+
10
+ # Prevent database truncation if the environment is production
11
+ if Rails.env.production?
12
+ abort('The Rails environment is running in production mode!')
13
+ end
14
+
15
+ require 'spec_helper'
16
+ require 'rspec/rails'
17
+ require 'shoulda-matchers'
18
+ require 'factory_girl_rails'
19
+ require 'database_cleaner'
20
+ require 'webmock/rspec'
21
+
22
+ # Add additional requires below this line. Rails is not loaded until this point!
23
+
24
+ # Requires supporting ruby files with custom matchers and macros, etc, in
25
+ # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
26
+ # run as spec files by default. This means that files in spec/support that end
27
+ # in _spec.rb will both be required and run as specs, causing the specs to be
28
+ # run twice. It is recommended that you do not name files matching this glob to
29
+ # end with _spec.rb. You can configure this pattern with the --pattern
30
+ # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
31
+ #
32
+ # The following line is provided for convenience purposes. It has the downside
33
+ # of increasing the boot-up time by auto-requiring all files in the support
34
+ # directory. Alternatively, in the individual `*_spec.rb` files, manually
35
+ # require only the support files necessary.
36
+ # Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
37
+ Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
38
+
39
+ # Checks for pending migrations before tests are run.
40
+ # If you are not using ActiveRecord, you can remove this line.
41
+ ActiveRecord::Migration.maintain_test_schema!
42
+
43
+ Shoulda::Matchers.configure do |config|
44
+ config.integrate do |with|
45
+ with.test_framework :rspec
46
+ with.library :rails
47
+ end
48
+ end
49
+
50
+ RSpec.configure do |config|
51
+ config.include FactoryGirl::Syntax::Methods
52
+
53
+ config.before(:suite) do
54
+ DatabaseCleaner.strategy = :transaction
55
+ DatabaseCleaner.clean_with(:truncation)
56
+ end
57
+
58
+ config.around(:each) do |example|
59
+ DatabaseCleaner.cleaning do
60
+ example.run
61
+ end
62
+ end
63
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
64
+ # config.fixture_path = "#{::Rails.root}/spec/fixtures"
65
+
66
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
67
+ # examples within a transaction, remove the following line or assign false
68
+ # instead of true.
69
+ # config.use_transactional_fixtures = true
70
+
71
+ # RSpec Rails can automatically mix in different behaviours to your tests
72
+ # based on their file location, for example enabling you to call `get` and
73
+ # `post` in specs under `spec/controllers`.
74
+ #
75
+ # You can disable this behaviour by removing the line below, and instead
76
+ # explicitly tag your specs with their type, e.g.:
77
+ #
78
+ # RSpec.describe UsersController, :type => :controller do
79
+ # # ...
80
+ # end
81
+ #
82
+ # The different available types are documented in the features, such as in
83
+ # https://relishapp.com/rspec/rspec-rails/docs
84
+ config.infer_spec_type_from_file_location!
85
+ end
@@ -0,0 +1,9 @@
1
+ RSpec.configure do |config|
2
+ config.expect_with :rspec do |expectations|
3
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
4
+ end
5
+
6
+ config.mock_with :rspec do |mocks|
7
+ mocks.verify_partial_doubles = true
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ module Cangaroo
2
+ module SpecHelpers
3
+ def load_fixture(filename)
4
+ File.read(File.expand_path("../../fixtures/#{filename}", __FILE__))
5
+ end
6
+ end
7
+ end
8
+
9
+ RSpec.configure do |config|
10
+ config.include Cangaroo::SpecHelpers
11
+ end
metadata ADDED
@@ -0,0 +1,345 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cangaroo
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Alessio Rocco
8
+ - Andrea Pavoni
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-12-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 4.2.4
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 4.2.4
28
+ - !ruby/object:Gem::Dependency
29
+ name: interactor-rails
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '2.0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '2.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: json-schema
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 2.5.1
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 2.5.1
56
+ - !ruby/object:Gem::Dependency
57
+ name: httparty
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 0.13.7
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 0.13.7
70
+ - !ruby/object:Gem::Dependency
71
+ name: pg
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rspec-rails
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: factory_girl_rails
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: database_cleaner
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: shoulda-matchers
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: webmock
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: simplecov
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: rubocop
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ description: Cangaroo helps developers integrating their apps with any service
183
+ email:
184
+ - info@nebulab.it
185
+ executables: []
186
+ extensions: []
187
+ extra_rdoc_files: []
188
+ files:
189
+ - MIT-LICENSE
190
+ - Rakefile
191
+ - app/controllers/cangaroo/application_controller.rb
192
+ - app/controllers/cangaroo/endpoint_controller.rb
193
+ - app/interactors/cangaroo/authenticate_connection.rb
194
+ - app/interactors/cangaroo/count_json_object.rb
195
+ - app/interactors/cangaroo/handle_request.rb
196
+ - app/interactors/cangaroo/perform_jobs.rb
197
+ - app/interactors/cangaroo/validate_json_schema.rb
198
+ - app/jobs/cangaroo/job.rb
199
+ - app/models/cangaroo/connection.rb
200
+ - config/routes.rb
201
+ - db/migrate/20151028172151_create_cangaroo_connections.rb
202
+ - db/migrate/20151030140821_add_parameters_to_cangaroo_connection.rb
203
+ - lib/cangaroo.rb
204
+ - lib/cangaroo/engine.rb
205
+ - lib/cangaroo/version.rb
206
+ - lib/cangaroo/webhook/client.rb
207
+ - lib/cangaroo/webhook/error.rb
208
+ - lib/tasks/cangaroo_tasks.rake
209
+ - spec/controllers/cangaroo/endpoint_controller_spec.rb
210
+ - spec/dummy/README.rdoc
211
+ - spec/dummy/Rakefile
212
+ - spec/dummy/app/assets/javascripts/application.js
213
+ - spec/dummy/app/assets/stylesheets/application.css
214
+ - spec/dummy/app/controllers/application_controller.rb
215
+ - spec/dummy/app/helpers/application_helper.rb
216
+ - spec/dummy/app/views/layouts/application.html.erb
217
+ - spec/dummy/bin/bundle
218
+ - spec/dummy/bin/rails
219
+ - spec/dummy/bin/rake
220
+ - spec/dummy/bin/setup
221
+ - spec/dummy/config.ru
222
+ - spec/dummy/config/application.rb
223
+ - spec/dummy/config/boot.rb
224
+ - spec/dummy/config/database.yml
225
+ - spec/dummy/config/environment.rb
226
+ - spec/dummy/config/environments/development.rb
227
+ - spec/dummy/config/environments/production.rb
228
+ - spec/dummy/config/environments/test.rb
229
+ - spec/dummy/config/initializers/assets.rb
230
+ - spec/dummy/config/initializers/backtrace_silencers.rb
231
+ - spec/dummy/config/initializers/cookies_serializer.rb
232
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
233
+ - spec/dummy/config/initializers/inflections.rb
234
+ - spec/dummy/config/initializers/mime_types.rb
235
+ - spec/dummy/config/initializers/session_store.rb
236
+ - spec/dummy/config/initializers/wrap_parameters.rb
237
+ - spec/dummy/config/locales/en.yml
238
+ - spec/dummy/config/routes.rb
239
+ - spec/dummy/config/secrets.yml
240
+ - spec/dummy/db/development.sqlite3
241
+ - spec/dummy/db/schema.rb
242
+ - spec/dummy/db/test.sqlite3
243
+ - spec/dummy/log/cangaroo.log
244
+ - spec/dummy/log/development.log
245
+ - spec/dummy/log/test.log
246
+ - spec/dummy/public/404.html
247
+ - spec/dummy/public/422.html
248
+ - spec/dummy/public/500.html
249
+ - spec/dummy/public/favicon.ico
250
+ - spec/factories/cangaroo_connections.rb
251
+ - spec/fixtures/json_payload_no_id.json
252
+ - spec/fixtures/json_payload_ok.json
253
+ - spec/fixtures/json_payload_wrong_key.json
254
+ - spec/interactors/cangaroo/authenticate_connection_spec.rb
255
+ - spec/interactors/cangaroo/count_json_object_spec.rb
256
+ - spec/interactors/cangaroo/handle_request_spec.rb
257
+ - spec/interactors/cangaroo/perform_jobs_spec.rb
258
+ - spec/interactors/cangaroo/validate_json_schema_spec.rb
259
+ - spec/jobs/cangaroo/job_spec.rb
260
+ - spec/lib/cangaroo/webhook/client_spec.rb
261
+ - spec/models/cangaroo/connection_spec.rb
262
+ - spec/rails_helper.rb
263
+ - spec/spec_helper.rb
264
+ - spec/support/spec_helpers.rb
265
+ homepage: https://github.com/nebulab/cangaroo
266
+ licenses:
267
+ - MIT
268
+ metadata: {}
269
+ post_install_message:
270
+ rdoc_options: []
271
+ require_paths:
272
+ - lib
273
+ required_ruby_version: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - ">="
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ required_rubygems_version: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: '0'
283
+ requirements: []
284
+ rubyforge_project:
285
+ rubygems_version: 2.5.0
286
+ signing_key:
287
+ specification_version: 4
288
+ summary: Connect Any App to Any Service
289
+ test_files:
290
+ - spec/controllers/cangaroo/endpoint_controller_spec.rb
291
+ - spec/dummy/app/assets/javascripts/application.js
292
+ - spec/dummy/app/assets/stylesheets/application.css
293
+ - spec/dummy/app/controllers/application_controller.rb
294
+ - spec/dummy/app/helpers/application_helper.rb
295
+ - spec/dummy/app/views/layouts/application.html.erb
296
+ - spec/dummy/bin/bundle
297
+ - spec/dummy/bin/rails
298
+ - spec/dummy/bin/rake
299
+ - spec/dummy/bin/setup
300
+ - spec/dummy/config/application.rb
301
+ - spec/dummy/config/boot.rb
302
+ - spec/dummy/config/database.yml
303
+ - spec/dummy/config/environment.rb
304
+ - spec/dummy/config/environments/development.rb
305
+ - spec/dummy/config/environments/production.rb
306
+ - spec/dummy/config/environments/test.rb
307
+ - spec/dummy/config/initializers/assets.rb
308
+ - spec/dummy/config/initializers/backtrace_silencers.rb
309
+ - spec/dummy/config/initializers/cookies_serializer.rb
310
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
311
+ - spec/dummy/config/initializers/inflections.rb
312
+ - spec/dummy/config/initializers/mime_types.rb
313
+ - spec/dummy/config/initializers/session_store.rb
314
+ - spec/dummy/config/initializers/wrap_parameters.rb
315
+ - spec/dummy/config/locales/en.yml
316
+ - spec/dummy/config/routes.rb
317
+ - spec/dummy/config/secrets.yml
318
+ - spec/dummy/config.ru
319
+ - spec/dummy/db/development.sqlite3
320
+ - spec/dummy/db/schema.rb
321
+ - spec/dummy/db/test.sqlite3
322
+ - spec/dummy/log/cangaroo.log
323
+ - spec/dummy/log/development.log
324
+ - spec/dummy/log/test.log
325
+ - spec/dummy/public/404.html
326
+ - spec/dummy/public/422.html
327
+ - spec/dummy/public/500.html
328
+ - spec/dummy/public/favicon.ico
329
+ - spec/dummy/Rakefile
330
+ - spec/dummy/README.rdoc
331
+ - spec/factories/cangaroo_connections.rb
332
+ - spec/fixtures/json_payload_no_id.json
333
+ - spec/fixtures/json_payload_ok.json
334
+ - spec/fixtures/json_payload_wrong_key.json
335
+ - spec/interactors/cangaroo/authenticate_connection_spec.rb
336
+ - spec/interactors/cangaroo/count_json_object_spec.rb
337
+ - spec/interactors/cangaroo/handle_request_spec.rb
338
+ - spec/interactors/cangaroo/perform_jobs_spec.rb
339
+ - spec/interactors/cangaroo/validate_json_schema_spec.rb
340
+ - spec/jobs/cangaroo/job_spec.rb
341
+ - spec/lib/cangaroo/webhook/client_spec.rb
342
+ - spec/models/cangaroo/connection_spec.rb
343
+ - spec/rails_helper.rb
344
+ - spec/spec_helper.rb
345
+ - spec/support/spec_helpers.rb