rack-cors 0.2.8 → 0.2.9

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.

Potentially problematic release.


This version of rack-cors might be problematic. Click here for more details.

@@ -0,0 +1,20 @@
1
+ <html>
2
+ <head>
3
+ <meta charset="utf-8">
4
+ <title>Mocha Tests</title>
5
+ <link rel="stylesheet" href="mocha.css" />
6
+ </head>
7
+ <body>
8
+ <div id="mocha"></div>
9
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
10
+ <script src="expect.js"></script>
11
+ <script src="mocha.js"></script>
12
+ <script>mocha.setup('bdd')</script>
13
+ <script src="test.cors.js"></script>
14
+ <script>
15
+ mocha.checkLeaks();
16
+ mocha.globals(['jQuery']);
17
+ mocha.run();
18
+ </script>
19
+ </body>
20
+ </html>
@@ -0,0 +1,23 @@
1
+ CORS_SERVER = 'cors-server:3000'
2
+
3
+ describe 'CORS', ->
4
+
5
+ it 'should allow access to dynamic resource', (done) ->
6
+ $.get "http://#{CORS_SERVER}/", (data, status, xhr) ->
7
+ expect(data).to.eql('Hello world')
8
+ done()
9
+
10
+ it 'should allow access to static resource', (done) ->
11
+ $.get "http://#{CORS_SERVER}/static.txt", (data, status, xhr) ->
12
+ expect($.trim(data)).to.eql("hello world")
13
+ done()
14
+
15
+ it 'should allow post resource', (done) ->
16
+ $.ajax
17
+ type: 'POST'
18
+ url: "http://#{CORS_SERVER}/cors"
19
+ beforeSend: (xhr) -> xhr.setRequestHeader('X-Requested-With', 'XMLHTTPRequest')
20
+ success:(data, status, xhr) ->
21
+ expect($.trim(data)).to.eql("OK!")
22
+ done()
23
+
@@ -0,0 +1,34 @@
1
+ (function() {
2
+ var CORS_SERVER;
3
+
4
+ CORS_SERVER = 'cors-server:3000';
5
+
6
+ describe('CORS', function() {
7
+ it('should allow access to dynamic resource', function(done) {
8
+ return $.get("http://" + CORS_SERVER + "/", function(data, status, xhr) {
9
+ expect(data).to.eql('Hello world');
10
+ return done();
11
+ });
12
+ });
13
+ it('should allow access to static resource', function(done) {
14
+ return $.get("http://" + CORS_SERVER + "/static.txt", function(data, status, xhr) {
15
+ expect($.trim(data)).to.eql("hello world");
16
+ return done();
17
+ });
18
+ });
19
+ return it('should allow post resource', function(done) {
20
+ return $.ajax({
21
+ type: 'POST',
22
+ url: "http://" + CORS_SERVER + "/cors",
23
+ beforeSend: function(xhr) {
24
+ return xhr.setRequestHeader('X-Requested-With', 'XMLHTTPRequest');
25
+ },
26
+ success: function(data, status, xhr) {
27
+ expect($.trim(data)).to.eql("OK!");
28
+ return done();
29
+ }
30
+ });
31
+ });
32
+ });
33
+
34
+ }).call(this);
@@ -1,7 +1,8 @@
1
1
  require 'rubygems'
2
+ require 'test/unit'
2
3
  require 'rack/test'
3
4
  require 'shoulda'
4
- require 'mocha'
5
+ require 'mocha/setup'
5
6
  require 'rack/cors'
6
7
 
7
8
  Rack::Test::Session.class_eval do
@@ -24,6 +25,10 @@ class CorsTest < Test::Unit::TestCase
24
25
 
25
26
  should('support simple cors request') { cors_request }
26
27
 
28
+ should 'support OPTIONS cors request' do
29
+ cors_request '/options', :method => :options
30
+ end
31
+
27
32
  should 'support regex origins configuration' do
