endpoint_base 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +1 -2
  4. data/Rakefile +18 -1
  5. data/app/views/application/500.json.jbuilder +2 -0
  6. data/app/views/application/response.json.jbuilder +21 -0
  7. data/endpoint_base.gemspec +17 -6
  8. data/lib/endpoint_base.rb +29 -8
  9. data/lib/endpoint_base/concerns.rb +7 -0
  10. data/lib/endpoint_base/concerns/all.rb +15 -0
  11. data/lib/endpoint_base/concerns/exception_handler.rb +26 -0
  12. data/lib/endpoint_base/concerns/param_processor.rb +54 -0
  13. data/lib/endpoint_base/concerns/rails_responder.rb +20 -0
  14. data/lib/endpoint_base/concerns/response_dsl.rb +44 -0
  15. data/lib/endpoint_base/concerns/sinatra_responder.rb +38 -0
  16. data/lib/endpoint_base/concerns/token_authorization.rb +28 -0
  17. data/lib/endpoint_base/rails.rb +1 -0
  18. data/lib/endpoint_base/rails/engine.rb +5 -0
  19. data/lib/endpoint_base/sinatra.rb +2 -0
  20. data/lib/endpoint_base/sinatra/base.rb +11 -0
  21. data/lib/endpoint_base/sinatra/integrator_utils.rb +17 -0
  22. data/spec/rails/controllers/failing_controller_spec.rb +29 -0
  23. data/spec/rails/controllers/happy_controller_spec.rb +35 -0
  24. data/spec/rails/dummy/.gitignore +16 -0
  25. data/spec/rails/dummy/Gemfile +46 -0
  26. data/spec/rails/dummy/README.rdoc +28 -0
  27. data/spec/rails/dummy/Rakefile +6 -0
  28. data/spec/rails/dummy/app/assets/images/.keep +0 -0
  29. data/spec/rails/dummy/app/assets/javascripts/application.js +16 -0
  30. data/spec/rails/dummy/app/assets/stylesheets/application.css +13 -0
  31. data/spec/rails/dummy/app/controllers/application_controller.rb +5 -0
  32. data/spec/rails/dummy/app/controllers/concerns/.keep +0 -0
  33. data/spec/rails/dummy/app/controllers/failing_controller.rb +7 -0
  34. data/spec/rails/dummy/app/controllers/happy_controller.rb +13 -0
  35. data/spec/rails/dummy/app/helpers/application_helper.rb +2 -0
  36. data/spec/rails/dummy/app/mailers/.keep +0 -0
  37. data/spec/rails/dummy/app/models/.keep +0 -0
  38. data/spec/rails/dummy/app/models/concerns/.keep +0 -0
  39. data/spec/rails/dummy/app/views/layouts/application.html.erb +14 -0
  40. data/spec/rails/dummy/bin/bundle +3 -0
  41. data/spec/rails/dummy/bin/rails +4 -0
  42. data/spec/rails/dummy/bin/rake +4 -0
  43. data/spec/rails/dummy/config.ru +4 -0
  44. data/spec/rails/dummy/config/application.rb +28 -0
  45. data/spec/rails/dummy/config/boot.rb +4 -0
  46. data/spec/rails/dummy/config/database.yml +25 -0
  47. data/spec/rails/dummy/config/environment.rb +5 -0
  48. data/spec/rails/dummy/config/environments/development.rb +29 -0
  49. data/spec/rails/dummy/config/environments/production.rb +80 -0
  50. data/spec/rails/dummy/config/environments/test.rb +36 -0
  51. data/spec/rails/dummy/config/initializers/backtrace_silencers.rb +7 -0
  52. data/spec/rails/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  53. data/spec/rails/dummy/config/initializers/inflections.rb +16 -0
  54. data/spec/rails/dummy/config/initializers/mime_types.rb +5 -0
  55. data/spec/rails/dummy/config/initializers/secret_token.rb +12 -0
  56. data/spec/rails/dummy/config/initializers/session_store.rb +3 -0
  57. data/spec/rails/dummy/config/initializers/wrap_parameters.rb +14 -0
  58. data/spec/rails/dummy/config/locales/en.yml +23 -0
  59. data/spec/rails/dummy/config/routes.rb +4 -0
  60. data/spec/rails/dummy/db/seeds.rb +7 -0
  61. data/spec/rails/dummy/lib/assets/.keep +0 -0
  62. data/spec/rails/dummy/lib/tasks/.keep +0 -0
  63. data/spec/rails/dummy/log/.keep +0 -0
  64. data/spec/rails/dummy/public/404.html +58 -0
  65. data/spec/rails/dummy/public/422.html +58 -0
  66. data/spec/rails/dummy/public/500.html +57 -0
  67. data/spec/rails/dummy/public/favicon.ico +0 -0
  68. data/spec/rails/dummy/public/robots.txt +5 -0
  69. data/spec/rails/dummy/vendor/assets/javascripts/.keep +0 -0
  70. data/spec/rails/dummy/vendor/assets/stylesheets/.keep +0 -0
  71. data/spec/rails/spec_helper.rb +13 -0
  72. data/spec/rails/support/controllers.rb +17 -0
  73. data/spec/sinatra/endpoint_base_spec.rb +55 -0
  74. data/spec/sinatra/spec_helper.rb +55 -0
  75. data/spec/spec_helper.rb +3 -32
  76. metadata +217 -18
  77. data/lib/cross_origin.rb +0 -49
  78. data/lib/integrator_utils.rb +0 -58
  79. data/spec/cross_origin_spec.rb +0 -20
  80. data/spec/integrator_utils_spec.rb +0 -52
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Sinatra
4
- describe CrossOrigin do
5
- let(:payload) { {:payload => {} }.to_json }
6
- let(:headers) { {'HTTP_X_AUGURY_TOKEN' => 'x123', "CONTENT_TYPE" => "application/json", 'HTTP_ORIGIN' => 'http://spreecommerce.com'} }
7
-
8
- it "should include CORS headers when ORIGIN is specified" do
9
- post '/', payload, headers
10
- last_response.headers['Access-Control-Allow-Origin'].should == 'http://spreecommerce.com'
11
- end
12
-
13
- it "should not include CORS headers when ORIGIN is not specified" do
14
- headers.delete('HTTP_ORIGIN')
15
- post '/', payload, headers
16
- last_response.headers['Access-Control-Allow-Origin'].should be_nil
17
- end
18
-
19
- end
20
- end
@@ -1,52 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Sinatra
4
- describe IntegratorUtils do
5
- let(:payload) { {:payload => {} }.to_json }
6
- let(:headers) { {'HTTP_X_AUGURY_TOKEN' => 'x123', "CONTENT_TYPE" => "application/json"} }
7
-
8
- it "should reject request without auth" do
9
- post '/', payload
10
- last_response.status.should == 401
11
- end
12
-
13
- it "should accept POST with auth" do
14
- post '/', payload, headers
15
- last_response.status.should == 200
16
- end
17
-
18
- it "should redirect to endpoint.json for GET on root url" do
19
- get '/', nil, {}
20
- last_response.status.should == 302
21
- last_response.location.should == 'http://example.org/endpoint.json'
22
- end
23
-
24
- it 'returns a 200 for /auth check' do
25
- get '/auth', {}, headers
26
- last_response.status.should == 200
27
- end
28
-
29
- it "should parse valid json from body" do
30
- post '/', {payload: {}, test: [{"west" => 1}, {"south" => false}]}.to_json, headers
31
- msg = ::JSON.parse(last_response.body)
32
- msg['test'].size.should == 2
33
- msg['test'].first['west'].should == 1
34
- msg['test'].last[:south].should be_false
35
- end
36
-
37
- it "should return 406 if body is not valid json" do
38
- post '/', 'notjson', headers
39
- last_response.status.should == 406
40
- end
41
-
42
- it "should find parameters" do
43
- body = { 'payload' => { 'parameters' => [{'name' => 'x', 'value' => 1}, {'name' => '2', 'value' => 3}] } }.to_json
44
- post '/config', body, headers
45
-
46
- response = ::JSON.parse(last_response.body)
47
- response['x'].should == 1
48
- response['2'].should == 3
49
- end
50
-
51
- end
52
- end