rocketio 0.1.0 → 0.2.0
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.
- 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: []
|