28
33
  cors_request :origin => 'http://192.168.0.1:1234'
29
34
  end
@@ -62,6 +67,18 @@ class CorsTest < Test::Unit::TestCase
62
67
  assert_nil last_response.headers['Vary'], 'no expecting Vary header'
63
68
  end
64
69
 
70
+ should 'support multi allow configurations for the same resource' do
71
+ cors_request '/multi-allow-config', :origin => "http://mucho-grande.com"
72
+ assert_cors_success
73
+ assert_equal 'http://mucho-grande.com', last_response.headers['Access-Control-Allow-Origin']
74
+ assert_equal 'Origin', last_response.headers['Vary'], 'expecting Vary header'
75
+
76
+ cors_request '/multi-allow-config', :origin => "http://192.168.1.3:8080"
77
+ assert_cors_success
78
+ assert_equal '*', last_response.headers['Access-Control-Allow-Origin']
79
+ assert_nil last_response.headers['Vary'], 'no expecting Vary header'
80
+ end
81
+
65
82
  should 'not log debug messages if debug option is false' do
66
83
  app = mock
67
84
  app.stubs(:call).returns(200, {}, [''])
@@ -90,11 +107,6 @@ class CorsTest < Test::Unit::TestCase
90
107
  assert_cors_failure
91
108
  end
92
109
 
93
- should 'fail if Access-Control-Request-Method does not exist' do
94
- preflight_request('http://localhost:3000', '/', :method => nil)
95
- assert_cors_failure
96
- end
97
-
98
110
  should 'fail if Access-Control-Request-Method is not allowed' do
99
111
  preflight_request('http://localhost:3000', '/get-only', :method => :post)
100
112
  assert_cors_failure
@@ -154,11 +166,11 @@ class CorsTest < Test::Unit::TestCase
154
166
  def cors_request(*args)
155
167
  path = args.first.is_a?(String) ? args.first : '/'
156
168
 
157
- opts = args.last.is_a?(Hash) ? args.last : {:origin => 'http://localhost:3000'}
158
- origin = opts[:origin]
169
+ opts = { :method => :get, :origin => 'http://localhost:3000' }
170
+ opts.merge! args.last if args.last.is_a?(Hash)
159
171
 
160
- header 'Origin', origin
161
- get path
172
+ header 'Origin', opts[:origin]
173
+ current_session.__send__ opts[:method], path
162
174
  assert_cors_success
163
175
  end
164
176
 
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ require 'test/unit'
2
3
  require 'rack/cors'
3
4
  require 'shoulda'
4
5
 
data/test/unit/test.ru CHANGED
@@ -1,11 +1,13 @@
1
1
  require 'rack/cors'
2
2
 
3
+ #use Rack::Cors, :debug => true, :logger => ::Logger.new(STDOUT) do
3
4
  use Rack::Cors do
4
5
  allow do
5
6
  origins 'localhost:3000', '127.0.0.1:3000', /http:\/\/192\.168\.0\.\d{1,3}(:\d+)?/, 'file://'
6
7
 
7
8
  resource '/get-only', :methods => :get
8
9
  resource '/', :headers => :any
10
+ resource '/options', :methods => :options
9
11
  resource '/single_header', :headers => 'x-domain-token'
10
12
  resource '/two_headers', :headers => %w{x-domain-token x-requested-with}
11
13
  resource '/expose_single_header', :expose => 'expose-test'
@@ -28,6 +30,16 @@ use Rack::Cors do
28
30
  resource '/public'
29
31
  resource '/public_without_credentials', :credentials => false
30
32
  end
33
+
34
+ allow do
35
+ origins 'mucho-grande.com'
36
+ resource '/multi-allow-config', :max_age => 600
37
+ end
38
+
39
+ allow do
40
+ origins '*'
41
+ resource '/multi-allow-config', :max_age => 300, :credentials => false
42
+ end
31
43
  end
32
44
 
33
45
  map '/' do
