rack-iframe 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,10 +6,12 @@ module Rack
6
6
  class Iframe
7
7
 
8
8
  DEFAULT_P3P = %(CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV").freeze
9
+ DEFAULT_IFRAME_SESSION_PATH = '/iframe_session'.freeze
9
10
 
10
11
  def initialize(app, options = {})
11
12
  @app, @options = app, options
12
13
  @options[:p3p] ||= DEFAULT_P3P
14
+ @options[:iframe_session_path] ||= DEFAULT_IFRAME_SESSION_PATH
13
15
  end
14
16
 
15
17
  def call(env)
@@ -17,7 +19,11 @@ module Rack
17
19
  set_invalid_etag!(env) if set_p3p_header?(env)
18
20
 
19
21
  # 2) Request
20
- @status, @headers, @body = @app.call(env)
22
+ if iframe_session_path?(env)
23
+ @status, @headers, @body = iframe_session_response
24
+ else
25
+ @status, @headers, @body = @app.call(env)
26
+ end
21
27
 
22
28
  # 3) If P3P: Attach P3P header.
23
29
  set_p3p_header! if set_p3p_header?(env)
@@ -67,5 +73,13 @@ module Rack
67
73
  end
68
74
  end
69
75
 
76
+ def iframe_session_path?(env)
77
+ env['PATH_INFO'] == @options[:iframe_session_path]
78
+ end
79
+
80
+ def iframe_session_response
81
+ [200, {}, [""]]
82
+ end
83
+
70
84
  end
71
85
  end
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  class Iframe
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -186,7 +186,24 @@ describe Rack::Iframe do
186
186
  end
187
187
  end
188
188
  end
189
+
190
+ describe "any browser: Iframe session cookie hack" do
191
+ before do
192
+ @user_agents = [:safari]
193
+ end
194
+
195
+ it 'should respond to * /iframe_session with P3P header - modified (200 OK)' do
196
+ @user_agents.each do |user_agent|
197
+ request = mock_request(user_agent, {}, '/iframe_session')
198
+
199
+ response = Rack::Iframe.new(@app).call(request)
200
+ status, headers, body = response
201
+
202
+ headers['P3P'].must_equal %(CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV")
203
+ status.must_equal 200 # modified
204
+ end
205
+ end
206
+ end
189
207
  end
190
208
  end
191
-
192
209
  end
@@ -54,11 +54,11 @@ def rack_cache(app, options = {})
54
54
  Rack::Cache.new(app, options)
55
55
  end
56
56
 
57
- def mock_request(user_agent_key, env = {})
57
+ def mock_request(user_agent_key, env = {}, path = '/')
58
58
  headers = {
59
59
  'HTTP_USER_AGENT' => user_agent_string(user_agent_key)
60
60
  }.merge(env)
61
- Rack::MockRequest.env_for('/', headers)
61
+ Rack::MockRequest.env_for(path, headers)
62
62
  end
63
63
 
64
64
  def random_etag
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-iframe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-10-28 00:00:00.000000000 Z
14
+ date: 2011-11-01 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rack
18
- requirement: &70167973270460 !ruby/object:Gem::Requirement
18
+ requirement: &70224205432460 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70167973270460
26
+ version_requirements: *70224205432460
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
- requirement: &70167973269900 !ruby/object:Gem::Requirement
29
+ requirement: &70224205432020 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *70167973269900
37
+ version_requirements: *70224205432020
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: bundler
40
- requirement: &70167973269260 !ruby/object:Gem::Requirement
40
+ requirement: &70224205431400 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *70167973269260
48
+ version_requirements: *70224205431400
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: minitest
51
- requirement: &70167973268820 !ruby/object:Gem::Requirement
51
+ requirement: &70224205430820 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '0'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *70167973268820
59
+ version_requirements: *70224205430820
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: guard
62
- requirement: &70167973268400 !ruby/object:Gem::Requirement
62
+ requirement: &70224205430400 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *70167973268400
70
+ version_requirements: *70224205430400
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: guard-bundler
73
- requirement: &70167973267980 !ruby/object:Gem::Requirement
73
+ requirement: &70224205429980 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: '0'
79
79
  type: :development
80
80
  prerelease: false
81
- version_requirements: *70167973267980
81
+ version_requirements: *70224205429980
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: guard-minitest
84
- requirement: &70167973267480 !ruby/object:Gem::Requirement
84
+ requirement: &70224205429480 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
@@ -89,10 +89,10 @@ dependencies:
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
- version_requirements: *70167973267480
92
+ version_requirements: *70224205429480
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: rack-test
95
- requirement: &70167973266940 !ruby/object:Gem::Requirement
95
+ requirement: &70224205428980 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ! '>='
@@ -100,10 +100,10 @@ dependencies:
100
100
  version: '0'
101
101
  type: :development
102
102
  prerelease: false
103
- version_requirements: *70167973266940
103
+ version_requirements: *70224205428980
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: rack-cache
106
- requirement: &70167973266320 !ruby/object:Gem::Requirement
106
+ requirement: &70224205428420 !ruby/object:Gem::Requirement
107
107
  none: false
108
108
  requirements:
109
109
  - - ! '>='
@@ -111,10 +111,10 @@ dependencies:
111
111
  version: '0'
112
112
  type: :development
113
113
  prerelease: false
114
- version_requirements: *70167973266320
114
+ version_requirements: *70224205428420
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: chronic
117
- requirement: &70167973265500 !ruby/object:Gem::Requirement
117
+ requirement: &70224205427620 !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements:
120
120
  - - ! '>='
@@ -122,10 +122,10 @@ dependencies:
122
122
  version: '0'
123
123
  type: :development
124
124
  prerelease: false
125
- version_requirements: *70167973265500
125
+ version_requirements: *70224205427620
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: awesome_print
128
- requirement: &70167973264440 !ruby/object:Gem::Requirement
128
+ requirement: &70224205426500 !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
131
  - - ! '>='
@@ -133,10 +133,10 @@ dependencies:
133
133
  version: '0'
134
134
  type: :development
135
135
  prerelease: false
136
- version_requirements: *70167973264440
136
+ version_requirements: *70224205426500
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: sinatra
139
- requirement: &70167973263660 !ruby/object:Gem::Requirement
139
+ requirement: &70224205425760 !ruby/object:Gem::Requirement
140
140
  none: false
141
141
  requirements:
142
142
  - - ! '>='
@@ -144,7 +144,7 @@ dependencies:
144
144
  version: '0'
145
145
  type: :development
146
146
  prerelease: false
147
- version_requirements: *70167973263660
147
+ version_requirements: *70224205425760
148
148
  description: Rack middleware for enabling problematic web browsers (Internet Explorer
149
149
  and Safari) to use same cookies in iframes as in parent windows.
150
150
  email:
@@ -182,7 +182,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
182
  version: '0'
183
183
  segments:
184
184
  - 0
185
- hash: 3290203845642389863
185
+ hash: -3225928049267512743
186
186
  required_rubygems_version: !ruby/object:Gem::Requirement
187
187
  none: false
188
188
  requirements:
@@ -191,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
191
  version: '0'
192
192
  segments:
193
193
  - 0
194
- hash: 3290203845642389863
194
+ hash: -3225928049267512743
195
195
  requirements: []
196
196
  rubyforge_project: rack-iframe
197
197
  rubygems_version: 1.8.10