facebook_canvas 0.4.0 → 0.5.0

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.
@@ -0,0 +1,160 @@
1
+ require 'test_helper'
2
+
3
+ class FacebookCanvas::MiddlewareTest < ActiveSupport::TestCase
4
+ let(:middleware) { FacebookCanvas::Middleware.new(app, request_host, custom_filter, **kwargs) }
5
+ let(:request_host) { %r{.*} }
6
+ let(:custom_filter) { proc { |_env| true } }
7
+ let(:kwargs) { {} }
8
+ let(:app) { proc { |env| [200, {}, env] } }
9
+ let(:env) {
10
+ {
11
+ "SERVER_NAME" => "test.host",
12
+ "REQUEST_METHOD" => original_request_method,
13
+ }
14
+ }
15
+ let(:original_request_method) { "POST" }
16
+
17
+ describe "request_host" do
18
+ describe "matching via regexp" do
19
+ describe "matching any host" do
20
+ let(:request_host) { %r{.*} }
21
+
22
+ test "modifies request method to GET" do
23
+ env["SERVER_NAME"] = "anything"
24
+ assert_request_method "GET"
25
+ end
26
+ end
27
+
28
+ describe "matching speficic host" do
29
+ let(:request_host) { %r{\.fb\.} }
30
+
31
+ test "modifies request method to GET if matched" do
32
+ env["SERVER_NAME"] = "test.fb.host"
33
+ assert_request_method "GET"
34
+ end
35
+
36
+ test "does not change request method" do
37
+ env["SERVER_NAME"] = "test.facebook.host"
38
+ refute_request_method_change
39
+ end
40
+ end
41
+ end
42
+
43
+ describe "matching via proc" do
44
+ let(:request_host) do
45
+ proc { |env| env[:pass_server_name] }
46
+ end
47
+
48
+ test "modifies request method to GET" do
49
+ env[:pass_server_name] = true
50
+ assert_request_method "GET"
51
+ end
52
+
53
+ test "does not change request method" do
54
+ env[:pass_server_name] = false
55
+ refute_request_method_change
56
+ end
57
+ end
58
+
59
+ describe "matching via other objects" do
60
+ let(:request_host) { :something }
61
+
62
+ test "fails initialization with ArgumentError" do
63
+ e = assert_raises ArgumentError do
64
+ middleware
65
+ end
66
+ assert_equal "Expected Regexp or Proc for `request_host` but got: :something", e.message
67
+ end
68
+ end
69
+ end
70
+
71
+ describe "custom_filter" do
72
+ let(:custom_filter) do
73
+ proc { |env| env[:pass_custom_filter] }
74
+ end
75
+
76
+ test "modifies request method to GET if matched" do
77
+ env[:pass_custom_filter] = true
78
+ assert_request_method "GET"
79
+ end
80
+
81
+ test "prevents change of request method" do
82
+ env[:pass_custom_filter] = false
83
+ refute_request_method_change
84
+ end
85
+ end
86
+
87
+ describe "with Rails' POST request" do
88
+ before do
89
+ env["rack.request.form_hash"] = {
90
+ "utf8" => "✓"
91
+ }
92
+ end
93
+
94
+ test "does not change request method" do
95
+ refute_request_method_change
96
+ end
97
+ end
98
+
99
+ describe "with Rails' XHR requests" do
100
+ before do
101
+ env["HTTP_X_REQUESTED_WITH"] = "XMLHttpRequest"
102
+ end
103
+
104
+ test "does not change request method" do
105
+ refute_request_method_change
106
+ end
107
+ end
108
+
109
+ describe "inside_filter" do
110
+ describe "is optional" do
111
+ test "modifies request method to GET if matched" do
112
+ # no kwargs
113
+ assert_request_method "GET"
114
+ end
115
+ end
116
+
117
+ describe "is set" do
118
+ before do
119
+ kwargs[:inside_filter] = proc { |env| env[:pass_inside_filter] }
120
+ end
121
+
122
+ describe "accepted by the filter" do
123
+ before do
124
+ env[:pass_inside_filter] = true
125
+ end
126
+
127
+ test ".inside?(env) returns true" do
128
+ _, _, new_env = middleware.call(env)
129
+ assert FacebookCanvas::Middleware.inside?(new_env)
130
+ end
131
+
132
+ test "modifies request method to GET if matched" do
133
+ assert_request_method "GET"
134
+ end
135
+ end
136
+
137
+ describe "denied by the filter" do
138
+ before do
139
+ env[:pass_inside_filter] = false
140
+ end
141
+ test "does not change request method" do
142
+ refute_request_method_change
143
+ end
144
+ end
145
+ end
146
+ end
147
+
148
+ private
149
+
150
+ def assert_request_method(expected)
151
+ status, headers, body = middleware.call(env)
152
+
153
+ assert_instance_of Hash, body
154
+ assert_equal expected, body.fetch("REQUEST_METHOD")
155
+ end
156
+
157
+ def refute_request_method_change
158
+ assert_request_method original_request_method
159
+ end
160
+ end
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class FacebookCanvas::MiddlewareTest < ActionDispatch::IntegrationTest
3
+ class FacebookCanvas::IntegrationMiddlewareTest < ActionDispatch::IntegrationTest
4
4
  test 'convert post to get request' do
5
5
  post '/foo/index'
6
6
  assert_response :success
data/test/test_helper.rb CHANGED
@@ -1,7 +1,5 @@
1
- if ENV['CODECLIMATE_REPO_TOKEN']
2
- require "codeclimate-test-reporter"
3
- CodeClimate::TestReporter.start
4
- end
1
+ require "simplecov"
2
+ SimpleCov.start
5
3
 