metadata CHANGED
@@ -1,36 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-cors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
5
- prerelease:
4
+ version: 0.2.9
6
5
  platform: ruby
7
6
  authors:
8
7
  - Calvin Yu
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-31 00:00:00.000000000 Z
11
+ date: 2013-11-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: rack
14
+ name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
19
+ version: '1.3'
20
+ type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ~>
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: '1.3'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: shoulda
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ! '>='
60
53
  - !ruby/object:Gem::Version
@@ -62,23 +55,20 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: mocha
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
69
- version: '0'
61
+ version: 0.14.0
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ! '>='
76
67
  - !ruby/object:Gem::Version
77
- version: '0'
68
+ version: 0.14.0
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rack-test
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ! '>='
84
74
  - !ruby/object:Gem::Version
@@ -86,89 +76,66 @@ dependencies:
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ! '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: bundler
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: 1.1.0
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: 1.1.0
110
- - !ruby/object:Gem::Dependency
111
- name: jeweler
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ~>
116
- - !ruby/object:Gem::Version
117
- version: 1.8.3
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ~>
124
- - !ruby/object:Gem::Version
125
- version: 1.8.3
126
83
  description: ! 'Middleware that will make Rack-based apps CORS compatible. Read more
127
84
  here: http://blog.sourcebender.com/2010/06/09/introducin-rack-cors.html. Fork the
128
85
  project here: http://github.com/cyu/rack-cors'
129
- email: me@sourcebender.com
86
+ email:
87
+ - me@sourcebender.com
130
88
  executables: []
131
89
  extensions: []
132
- extra_rdoc_files:
133
- - LICENSE.txt
134
- - README.rdoc
90
+ extra_rdoc_files: []
135
91
  files:
136
92
  - Gemfile
137
93
  - LICENSE.txt
138
94
  - README.rdoc
139
95
  - Rakefile
140
- - VERSION
141
96
  - lib/rack/cors.rb
97
+ - lib/rack/cors/version.rb
142
98
  - rack-cors.gemspec
99
+ - test/cors/expect.js
100
+ - test/cors/mocha.css
101
+ - test/cors/mocha.js
102
+ - test/cors/runner.html
103
+ - test/cors/test.cors.coffee
104
+ - test/cors/test.cors.js
143
105
  - test/unit/cors_test.rb
144
106
  - test/unit/dsl_test.rb
145
107
  - test/unit/test.ru
146
108
  homepage: http://github.com/cyu/rack-cors
147
109
  licenses:
148
110
  - MIT
111
+ metadata: {}
149
112
  post_install_message:
150
113
  rdoc_options: []
151
114
  require_paths:
152
115
  - lib
153
116
  required_ruby_version: !ruby/object:Gem::Requirement
154
- none: false
155
117
  requirements:
156
118
  - - ! '>='
157
119
  - !ruby/object:Gem::Version
158
120
  version: '0'
159
- segments:
160
- - 0
161
- hash: -1437619420423070521
162
121
  required_rubygems_version: !ruby/object:Gem::Requirement
163
- none: false
164
122
  requirements:
165
123
  - - ! '>='
166
124
  - !ruby/object:Gem::Version
167
125
  version: '0'
168
126
  requirements: []
169
127
  rubyforge_project:
170
- rubygems_version: 1.8.23
128
+ rubygems_version: 2.1.9
171
129
  signing_key:
172
- specification_version: 3
130
+ specification_version: 4
173
131
  summary: Middleware for enabling Cross-Origin Resource Sharing in Rack apps
174
- test_files: []
132
+ test_files:
133
+ - test/cors/expect.js
134
+ - test/cors/mocha.css
135
+ - test/cors/mocha.js
136
+ - test/cors/runner.html
137
+ - test/cors/test.cors.coffee
138
+ - test/cors/test.cors.js
139
+ - test/unit/cors_test.rb
140
+ - test/unit/dsl_test.rb
141
+ - test/unit/test.ru
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.2.8