rocketio 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rocketio.rb +6 -3
- data/lib/rocketio/application.rb +3 -7
- data/lib/rocketio/controller.rb +62 -90
- data/lib/rocketio/controller/authentication.rb +38 -44
- data/lib/rocketio/controller/authorization.rb +8 -4
- data/lib/rocketio/controller/error_handlers.rb +12 -8
- data/lib/rocketio/controller/filters.rb +14 -19
- data/lib/rocketio/controller/helpers.rb +1 -1
- data/lib/rocketio/controller/middleware.rb +1 -1
- data/lib/rocketio/controller/render/engine.rb +3 -3
- data/lib/rocketio/controller/render/layout.rb +1 -1
- data/lib/rocketio/controller/render/layouts.rb +6 -6
- data/lib/rocketio/controller/render/template_vars.rb +3 -3
- data/lib/rocketio/controller/render/templates.rb +6 -6
- data/lib/rocketio/controller/sessions.rb +1 -1
- data/lib/rocketio/error_templates/409.html +11 -7
- data/lib/rocketio/error_templates/501.html +4 -4
- data/lib/rocketio/router.rb +35 -21
- data/lib/rocketio/version.rb +1 -1
- data/rocketio.gemspec +2 -0
- data/test/aliases_test.rb +2 -2
- data/test/api_test.rb +24 -117
- data/test/authentication_test.rb +96 -60
- data/test/authorization_test.rb +28 -17
- data/test/cache_control_test.rb +12 -12
- data/test/content_type_test.rb +7 -7
- data/test/cookies_test.rb +4 -4
- data/test/error_handlers_test.rb +14 -12
- data/test/etag_test.rb +32 -32
- data/test/filters_test.rb +96 -79
- data/test/halt_test.rb +1 -1
- data/test/helpers_test.rb +6 -6
- data/test/middleware_test.rb +4 -4
- data/test/redirect_test.rb +6 -7
- data/test/render/{post.erb → b.erb} +0 -0
- data/test/render/{put.erb → c.erb} +0 -0
- data/test/render/engine_test.rb +5 -5
- data/test/render/{get.erb → index.erb} +0 -0
- data/test/render/layout_test.rb +21 -17
- data/test/render/layouts_test.rb +14 -14
- data/test/render/render_test.rb +17 -14
- data/test/render/template_vars_test.rb +9 -9
- data/test/render/templates_test.rb +16 -16
- data/test/response_test.rb +4 -4
- data/test/routes_test.rb +21 -42
- data/test/sendfile_test.rb +8 -8
- data/test/sessions_test.rb +27 -27
- data/test/setup.rb +2 -0
- metadata +34 -6
data/test/response_test.rb
CHANGED
@@ -79,7 +79,7 @@ spec RocketIO::Response do
|
|
79
79
|
|
80
80
|
it "sets response.body when result is a String" do
|
81
81
|
app mock_controller {
|
82
|
-
def
|
82
|
+
def index; 'Hello World' end
|
83
83
|
}
|
84
84
|
|
85
85
|
get
|
@@ -88,7 +88,7 @@ spec RocketIO::Response do
|
|
88
88
|
|
89
89
|
it "sets response.body when result is an Array of Strings" do
|
90
90
|
app mock_controller {
|
91
|
-
def
|
91
|
+
def index; ['Hello', 'World'] end
|
92
92
|
}
|
93
93
|
|
94
94
|
get
|
@@ -97,7 +97,7 @@ spec RocketIO::Response do
|
|
97
97
|
|
98
98
|
it "sets response.body when result responds to #each" do
|
99
99
|
app mock_controller {
|
100
|
-
def
|
100
|
+
def index
|
101
101
|
res = lambda { 'Hello World' }
|
102
102
|
def res.each ; yield call ; end
|
103
103
|
res
|
@@ -110,7 +110,7 @@ spec RocketIO::Response do
|
|
110
110
|
|
111
111
|
it "sets response.body to [] when result is nil" do
|
112
112
|
app mock_controller {
|
113
|
-
def
|
113
|
+
def index; end
|
114
114
|
}
|
115
115
|
|
116
116
|
get
|
data/test/routes_test.rb
CHANGED
@@ -1,70 +1,49 @@
|
|
1
1
|
require 'setup'
|
2
2
|
|
3
3
|
class A < RocketIO::Controller
|
4
|
-
def
|
5
|
-
|
4
|
+
def index; 'a' end
|
5
|
+
alias main index
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def b; raise 'should never call this as it is shadowed by A::B controller' end
|
8
|
+
|
9
|
+
class B < self
|
10
|
+
def index; 'b' end
|
11
|
+
|
12
|
+
def c; raise 'should never call this as it is shadowed by A::B::C controller' end
|
9
13
|
|
10
14
|
class C < self
|
11
|
-
def
|
15
|
+
def index; 'c' end
|
12
16
|
end
|
13
17
|
end
|
14
18
|
end
|
15
19
|
|
16
|
-
class D < RocketIO::Controller
|
17
|
-
end
|
18
|
-
|
19
20
|
spec :Routes do
|
20
|
-
|
21
|
+
|
22
|
+
test :paths do
|
21
23
|
assert(A.url) == '/a'
|
22
24
|
assert(A::B.url) == '/a/b'
|
23
25
|
assert(A::B::C.url) == '/a/b/c'
|
24
26
|
end
|
25
27
|
|
26
|
-
it 'overrides inherited REST methods' do
|
27
|
-
app(A)
|
28
|
-
post
|
29
|
-
assert(last_response).is_ok
|
30
|
-
|
31
|
-
app(D)
|
32
|
-
post
|
33
|
-
assert(last_response).is_unimplemented
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'inherits REST methods from supercontroller' do
|
37
|
-
app(A::B)
|
38
|
-
get
|
39
|
-
assert(last_response).is_ok_with_body 'b:'
|
40
|
-
|
41
|
-
post
|
42
|
-
assert(last_response).is_ok_with_body '/a/b'
|
43
|
-
end
|
44
|
-
|
45
28
|
context :router do
|
46
29
|
before {app mock_app(A, A::B, A::B::C)}
|
47
30
|
|
48
|
-
|
49
|
-
get '/a
|
50
|
-
assert(last_response).is_ok_with_body 'a
|
51
|
-
|
52
|
-
get '/a/b'
|
53
|
-
assert(last_response).is_ok_with_body 'b:'
|
31
|
+
it 'uses :index as default method' do
|
32
|
+
get '/a'
|
33
|
+
assert(last_response).is_ok_with_body 'a'
|
34
|
+
end
|
54
35
|
|
55
|
-
|
56
|
-
|
36
|
+
it 'use alias to set a canonical route' do
|
37
|
+
get '/a/main'
|
38
|
+
assert(last_response).is_ok_with_body 'a'
|
57
39
|
end
|
58
40
|
|
59
|
-
|
41
|
+
it 'prefers controllers over methods' do
|
60
42
|
get '/a/b'
|
61
|
-
assert(last_response).is_ok_with_body 'b
|
43
|
+
assert(last_response).is_ok_with_body 'b'
|
62
44
|
|
63
45
|
get '/a/b/c'
|
64
|
-
assert(last_response).is_ok_with_body 'c
|
65
|
-
|
66
|
-
get '/a/b/c/x'
|
67
|
-
assert(last_response).is_ok_with_body 'c:x'
|
46
|
+
assert(last_response).is_ok_with_body 'c'
|
68
47
|
end
|
69
48
|
end
|
70
49
|
end
|
data/test/sendfile_test.rb
CHANGED
@@ -29,7 +29,7 @@ spec 'attachment' do
|
|
29
29
|
|
30
30
|
def attachment_app(filename=nil)
|
31
31
|
app mock_controller('/attachment') {
|
32
|
-
define_method :
|
32
|
+
define_method :index do
|
33
33
|
attachment filename
|
34
34
|
response.write("<html></html>")
|
35
35
|
end
|
@@ -52,7 +52,7 @@ spec 'attachment' do
|
|
52
52
|
|
53
53
|
it 'sets the Content-Type response header with extname' do
|
54
54
|
app mock_controller('/attachment') {
|
55
|
-
def
|
55
|
+
def index
|
56
56
|
content_type :atom
|
57
57
|
attachment 'test.xml'
|
58
58
|
response.write("<html></html>")
|
@@ -79,7 +79,7 @@ spec 'send_file' do
|
|
79
79
|
def send_file_app(opts={})
|
80
80
|
path = @file
|
81
81
|
app mock_controller('/file.txt') {
|
82
|
-
define_method(:
|
82
|
+
define_method(:index) {send_file(path, opts)}
|
83
83
|
}
|
84
84
|
get('/file.txt')
|
85
85
|
end
|
@@ -123,7 +123,7 @@ spec 'send_file' do
|
|
123
123
|
|
124
124
|
it "returns a 404 when not found" do
|
125
125
|
app mock_controller {
|
126
|
-
def
|
126
|
+
def index; send_file 'this-file-does-not-exist.txt'; end
|
127
127
|
}
|
128
128
|
get
|
129
129
|
assert(last_response).not_found?
|
@@ -164,7 +164,7 @@ spec 'send_file' do
|
|
164
164
|
File.open(file, 'wb') { |io| io.write('Hello World') }
|
165
165
|
|
166
166
|
app mock_controller('/file.txt') {
|
167
|
-
define_method(:
|
167
|
+
define_method(:index) {send_file(file)}
|
168
168
|
}
|
169
169
|
get('/file.txt')
|
170
170
|
File.unlink(file)
|
@@ -175,7 +175,7 @@ spec 'send_file' do
|
|
175
175
|
it "does not override Content-Type if already set and no explicit type is given" do
|
176
176
|
path = @file
|
177
177
|
app mock_controller {
|
178
|
-
define_method :
|
178
|
+
define_method :index do
|
179
179
|
content_type :png
|
180
180
|
send_file path
|
181
181
|
end
|
@@ -187,7 +187,7 @@ spec 'send_file' do
|
|
187
187
|
it "does override Content-Type even if already set, if explicit type is given" do
|
188
188
|
path = @file
|
189
189
|
app mock_controller {
|
190
|
-
define_method :
|
190
|
+
define_method :index do
|
191
191
|
content_type :png
|
192
192
|
send_file path, :type => :gif
|
193
193
|
end
|
@@ -199,7 +199,7 @@ spec 'send_file' do
|
|
199
199
|
it 'can have :status option as a string' do
|
200
200
|
path = @file
|
201
201
|
app mock_controller {
|
202
|
-
define_method :
|
202
|
+
define_method :index do
|
203
203
|
send_file path, :status => '422'
|
204
204
|
end
|
205
205
|
}
|
data/test/sessions_test.rb
CHANGED
@@ -35,12 +35,12 @@ spec :Sessions do
|
|
35
35
|
sessions :cookies
|
36
36
|
}
|
37
37
|
b = mock_controller(:b, a) {
|
38
|
-
def
|
39
|
-
def
|
38
|
+
def set(y); session[:x] = y end
|
39
|
+
def get; session[:x] end
|
40
40
|
}
|
41
41
|
app mock_app(a, b)
|
42
|
-
get
|
43
|
-
post
|
42
|
+
get '/b/set', :y
|
43
|
+
post '/b/get'
|
44
44
|
assert(last_response.body) == 'y'
|
45
45
|
end
|
46
46
|
|
@@ -50,12 +50,12 @@ spec :Sessions do
|
|
50
50
|
}
|
51
51
|
b = mock_controller(:b) {
|
52
52
|
import :sessions, from: a
|
53
|
-
def
|
54
|
-
def
|
53
|
+
def set(y); session[:x] = y end
|
54
|
+
def get; session[:x] end
|
55
55
|
}
|
56
56
|
app mock_app(a, b)
|
57
|
-
get
|
58
|
-
post
|
57
|
+
get '/b/set', :y
|
58
|
+
post '/b/get'
|
59
59
|
assert(last_response.body) == 'y'
|
60
60
|
end
|
61
61
|
|
@@ -65,39 +65,39 @@ spec :Sessions do
|
|
65
65
|
}
|
66
66
|
b = mock_controller(:b, a) {
|
67
67
|
sessions nil
|
68
|
-
def
|
69
|
-
def
|
68
|
+
def set(y); session[:x] = y end
|
69
|
+
def get; session[:x] end
|
70
70
|
}
|
71
71
|
app mock_app(a, b)
|
72
|
-
get
|
73
|
-
post
|
72
|
+
get '/b/set', :y
|
73
|
+
post '/b/get'
|
74
74
|
assert(last_response.body) == ''
|
75
75
|
end
|
76
76
|
|
77
|
-
it 'uses `
|
77
|
+
it 'uses `import` to override sessions setup inherited from superclass' do
|
78
78
|
a = mock_controller {
|
79
79
|
sessions :cookies
|
80
80
|
}
|
81
81
|
b = mock_controller(:b, a) {
|
82
82
|
sessions false
|
83
|
-
def
|
84
|
-
def
|
83
|
+
def set(y); session[:x] = y end
|
84
|
+
def get; session[:x] end
|
85
85
|
}
|
86
|
-
c = mock_controller(a) {
|
86
|
+
c = mock_controller(:c, a) {
|
87
87
|
import :sessions, from: b
|
88
|
-
def
|
89
|
-
def
|
88
|
+
def set(y); session[:x] = y end
|
89
|
+
def get; session[:x] end
|
90
90
|
}
|
91
|
-
app mock_app(a, b)
|
92
|
-
get
|
93
|
-
post
|
91
|
+
app mock_app(a, b, c)
|
92
|
+
get '/c/set', :y
|
93
|
+
post '/c/get'
|
94
94
|
assert(last_response.body) == ''
|
95
95
|
end
|
96
96
|
|
97
97
|
it 'uses the existing rack.session' do
|
98
98
|
app mock_app(mock_controller {
|
99
99
|
sessions :cookies
|
100
|
-
define_method(:
|
100
|
+
define_method(:index) {session[:foo]}
|
101
101
|
})
|
102
102
|
|
103
103
|
env['rack.session'] = { :foo => 'bar' }
|
@@ -109,7 +109,7 @@ spec :Sessions do
|
|
109
109
|
a = mock_controller {
|
110
110
|
sessions :cookies, secret: 'svss'
|
111
111
|
|
112
|
-
define_method :
|
112
|
+
define_method :index do
|
113
113
|
fail('session[:foo] already set') unless session[:foo].nil?
|
114
114
|
session[:foo] = 'bar'
|
115
115
|
redirect '/hi'
|
@@ -117,7 +117,7 @@ spec :Sessions do
|
|
117
117
|
}
|
118
118
|
b = mock_controller('hi') {
|
119
119
|
sessions :cookies, secret: 'svss'
|
120
|
-
define_method(:
|
120
|
+
define_method(:index) {"hi #{session[:foo]}"}
|
121
121
|
}
|
122
122
|
app mock_app(a, b)
|
123
123
|
|
@@ -130,7 +130,7 @@ spec :Sessions do
|
|
130
130
|
app mock_app(mock_controller {
|
131
131
|
sessions :cookies
|
132
132
|
|
133
|
-
define_method :
|
133
|
+
define_method :index do
|
134
134
|
unless env['rack.session'] && env['rack.session.options']
|
135
135
|
fail('session middleware not inserted')
|
136
136
|
end
|
@@ -146,7 +146,7 @@ spec :Sessions do
|
|
146
146
|
app mock_app(mock_controller {
|
147
147
|
sessions :cookies
|
148
148
|
|
149
|
-
define_method :
|
149
|
+
define_method :index do
|
150
150
|
unless env['rack.session.options'][:secret]
|
151
151
|
fail('default session secret not set')
|
152
152
|
end
|
@@ -162,7 +162,7 @@ spec :Sessions do
|
|
162
162
|
app mock_app(mock_controller {
|
163
163
|
sessions :cookies, secret: 'svss'
|
164
164
|
|
165
|
-
define_method :
|
165
|
+
define_method :index do
|
166
166
|
unless env['rack.session.options'][:secret]
|
167
167
|
fail('looks like option hash not set/used')
|
168
168
|
end
|
data/test/setup.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rocketio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Slee Woo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -108,6 +108,34 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pry-byebug
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '3'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '3'
|
111
139
|
description: Simple, fast, scalable web framework for Ruby
|
112
140
|
email:
|
113
141
|
- mail@sleewoo.com
|
@@ -168,16 +196,16 @@ files:
|
|
168
196
|
- test/helpers_test.rb
|
169
197
|
- test/middleware_test.rb
|
170
198
|
- test/redirect_test.rb
|
199
|
+
- test/render/b.erb
|
200
|
+
- test/render/c.erb
|
171
201
|
- test/render/engine_test.rb
|
172
|
-
- test/render/
|
202
|
+
- test/render/index.erb
|
173
203
|
- test/render/items.erb
|
174
204
|
- test/render/layout.erb
|
175
205
|
- test/render/layout_test.rb
|
176
206
|
- test/render/layouts/master.erb
|
177
207
|
- test/render/layouts_test.rb
|
178
208
|
- test/render/master.erb
|
179
|
-
- test/render/post.erb
|
180
|
-
- test/render/put.erb
|
181
209
|
- test/render/render_test.rb
|
182
210
|
- test/render/setup.rb
|
183
211
|
- test/render/template_vars_test.rb
|
@@ -213,5 +241,5 @@ rubyforge_project:
|
|
213
241
|
rubygems_version: 2.5.1
|
214
242
|
signing_key:
|
215
243
|
specification_version: 4
|
216
|
-
summary: '["rocketio-0.
|
244
|
+
summary: '["rocketio-0.2.0", "Simple, fast, scalable web framework for Ruby"]'
|
217
245
|
test_files: []
|