rack-iframe 0.0.1 → 0.0.2

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.
@@ -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