cuba-api 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,16 @@
1
+ module CubaApi
2
+ class AllowSessionRack
3
+ def initialize( app, *not_pattern )
4
+ @app = app
5
+ @regexp = /^\/#{not_pattern.join( '|^\/' )}/
6
+ end
7
+
8
+ def call( env )
9
+ status, headers, resp = @app.call( env )
10
+ if not( env[ 'PATH_INFO' ].match @regexp )
11
+ headers.delete( 'Set-Cookie' )
12
+ end
13
+ [ status, headers, resp ]
14
+ end
15
+ end
16
+ end
@@ -20,19 +20,86 @@
20
20
  #
21
21
  # -*- Coding: utf-8 -*-
22
22
 
23
+ require 'ixtlan/user_management/guard'
24
+
25
+ # TODO move to upstream
26
+ class Ixtlan::UserManagement::Permission
27
+ attribute :parent, Ixtlan::UserManagement::Permission
28
+ end
29
+
23
30
  module CubaApi
24
31
  module Guard
25
- warn 'DEPRECATED: guard will disappear as it is now'
26
- def allowed?( *group_names )
27
- authenticated? && ( allowed_groups( *group_names ).size > 0 )
28
- end
32
+ module ClassMethods
29
33
 
30
- def allowed_groups( *group_names )
31
- current_groups.select { |g| group_names.member?( g.name ) }
34
+ def guard( &block )
35
+ self[ :guard ] ||= block ||
36
+ begin
37
+ warn 'no guard configured. default guard denies eveythings !'
38
+ guard = Ixtlan::UserManagement::Guard.new
39
+ Proc.new do |groups|
40
+ guard
41
+ end
42
+ end
43
+ end
44
+
32
45
  end
33
46
 
34
47
  def current_groups
35
48
  current_user.groups
36
49
  end
50
+
51
+ def allowed_associations
52
+ guard.associations( @_context, @_method )
53
+ end
54
+
55
+ def on_context( name, &block )
56
+ perm = guard.permissions( name )
57
+ if perm && perm.parent &&
58
+ perm.parent.resource != @_context
59
+ raise 'parent resource is not guarded'
60
+ end
61
+ on name do
62
+ old = @_context
63
+ @_context = name
64
+ yield( *captures )
65
+ @_context = old
66
+ end
67
+ end
68
+
69
+ def on_association
70
+ on :association do |association|
71
+ # TODO one method in guard
72
+ asso = guard.permissions( @_context ).associations
73
+ if asso.empty? or asso.include?( association )
74
+ yield( association )
75
+ else
76
+ no_body :forbidden
77
+ end
78
+ end
79
+ end
80
+
81
+ def on_guard( method, *args)
82
+ args.insert( 0, send( method ) )
83
+ on *args do
84
+
85
+ @_method = method
86
+
87
+ warn "[CubaApi::Guard] check #{method.to_s.upcase} #{@_context}: #{guard.allow?( @_context, method )}"
88
+ # TODO guard needs no association here
89
+ if guard.allow?( @_context, method, (allowed_associations || []).first )
90
+
91
+ yield( *captures )
92
+ else
93
+ no_body :forbidden # 403
94
+ end
95
+ end
96
+ end
97
+
98
+ private
99
+
100
+ def guard
101
+ self.class.guard.call( current_groups )
102
+ end
103
+
37
104
  end
38
105
  end
@@ -15,6 +15,13 @@ module CubaApi
15
15
  req.options?
16
16
  end
17
17
 
18
+ # convenient method for status only responses
19
+ def no_body( status )
20
+ res.status = Rack::Utils.status_code( status )
21
+ res.write Rack::Utils::HTTP_STATUS_CODES[ res.status ]
22
+ res['Content-Type' ] = 'text/plain'
23
+ end
24
+
18
25
  # params
19
26
  def to_float( name, default = nil )
20
27
  v = req[ name ]
@@ -39,12 +39,6 @@ module CubaApi
39
39
  end
40
40
  end
41
41
 
42
- def no_body( status )
43
- res.status = Rack::Utils.status_code( status )
44
- res.write Rack::Utils::HTTP_STATUS_CODES[ res.status ]
45
- res['Content-Type' ] = 'text/plain'
46
- end
47
-
48
42
  def write( obj, options = {} )
49
43
  self.res.status = options[:status] || 200
50
44
  # make sure we inherit aspects and repsect the order
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'cuba_api/config'
3
+ require 'cuba_api/utils'
3
4
  require 'cuba_api/write_aspect'