6
4
  # Configure Rails Environment
7
5
  ENV["RAILS_ENV"] = "test"
@@ -10,6 +8,7 @@ require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
10
8
  require "rails/test_help"
11
9
 
12
10
  require "minitest/rails"
11
+ require "minitest/focus" unless ENV["CI"]
13
12
 
14
13
  # Filter out Minitest backtrace while allowing backtrace from other libraries
15
14
  # to be shown.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facebook_canvas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Stuhrmann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-06 00:00:00.000000000 Z
11
+ date: 2017-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest-focus
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description:
42
56
  email:
43
57
  - as@neopoly.de
@@ -92,6 +106,7 @@ files:
92
106
  - test/dummy/public/422.html
93
107
  - test/dummy/public/500.html
94
108
  - test/dummy/public/favicon.ico
109
+ - test/facebook_canvas/middleware_test.rb
95
110
  - test/facebook_canvas/signed_request_test.rb
96
111
  - test/facebook_canvas_test.rb
97
112
  - test/fixtures/signed_request.txt
@@ -118,51 +133,52 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
133
  version: '0'
119
134
  requirements: []
120
135
  rubyforge_project:
121
- rubygems_version: 2.4.8
136
+ rubygems_version: 2.6.11
122
137
  signing_key:
123
138
  specification_version: 4
124
139
  summary: Rails engine for Facebook's canvas integration.
125
140
  test_files:
126
- - test/facebook_canvas/signed_request_test.rb
127
141
  - test/integration/middleware_test.rb
128
- - test/dummy/config/application.rb
142
+ - test/facebook_canvas_test.rb
143
+ - test/test_helper.rb
144
+ - test/facebook_canvas/middleware_test.rb
145
+ - test/facebook_canvas/signed_request_test.rb
146
+ - test/dummy/log/test.log
147
+ - test/dummy/Rakefile
148
+ - test/dummy/bin/setup
149
+ - test/dummy/bin/rails
150
+ - test/dummy/bin/bundle
151
+ - test/dummy/bin/rake
152
+ - test/dummy/README.rdoc
153
+ - test/dummy/config/environment.rb
154
+ - test/dummy/config/boot.rb
155
+ - test/dummy/config/secrets.yml
129
156
  - test/dummy/config/routes.rb
130
- - test/dummy/config/database.yml
157
+ - test/dummy/config/initializers/inflections.rb
158
+ - test/dummy/config/initializers/filter_parameter_logging.rb
159
+ - test/dummy/config/initializers/session_store.rb
131
160
  - test/dummy/config/initializers/cookies_serializer.rb
132
161
  - test/dummy/config/initializers/backtrace_silencers.rb
133
162
  - test/dummy/config/initializers/mime_types.rb
134
- - test/dummy/config/initializers/assets.rb
135
163
  - test/dummy/config/initializers/wrap_parameters.rb
136
- - test/dummy/config/initializers/session_store.rb
137
- - test/dummy/config/initializers/inflections.rb
138
- - test/dummy/config/initializers/filter_parameter_logging.rb
164
+ - test/dummy/config/initializers/assets.rb
165
+ - test/dummy/config/database.yml
166
+ - test/dummy/config/locales/en.yml
167
+ - test/dummy/config/environments/development.rb
139
168
  - test/dummy/config/environments/production.rb
140
169
  - test/dummy/config/environments/test.rb
141
- - test/dummy/config/environments/development.rb
142
- - test/dummy/config/locales/en.yml
143
- - test/dummy/config/environment.rb
144
- - test/dummy/config/boot.rb
145
- - test/dummy/config/secrets.yml
146
- - test/dummy/config.ru
147
- - test/dummy/bin/bundle
148
- - test/dummy/bin/rake
149
- - test/dummy/bin/rails
150
- - test/dummy/bin/setup
151
- - test/dummy/Rakefile
152
- - test/dummy/README.rdoc
153
- - test/dummy/app/assets/stylesheets/application.css
154
- - test/dummy/app/assets/javascripts/application.js
155
- - test/dummy/app/helpers/application_helper.rb
156
- - test/dummy/app/controllers/foo_controller.rb
157
- - test/dummy/app/controllers/application_controller.rb
158
- - test/dummy/app/views/foo/create.haml
159
- - test/dummy/app/views/layouts/application.html.erb
160
- - test/dummy/log/test.log
161
- - test/dummy/public/favicon.ico
162
- - test/dummy/public/404.html
170
+ - test/dummy/config/application.rb
163
171
  - test/dummy/public/500.html
164
172
  - test/dummy/public/422.html
165
- - test/test_helper.rb
166
- - test/facebook_canvas_test.rb
167
- - test/fixtures/signed_request_with_user_id.txt
173
+ - test/dummy/public/404.html
174
+ - test/dummy/public/favicon.ico
175
+ - test/dummy/app/views/foo/create.haml
176
+ - test/dummy/app/views/layouts/application.html.erb
177
+ - test/dummy/app/assets/javascripts/application.js
178
+ - test/dummy/app/assets/stylesheets/application.css
179
+ - test/dummy/app/controllers/application_controller.rb
180
+ - test/dummy/app/controllers/foo_controller.rb
181
+ - test/dummy/app/helpers/application_helper.rb
182
+ - test/dummy/config.ru
168
183
  - test/fixtures/signed_request.txt
184
+ - test/fixtures/signed_request_with_user_id.txt