4
5
  require 'cuba_api/accept_content'
5
6
  require 'yaml'
@@ -15,6 +16,7 @@ describe CubaApi::AcceptContent do
15
16
  before do
16
17
  Cuba.reset!
17
18
  Cuba.plugin CubaApi::Config
19
+ Cuba.plugin CubaApi::Utils
18
20
  Cuba[ :aspects ] = []
19
21
  Cuba.plugin CubaApi::WriteAspect
20
22
  Cuba.plugin CubaApi::AcceptContent
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+ require 'cuba_api/allow_session_rack'
3
+
4
+ describe CubaApi::AllowSessionRack do
5
+
6
+ before do
7
+ Cuba.reset!
8
+ Cuba.use CubaApi::AllowSessionRack, 'session', 'system'
9
+ Cuba.use Rack::Session::Cookie, :secret => 'secret'
10
+ Cuba.define do
11
+ on 'session' do
12
+ session[ 'name' ] = :me
13
+ end
14
+ end
15
+ end
16
+
17
+ it 'allows session' do
18
+ _, headers, _ = Cuba.call( { 'PATH_INFO' => '/session',
19
+ 'SCRIPT_NAME' => '/session' } )
20
+
21
+ headers[ 'Set-Cookie' ].must_not.eq nil
22
+ end
23
+
24
+ it 'does NOT allows session' do
25
+ _, headers, _ = Cuba.call( { 'PATH_INFO' => '/something',
26
+ 'SCRIPT_NAME' => '/something' } )
27
+
28
+ headers[ 'Set-Cookie' ].must.eq nil
29
+ end
30
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+ require 'cuba_api/config'
3
+ require 'cuba_api/write_aspect'
4
+
5
+ module Plugin
6
+ def one( obj, opts )
7
+ obj + "-one"
8
+ end
9
+ def two( obj, opts )
10
+ obj + "-two"
11
+ end
12
+ def three( obj, opts )
13
+ obj + "-three"
14
+ end
15
+ end
16
+
17
+ describe CubaApi::WriteAspect do
18
+
19
+ before do
20
+ Cuba.reset!
21
+ Cuba.plugin CubaApi::Config
22
+ Cuba[ :aspects ] = []
23
+ Cuba.plugin CubaApi::WriteAspect
24
+ Cuba.plugin Plugin
25
+ Cuba.append_aspect :one
26
+ Cuba.prepend_aspect :two
27
+ Cuba.append_aspect :three
28
+ Cuba.define do
29
+ on true do
30
+ write 'start'
31
+ end
32
+ end
33
+ end
34
+
35
+ after { Cuba.config.clear }
36
+
37
+ it 'should execute aspects in the right order' do
38
+ _, _, resp = Cuba.call({})
39
+
40
+ resp.join.must.eq "start-two-one-three"
41
+ end
42
+ end
@@ -0,0 +1,262 @@
1
+ require File.expand_path( File.join( File.dirname( __FILE__ ),
2
+ 'spec_helper.rb' ) )
3
+ require 'cuba_api/config'
4
+ require 'cuba_api/utils'
5
+ require 'cuba_api/guard'
6
+ require 'ixtlan/user_management/group_model'
7
+
8
+ describe CubaApi::Guard do
9
+
10
+ let( :root ) { Ixtlan::UserManagement::Group.new( :name => 'root' ) }
11
+
12
+ before do
13
+ Cuba.reset!
14
+ Cuba.plugin CubaApi::Config
15
+ Cuba.plugin CubaApi::Utils
16
+ Cuba.plugin CubaApi::Guard
17
+ Cuba.define do
18
+
19
+ def current_groups
20
+ @groups ||= [ root ]
21
+ end
22
+
23
+ on_context 'admins' do
24
+ res.write "admins"
25
+ end
26
+
27
+ on_context 'users' do
28
+
29
+ on_context 'accounts' do
30
+ on_guard :get do
31
+ res.write "get accounts"
32
+ end
33
+ end
34
+
35
+ on_association do |id|
36
+ on_guard :post do
37
+ res.write "post#{id}"
38
+ end
39
+ on_guard :get do
40
+ res.write "get#{id}"
41
+ end
42
+ on_guard :put do
43
+ res.write "put#{id}"
44
+ end
45
+ on_guard :delete do
46
+ res.write "delete#{id}"
47
+ end
48
+ end
49
+
50
+ on_guard :post do
51
+ res.write "post"
52
+ end
53
+ on_guard :get do
54
+ res.write "get#{allowed_associations ? allowed_associations.inspect : nil}"
55
+ end
56
+ on_guard :put do
57
+ res.write "put"
58
+ end
59
+ on_guard :delete do
60
+ res.write "delete"
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ let( :env ) do
67
+ { 'PATH_INFO' => '/users',
68
+ 'SCRIPT_NAME' => '/users',
69
+ }
70
+ end
71
+
72
+ let( :guard ) do
73
+ guard = Ixtlan::UserManagement::Guard.new
74
+ Cuba[ :guard ] = Proc.new do |groups|
75
+ guard
76
+ end
77
+ guard
78
+ end
79
+
80
+ describe 'guarded context with nested context' do
81
+
82
+ it 'should raise error' do
83
+ env = { 'PATH_INFO' => '/users/accounts',
84
+ 'SCRIPT_NAME' => '/users/accounts' }
85
+
86
+ user = guard.permission( 'users' ) do |u|
87
+ u.allow_all
88
+ end
89
+ guard.permission( 'admins' ) do |a|
90
+ a.parent = user
91
+ a.allow_all
92
+ end
93
+
94
+ env[ 'REQUEST_METHOD' ] = 'GET'
95
+ lambda{ Cuba.call( env ) }.must_raise RuntimeError
96
+ end
97
+
98
+ it 'allow all' do
99
+ env = { 'PATH_INFO' => '/users/accounts',
100
+ 'SCRIPT_NAME' => '/users/accounts' }
101
+ user = guard.permission( 'users' ) do |u|
102
+ u.allow_all
103
+ end
104
+ guard.permission( 'accounts' ) do |a|
105
+ a.parent = user
106
+ a.allow_all
107
+ end
108
+
109
+ env[ 'REQUEST_METHOD' ] = 'GET'
110
+ _, _, resp = Cuba.call( env )
111
+ resp.join.must.eq 'get accounts'
112
+
113
+ [ 'POST','PUT', 'DELETE' ].each do |m|
114
+ env[ 'REQUEST_METHOD' ] = m
115
+ status, _, resp = Cuba.call( env )
116
+ resp.must.be :empty?
117
+ status.must.eq 200
118
+ end
119
+ end
120
+
121
+ end
122
+
123
+ describe 'guarded context with association' do
124
+
125
+ let( :env ) do
126
+ { 'PATH_INFO' => '/users/42',
127
+ 'SCRIPT_NAME' => '/users/42',
128
+ }
129
+ end
130
+
131
+ it 'denies all requests without associated id' do
132
+ guard.permission( 'users' ) do |u|
133
+ u.allow_all
134
+ end
135
+
136
+ ['GET', 'POST','PUT', 'DELETE' ].each do |m|
137
+ env[ 'REQUEST_METHOD' ] = m
138
+ _, _, resp = Cuba.call( env )
139
+ resp.join.must.eq m.downcase + '42'
140
+ end
141
+ end
142
+
143
+ it 'denies all requests with wrong associated id' do
144
+ guard.permission( 'users', 13 ) do |u|
145
+ u.allow_all
146
+ end
147
+
148
+ ['GET', 'POST','PUT', 'DELETE' ].each do |m|
149
+ env[ 'REQUEST_METHOD' ] = m
150
+ _, _, resp = Cuba.call( env )
151
+ resp.join.must.eq 'Forbidden'
152
+ end
153
+
154
+ env[ 'PATH_INFO' ] = '/users'
155
+ env[ 'SCRIPT_NAME' ] = '/users'
156
+ env[ 'REQUEST_METHOD' ] = 'GET'
157
+ _, _, resp = Cuba.call( env )
158
+ resp.join.must.eq 'get["13"]'
159
+ end
160
+
161
+ it 'allows all requests with associated id' do
162
+ guard.permission( 'users', 42 ) do |u|
163
+ u.allow_all
164
+ end
165
+
166
+ ['GET', 'POST','PUT', 'DELETE' ].each do |m|
167
+ env[ 'REQUEST_METHOD' ] = m
168
+ _, _, resp = Cuba.call( env )
169
+ resp.join.must.eq m.downcase + '42'
170
+ end
171
+
172
+ env[ 'PATH_INFO' ] = '/users'
173
+ env[ 'SCRIPT_NAME' ] = '/users'
174
+ env[ 'REQUEST_METHOD' ] = 'GET'
175
+ _, _, resp = Cuba.call( env )
176
+ resp.join.must.eq 'get["42"]'
177
+ end
178
+ end
179
+
180
+ describe 'guarded context' do
181
+ it 'forbids all request' do
182
+ Cuba[ :guard ] = nil
183
+ ['GET', 'POST','PUT', 'DELETE' ].each do |m|
184
+ env[ 'REQUEST_METHOD' ] = m
185
+ _, _, resp = Cuba.call( env )
186
+ resp.join.must.eq 'Forbidden'
187
+ end
188
+ end
189
+
190
+ it 'allows all request' do
191
+ guard.permission( 'users' ) do |u|
192
+ u.allow_all
193
+ end
194
+
195
+ ['GET', 'POST','PUT', 'DELETE' ].each do |m|
196
+ env[ 'REQUEST_METHOD' ] = m
197
+ _, _, resp = Cuba.call( env )
198
+ resp.join.must.eq m.downcase
199
+ end
200
+ end
201
+
202
+ it 'allows retrieve' do
203
+ guard.permission( 'users' ) do |u|
204
+ u.allow_retrieve
205
+ end
206
+
207
+ m = 'GET'
208
+ env[ 'REQUEST_METHOD' ] = m
209
+ _, _, resp = Cuba.call( env )
210
+ resp.join.must.eq m.downcase
211
+
212
+ ['POST','PUT', 'DELETE' ].each do |m|
213
+ env[ 'REQUEST_METHOD' ] = m
214
+ _, _, resp = Cuba.call( env )
215
+ resp.join.must.eq 'Forbidden'
216
+ end
217
+ end
218
+
219
+ it 'allows retrieve and create' do
220
+ guard.permission( 'users' ) do |u|
221
+ u.allow_retrieve
222
+ u.allow_create
223
+ end
224
+ ['GET','POST' ].each do |m|
225
+ env[ 'REQUEST_METHOD' ] = m
226
+ _, _, resp = Cuba.call( env )
227
+ resp.join.must.eq m.downcase
228
+ end
229
+ ['PUT', 'DELETE' ].each do |m|
230
+ env[ 'REQUEST_METHOD' ] = m
231
+ _, _, resp = Cuba.call( env )
232
+ resp.join.must.eq 'Forbidden'
233
+ end
234
+ end
235
+
236
+ it 'allows retrieve and create and update' do
237
+ guard.permission( 'users' ) do |u|
238
+ u.allow_mutate
239
+ end
240
+ ['GET', 'POST','PUT' ].each do |m|
241
+ env[ 'REQUEST_METHOD' ] = m
242
+ _, _, resp = Cuba.call( env )
243
+ resp.join.must.eq m.downcase
244
+ end
245
+ env[ 'REQUEST_METHOD' ] = 'DELETE'
246
+ _, _, resp = Cuba.call( env )
247
+ resp.join.must.eq 'Forbidden'
248
+ end
249
+
250
+ it 'allows retrieve and create and update and delete' do
251
+ guard.permission( 'users' ) do |u|
252
+ u.allow_mutate
253
+ u.allow_delete
254
+ end
255
+ ['GET', 'POST','PUT', 'DELETE' ].each do |m|
256
+ env[ 'REQUEST_METHOD' ] = m
257
+ _, _, resp = Cuba.call( env )
258
+ resp.join.must.eq m.downcase
259
+ end
260
+ end
261
+ end
262
+ end
@@ -0,0 +1,118 @@
1
+ require File.expand_path( File.join( File.dirname( __FILE__ ),
2
+ 'spec_helper.rb' ) )
3
+ require 'cuba_api/config'
4
+ require 'cuba_api/cors'
5
+
6
+ describe CubaApi::Cors do
7
+
8
+ before do
9
+ Cuba.reset!
10
+ Cuba.plugin CubaApi::Config
11
+ Cuba.plugin CubaApi::Cors
12
+ Cuba.define do
13
+
14
+ on_cors 'path/to/:who' do |who|
15
+ on post do
16
+ res.write "post from #{who}"
17
+ end
18
+ end
19
+
20
+ on_cors_method [:post, :get], 'office/:me' do |me|
21
+ on post do
22
+ res.write "#{me} posted"
23
+ end
24
+ end
25
+
26
+ on_cors_method :delete, 'something' do
27
+ res.write "delete something"
28
+ end
29
+
30
+ on_cors_method :delete, 'home/:me' do |me|
31
+ res.write "delete #{me}"
32
+ end
33
+
34
+ on_cors do
35
+ on put do
36
+ res.write "put answered"
37
+ end
38
+ end
39
+
40
+ end
41
+ end
42
+
43
+ let( :env ) do
44
+ { 'REQUEST_METHOD' => 'OPTIONS',
45
+ 'PATH_INFO' => '/account',
46
+ 'HTTP_ORIGIN' => 'http://middleearth',
47
+ 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'PUT',
48
+ 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'x-requested-with'
49
+ }
50
+ end
51
+
52
+ it 'should response with catch section' do
53
+ _, headers, _ = Cuba.call( env )
54
+
55
+ headers[ "Access-Control-Max-Age" ].must.eq "86400"
56
+ headers[ "Access-Control-Allow-Origin" ].must.eq "http://middleearth"
57
+ headers[ "Access-Control-Allow-Methods" ].must.eq "GET, HEAD, POST, PUT, DELETE"
58
+ headers[ "Access-Control-Allow-Headers" ].must.eq 'x-requested-with'
59
+ headers[ "Access-Control-Allow-Expose-Headers" ].must.eq nil
60
+
61
+ env[ 'REQUEST_METHOD' ] = 'PUT'
62
+ _, _, resp = Cuba.call( env )
63
+ resp.join.must.eq 'put answered'
64
+ end
65
+
66
+ it 'should with path/to/:me section' do
67
+ env[ 'PATH_INFO' ] = '/path/to/alf'
68
+ env[ 'SCRIPT_NAME' ] = '/path/to/alf'
69
+
70
+ _, headers, _ = Cuba.call( env )
71
+
72
+ headers[ "Access-Control-Max-Age" ].must.eq "86400"
73
+ headers[ "Access-Control-Allow-Origin" ].must.eq "http://middleearth"
74
+ headers[ "Access-Control-Allow-Methods" ].must.eq "GET, HEAD, POST, PUT, DELETE"
75
+ headers[ "Access-Control-Allow-Headers" ].must.eq 'x-requested-with'
76
+ headers[ "Access-Control-Allow-Expose-Headers" ].must.eq nil
77
+
78
+ env[ 'REQUEST_METHOD' ] = 'POST'
79
+ _, _, resp = Cuba.call( env )
80
+ resp.join.must.eq 'post from alf'
81
+ end
82
+
83
+ it 'should with home/:me section' do
84
+ env[ 'PATH_INFO' ] = '/home/gandalf'
85
+ env[ 'SCRIPT_NAME' ] = '/home/gandalf'
86
+ env[ 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' ] = 'DELETE'
87
+
88
+ _, headers, _ = Cuba.call( env )
89
+
90
+ headers[ "Access-Control-Max-Age" ].must.eq "86400"
91
+ headers[ "Access-Control-Allow-Origin" ].must.eq "http://middleearth"
92
+ headers[ "Access-Control-Allow-Methods" ].must.eq "DELETE"
93
+ headers[ "Access-Control-Allow-Headers" ].must.eq 'x-requested-with'
94
+ headers[ "Access-Control-Allow-Expose-Headers" ].must.eq nil
95
+
96
+ env[ 'REQUEST_METHOD' ] = 'DELETE'
97
+ _, _, resp = Cuba.call( env )
98
+ resp.join.must.eq 'delete gandalf'
99
+ end
100
+
101
+ it 'should with office/:me section' do
102
+ env[ 'PATH_INFO' ] = '/office/frodo'
103
+ env[ 'SCRIPT_NAME' ] = '/home/frodo'
104
+ env[ 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' ] = 'POST'
105
+
106
+ _, headers, _ = Cuba.call( env )
107
+
108
+ headers[ "Access-Control-Max-Age" ].must.eq "86400"
109
+ headers[ "Access-Control-Allow-Origin" ].must.eq "http://middleearth"
110
+ headers[ "Access-Control-Allow-Methods" ].must.eq "POST, GET"
111
+ headers[ "Access-Control-Allow-Headers" ].must.eq 'x-requested-with'
112
+ headers[ "Access-Control-Allow-Expose-Headers" ].must.eq nil
113
+
114
+ env[ 'REQUEST_METHOD' ] = 'POST'
115
+ _, _, resp = Cuba.call( env )
116
+ resp.join.must.eq 'frodo posted'
117
+ end
118
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuba-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-01 00:00:00.000000000 Z
12
+ date: 2013-10-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cuba
@@ -97,13 +97,13 @@ dependencies:
97
97
  requirements:
98
98
  - - ~>
99
99
  - !ruby/object:Gem::Version
100
- version: '10.0'
100
+ version: '10.1'
101
101
  none: false
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
104
  - - ~>
105
105
  - !ruby/object:Gem::Version
106
- version: '10.0'
106
+ version: '10.1'
107
107
  none: false
108
108
  prerelease: false
109
109
  type: :development
@@ -113,13 +113,13 @@ dependencies:
113
113
  requirements:
114
114
  - - ~>
115
115
  - !ruby/object:Gem::Version
116
- version: '4.0'
116
+ version: '5.0'
117
117
  none: false
118
118
  requirement: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ~>
121
121
  - !ruby/object:Gem::Version
122
- version: '4.0'
122
+ version: '5.0'
123
123
  none: false
124
124
  prerelease: false
125
125
  type: :development
@@ -140,18 +140,18 @@ dependencies:
140
140
  prerelease: false
141
141
  type: :development
142
142
  - !ruby/object:Gem::Dependency
143
- name: backports
143
+ name: ixtlan-user-management
144
144
  version_requirements: !ruby/object:Gem::Requirement
145
145
  requirements:
146
146
  - - ~>
147
147
  - !ruby/object:Gem::Version
148
- version: '2.6'
148
+ version: '0.2'
149
149
  none: false
150
150
  requirement: !ruby/object:Gem::Requirement
151
151
  requirements:
152
152
  - - ~>
153
153
  - !ruby/object:Gem::Version
154
- version: '2.6'
154
+ version: '0.2'
155
155
  none: false
156
156
  prerelease: false
157
157
  type: :development
@@ -170,6 +170,7 @@ files:
170
170
  - lib/cuba_api/config.rb~
171
171
  - lib/cuba_api/reloader_rack.rb
172
172
  - lib/cuba_api/utils.rb
173
+ - lib/cuba_api/allow_session_rack.rb
173
174
  - lib/cuba_api/cors.rb~
174
175
  - lib/cuba_api/input_filter.rb~
175
176
  - lib/cuba_api/response_status.rb~
@@ -183,6 +184,7 @@ files:
183
184
  - lib/cuba_api/utils.rb~
184
185
  - lib/cuba_api/guard.rb
185
186
  - lib/cuba_api/current_user.rb~
187
+ - lib/cuba_api/allow_session_rack.rb~
186
188
  - lib/cuba_api/config.rb
187
189
  - lib/cuba_api/accept_content.rb
188
190
  - lib/cuba_api/ext2mime_rack.rb
@@ -191,19 +193,22 @@ files:
191
193
  - lib/cuba_api/reloader_rack.rb~
192
194
  - lib/cuba_api/no_session_rack.rb~
193
195
  - lib/cuba_api/serializer.rb
194
- - lib/cuba_api/no_session_rack.rb
195
196
  - lib/cuba_api/guard.rb~
196
197
  - lib/cuba_api/current_user.rb
197
198
  - spec/serializer_spec.rb
198
199
  - spec/cors_with_config_spec.rb~
199
200
  - spec/accept_spec.rb
200
201
  - spec/current_user_spec.rb
202
+ - spec/allow_session_rack_spec.rb
201
203
  - spec/config_spec.rb
204
+ - spec/allow_session_rack_spec.rb~
202
205
  - spec/input_filter_spec.rb
203
206
  - spec/serializer_spec.rb~
207
+ - spec/guard_spec.rb~
204
208
  - spec/aspects_spec.rb~
205
209
  - spec/accept_spec.rb~
206
210
  - spec/cors_with_config_spec.rb
211
+ - spec/guard_spec.rb
207
212
  - spec/spec_helper.rb~
208
213
  - spec/response_status_spec.rb
209
214
  - spec/spec_helper.rb
@@ -244,9 +249,11 @@ test_files:
244
249
  - spec/serializer_spec.rb
245
250
  - spec/accept_spec.rb
246
251
  - spec/current_user_spec.rb
252
+ - spec/allow_session_rack_spec.rb
247
253
  - spec/config_spec.rb
248
254
  - spec/input_filter_spec.rb
249
255
  - spec/cors_with_config_spec.rb
256
+ - spec/guard_spec.rb
250
257
  - spec/response_status_spec.rb
251
258
  - spec/cors_spec.rb
252
259
  - spec/aspects_spec.rb