merb-core 0.9.5 → 0.9.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. data/CHANGELOG +925 -0
  2. data/CONTRIBUTORS +93 -0
  3. data/PUBLIC_CHANGELOG +85 -0
  4. data/Rakefile +18 -28
  5. data/bin/merb +34 -5
  6. data/lib/merb-core/autoload.rb +2 -3
  7. data/lib/merb-core/bootloader.rb +60 -66
  8. data/lib/merb-core/config.rb +7 -1
  9. data/lib/merb-core/controller/abstract_controller.rb +35 -21
  10. data/lib/merb-core/controller/merb_controller.rb +15 -42
  11. data/lib/merb-core/controller/mixins/authentication.rb +42 -6
  12. data/lib/merb-core/controller/mixins/conditional_get.rb +83 -0
  13. data/lib/merb-core/controller/mixins/render.rb +3 -3
  14. data/lib/merb-core/core_ext/kernel.rb +6 -19
  15. data/lib/merb-core/dispatch/cookies.rb +96 -80
  16. data/lib/merb-core/dispatch/default_exception/views/index.html.erb +2 -0
  17. data/lib/merb-core/dispatch/request.rb +18 -16
  18. data/lib/merb-core/dispatch/router/route.rb +6 -0
  19. data/lib/merb-core/dispatch/router.rb +4 -1
  20. data/lib/merb-core/dispatch/session/container.rb +64 -0
  21. data/lib/merb-core/dispatch/session/cookie.rb +91 -101
  22. data/lib/merb-core/dispatch/session/memcached.rb +38 -174
  23. data/lib/merb-core/dispatch/session/memory.rb +62 -208
  24. data/lib/merb-core/dispatch/session/store_container.rb +145 -0
  25. data/lib/merb-core/dispatch/session.rb +174 -48
  26. data/lib/merb-core/rack/middleware/conditional_get.rb +14 -8
  27. data/lib/merb-core/rack/middleware/csrf.rb +73 -0
  28. data/lib/merb-core/rack.rb +1 -0
  29. data/lib/merb-core/script.rb +112 -0
  30. data/lib/merb-core/server.rb +2 -0
  31. data/lib/merb-core/tasks/merb_rake_helper.rb +25 -0
  32. data/lib/merb-core/test/helpers/request_helper.rb +40 -3
  33. data/lib/merb-core/test/run_specs.rb +4 -3
  34. data/lib/merb-core/vendor/facets/inflect.rb +7 -10
  35. data/lib/merb-core/version.rb +1 -1
  36. data/lib/merb-core.rb +11 -40
  37. data/spec/private/core_ext/kernel_spec.rb +0 -11
  38. data/spec/private/dispatch/fixture/log/merb_test.log +893 -0
  39. data/spec/private/router/fixture/log/merb_test.log +12 -1728
  40. data/spec/private/router/route_spec.rb +4 -0
  41. data/spec/private/router/router_spec.rb +8 -0
  42. data/spec/private/vendor/facets/plural_spec.rb +1 -1
  43. data/spec/private/vendor/facets/singular_spec.rb +1 -1
  44. data/spec/public/abstract_controller/controllers/display.rb +8 -2
  45. data/spec/public/abstract_controller/controllers/filters.rb +18 -0
  46. data/spec/public/abstract_controller/display_spec.rb +6 -2
  47. data/spec/public/abstract_controller/filter_spec.rb +4 -0
  48. data/spec/public/controller/authentication_spec.rb +114 -43
  49. data/spec/public/controller/base_spec.rb +8 -0
  50. data/spec/public/controller/conditional_get_spec.rb +100 -0
  51. data/spec/public/controller/config/init.rb +1 -1
  52. data/spec/public/controller/controllers/authentication.rb +29 -0
  53. data/spec/public/controller/controllers/base.rb +13 -0
  54. data/spec/public/controller/controllers/conditional_get.rb +35 -0
  55. data/spec/public/controller/controllers/cookies.rb +10 -1
  56. data/spec/public/controller/cookies_spec.rb +38 -9
  57. data/spec/public/controller/spec_helper.rb +1 -0
  58. data/spec/public/controller/url_spec.rb +70 -1
  59. data/spec/public/directory_structure/directory/log/merb_test.log +461 -0
  60. data/spec/public/rack/conditinal_get_middleware_spec.rb +77 -89
  61. data/spec/public/rack/csrf_middleware_spec.rb +70 -0
  62. data/spec/public/reloading/directory/log/merb_test.log +52 -0
  63. data/spec/public/request/request_spec.rb +19 -1
  64. data/spec/public/router/fixation_spec.rb +26 -4
  65. data/spec/public/router/fixture/log/merb_test.log +234 -30332
  66. data/spec/public/session/controllers/sessions.rb +52 -0
  67. data/spec/public/session/cookie_session_spec.rb +73 -0
  68. data/spec/public/session/memcached_session_spec.rb +31 -0
  69. data/spec/public/session/memory_session_spec.rb +28 -0
  70. data/spec/public/session/multiple_sessions_spec.rb +74 -0
  71. data/spec/public/session/no_session_spec.rb +12 -0
  72. data/spec/public/session/session_spec.rb +91 -0
  73. data/spec/public/test/controllers/spec_helper_controller.rb +2 -1
  74. data/spec/public/test/request_helper_spec.rb +15 -0
  75. data/spec/spec_helper.rb +2 -2
  76. metadata +23 -5
  77. data/spec/private/dispatch/cookies_spec.rb +0 -219
  78. data/spec/private/dispatch/session_mixin_spec.rb +0 -47
@@ -0,0 +1,52 @@
1
+ module Merb::Test::Fixtures
2
+
3
+ module Controllers
4
+
5
+ class Testing < Merb::Controller
6
+ self._template_root = File.dirname(__FILE__) / "views"
7
+ end
8
+
9
+ class SessionsController < Testing
10
+
11
+ def index
12
+ request.session[:foo] = params[:foo]
13
+ Merb::Config[:session_store]
14
+ end
15
+
16
+ def regenerate
17
+ request.session.regenerate
18
+ end
19
+
20
+ def retrieve
21
+ end
22
+
23
+ end
24
+
25
+ class MultipleSessionsController < Testing
26
+
27
+ def store_in_cookie
28
+ request.session(:cookie)[:foo] = 'cookie-bar'
29
+ end
30
+
31
+ def store_in_memory
32
+ request.session(:memory)[:foo] = 'memory-bar'
33
+ end
34
+
35
+ def store_in_memcache
36
+ request.session(:memcache)[:foo] = 'memcache-bar'
37
+ end
38
+
39
+ def store_in_multiple
40
+ request.session(:memcache)[:foo] = 'memcache-baz'
41
+ request.session(:memory)[:foo] = 'memory-baz'
42
+ request.session(:cookie)[:foo] = 'cookie-baz'
43
+ end
44
+
45
+ def retrieve
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,73 @@
1
+ $START_OPTIONS = { :session_store => "cookie", :session_secret_key => "session-secret-key-here" }
2
+
3
+ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
4
+ require File.join(File.dirname(__FILE__), "session_spec")
5
+ require File.join(File.dirname(__FILE__), "controllers", "sessions")
6
+
7
+ describe Merb::CookieSession do
8
+
9
+ before do
10
+ @session_class = Merb::CookieSession
11
+ @session = @session_class.generate
12
+ end
13
+
14
+ it_should_behave_like "All session-store backends"
15
+
16
+ it "should have a session_store_type class attribute" do
17
+ @session.class.session_store_type.should == :cookie
18
+ end
19
+
20
+ end
21
+
22
+ describe Merb::CookieSession, "mixed into Merb::Controller" do
23
+
24
+ before(:all) { @controller_klass = Merb::Test::Fixtures::Controllers::SessionsController }
25
+
26
+ it "should represent the controller session" do
27
+ controller = dispatch_to(@controller_klass, :index)
28
+ controller.body.should == "cookie"
29
+ controller.request.session.should be_kind_of(Merb::CookieSession)
30
+ end
31
+
32
+ it "should store and retrieve session data" do
33
+ with_cookies(@controller_klass) do
34
+ controller = dispatch_to(@controller_klass, :index, :foo => "cookie")
35
+ controller.request.session[:foo].should == "cookie"
36
+
37
+ controller = dispatch_to(@controller_klass, :retrieve)
38
+ controller.request.session[:foo].should == "cookie"
39
+ end
40
+ end
41
+
42
+ it "should allow regeneration of the session" do
43
+ with_cookies(@controller_klass) do
44
+ controller = dispatch_to(@controller_klass, :index, :foo => "cookie")
45
+ controller = dispatch_to(@controller_klass, :regenerate)
46
+ controller = dispatch_to(@controller_klass, :retrieve)
47
+ controller.request.session[:foo].should == "cookie"
48
+ end
49
+ end
50
+
51
+ it "shouldn't allow tampering with cookie data" do
52
+ with_cookies(@controller_klass) do |cookie_jar|
53
+ controller = dispatch_to(@controller_klass, :index, :foo => "cookie")
54
+ cookie_data, cookie_checksum = controller.cookies[Merb::Request._session_id_key].split('--')
55
+ cookie_data = 'tampered-with-data'
56
+ cookie_jar[Merb::Request._session_id_key] = "#{cookie_data}--#{cookie_checksum}"
57
+ controller = dispatch_to(@controller_klass, :retrieve)
58
+ lambda { controller.request.session }.should raise_error(Merb::CookieSession::TamperedWithCookie)
59
+ end
60
+ end
61
+
62
+ it "shouldn't allow tampering with cookie fingerprints" do
63
+ with_cookies(@controller_klass) do |cookie_jar|
64
+ controller = dispatch_to(@controller_klass, :index, :foo => "cookie")
65
+ cookie_data, cookie_checksum = controller.cookies[Merb::Request._session_id_key].split('--')
66
+ cookie_checksum = 'tampered-with-checksum'
67
+ cookie_jar[Merb::Request._session_id_key] = "#{cookie_data}--#{cookie_checksum}"
68
+ controller = dispatch_to(@controller_klass, :retrieve)
69
+ lambda { controller.request.session }.should raise_error(Merb::CookieSession::TamperedWithCookie)
70
+ end
71
+ end
72
+
73
+ end
@@ -0,0 +1,31 @@
1
+ $START_OPTIONS = { :session_store => "memcache" }
2
+
3
+ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
4
+ require File.join(File.dirname(__FILE__), "session_spec")
5
+ require File.join(File.dirname(__FILE__), "controllers", "sessions")
6
+
7
+ require 'memcached'
8
+ Merb::MemcacheSession.store = Memcached.new('127.0.0.1:11211', { :namespace => 'my_app' })
9
+
10
+ describe Merb::MemcacheSession do
11
+
12
+ before do
13
+ @session_class = Merb::MemcacheSession
14
+ @session = @session_class.generate
15
+ end
16
+
17
+ it_should_behave_like "All session-store backends"
18
+
19
+ it "should have a session_store_type class attribute" do
20
+ @session.class.session_store_type.should == :memcache
21
+ end
22
+
23
+ end
24
+
25
+ describe Merb::MemcacheSession, "mixed into Merb::Controller" do
26
+
27
+ before(:all) { @session_class = Merb::MemcacheSession }
28
+
29
+ it_should_behave_like "All session-stores mixed into Merb::Controller"
30
+
31
+ end
@@ -0,0 +1,28 @@
1
+ $START_OPTIONS = { :session_store => "memory" }
2
+
3
+ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
4
+ require File.join(File.dirname(__FILE__), "session_spec")
5
+ require File.join(File.dirname(__FILE__), "controllers", "sessions")
6
+
7
+ describe Merb::MemorySession do
8
+
9
+ before do
10
+ @session_class = Merb::MemorySession
11
+ @session = @session_class.generate
12
+ end
13
+
14
+ it_should_behave_like "All session-store backends"
15
+
16
+ it "should have a session_store_type class attribute" do
17
+ @session.class.session_store_type.should == :memory
18
+ end
19
+
20
+ end
21
+
22
+ describe Merb::MemorySession, "mixed into Merb::Controller" do
23
+
24
+ before(:all) { @session_class = Merb::MemorySession }
25
+
26
+ it_should_behave_like "All session-stores mixed into Merb::Controller"
27
+
28
+ end
@@ -0,0 +1,74 @@
1
+ $START_OPTIONS = { :session_stores => ["cookie", "memory", "memcache"], :session_secret_key => "session-secret-key-here" }
2
+
3
+ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
4
+ require File.join(File.dirname(__FILE__), "session_spec")
5
+ require File.join(File.dirname(__FILE__), "controllers", "sessions")
6
+
7
+ require 'memcached'
8
+ Merb::MemcacheSession.store = Memcached.new('127.0.0.1:11211', { :namespace => 'my_app' })
9
+
10
+ describe "An app with multiple session stores configured" do
11
+
12
+ before(:all) { @controller_klass = Merb::Test::Fixtures::Controllers::MultipleSessionsController }
13
+
14
+ it "should store cookie-based session data" do
15
+ with_cookies(@controller_klass) do
16
+ controller = dispatch_to(@controller_klass, :store_in_cookie)
17
+ controller.request.session(:cookie)[:foo].should == "cookie-bar"
18
+ controller.request.session[:foo].should == "cookie-bar" # defaults to the first registered store
19
+ end
20
+ end
21
+
22
+ it "should retrieve cookie-based session data" do
23
+ with_cookies(@controller_klass) do
24
+ controller = dispatch_to(@controller_klass, :store_in_cookie)
25
+ controller = dispatch_to(@controller_klass, :retrieve)
26
+ controller.request.session(:cookie)[:foo].should == "cookie-bar"
27
+ controller.request.session[:foo].should == "cookie-bar" # defaults to the first registered store
28
+ end
29
+ end
30
+
31
+ it "should store memory-based session data" do
32
+ with_cookies(@controller_klass) do
33
+ controller = dispatch_to(@controller_klass, :store_in_memory)
34
+ controller.request.session(:memory)[:foo].should == "memory-bar"
35
+ end
36
+ end
37
+
38
+ it "should retrieve memory-based session data" do
39
+ with_cookies(@controller_klass) do
40
+ controller = dispatch_to(@controller_klass, :store_in_memory)
41
+ controller = dispatch_to(@controller_klass, :retrieve)
42
+ controller.request.session(:memory)[:foo].should == "memory-bar"
43
+ end
44
+ end
45
+
46
+ it "should store memcache-based session data" do
47
+ with_cookies(@controller_klass) do
48
+ controller = dispatch_to(@controller_klass, :store_in_memcache)
49
+ controller.request.session(:memcache)[:foo].should == "memcache-bar"
50
+ end
51
+ end
52
+
53
+ it "should retrieve memcache-based session data" do
54
+ with_cookies(@controller_klass) do
55
+ controller = dispatch_to(@controller_klass, :store_in_memcache)
56
+ controller = dispatch_to(@controller_klass, :retrieve)
57
+ controller.request.session(:memcache)[:foo].should == "memcache-bar"
58
+ end
59
+ end
60
+
61
+ # TODO - _session_id cookies are clobbered atm - so this doesn't work yet
62
+ # it "should allow you to use them simultaneously" do
63
+ # with_cookies(@controller_klass) do
64
+ # controller = dispatch_to(@controller_klass, :store_in_multiple)
65
+ # controller.request.session(:cookie)[:foo].should == "cookie-baz"
66
+ #
67
+ # controller = dispatch_to(@controller_klass, :retrieve)
68
+ # controller.request.session(:cookie)[:foo].should =="cookie-baz"
69
+ # controller.request.session(:memory)[:foo].should == "memory-baz"
70
+ # controller.request.session(:memcache)[:foo].should == "memcache-baz"
71
+ # end
72
+ # end
73
+
74
+ end
@@ -0,0 +1,12 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
2
+ require File.join(File.dirname(__FILE__), "controllers", "sessions")
3
+
4
+ describe "An app without sessions enabled" do
5
+
6
+ it "should raise an exception when accessing request.session" do
7
+ lambda {
8
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::SessionsController, :index)
9
+ }.should raise_error(Merb::SessionMixin::NoSessionContainer)
10
+ end
11
+
12
+ end
@@ -0,0 +1,91 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
2
+ require File.join(File.dirname(__FILE__), "controllers", "sessions")
3
+
4
+ # The Merb::Session module gets mixed into Merb::SessionContainer to allow
5
+ # app-level functionality (usually found in app/models/merb/session.rb)
6
+ module Merb
7
+ module Session
8
+
9
+ def awesome?
10
+ self[:foo] == 'awesome'
11
+ end
12
+
13
+ end
14
+ end
15
+
16
+ describe "All session-store backends", :shared => true do
17
+
18
+ it "should be instanciated using the 'generate' method" do
19
+ @session_class.generate.should be_kind_of(@session_class)
20
+ end
21
+
22
+ it "should store the session_id" do
23
+ @session.session_id.should match(/^[0-9a-f]{32}$/)
24
+ end
25
+
26
+ it "should have bracket accessors for setting data" do
27
+ @session.should respond_to(:[]=)
28
+ @session.should respond_to(:[])
29
+ @session[:foo] = 'bar'
30
+ @session[:foo].should == 'bar'
31
+ end
32
+
33
+ end
34
+
35
+ describe "All session-stores mixed into Merb::Controller", :shared => true do
36
+
37
+ before(:all) { @controller_klass = Merb::Test::Fixtures::Controllers::SessionsController }
38
+
39
+ it "should represent the controller session" do
40
+ with_cookies(@controller_klass) do
41
+ controller = dispatch_to(@controller_klass, :index)
42
+ controller.request.session.should be_kind_of(@session_class)
43
+ end
44
+ end
45
+
46
+ it "should store session data" do
47
+ session_store_type = @session_class.session_store_type.to_s
48
+ with_cookies(@controller_klass) do
49
+ controller = dispatch_to(@controller_klass, :index, :foo => session_store_type)
50
+ controller.request.session[:foo].should == session_store_type
51
+ end
52
+ end
53
+
54
+ it "should retrieve session data" do
55
+ session_store_type = @session_class.session_store_type.to_s
56
+ with_cookies(@controller_klass) do
57
+ controller = dispatch_to(@controller_klass, :index, :foo => session_store_type)
58
+ controller = dispatch_to(@controller_klass, :retrieve)
59
+ controller.request.session[:foo].should == session_store_type
60
+ end
61
+ end
62
+
63
+ it "should allow regeneration of the session" do
64
+ session_store_type = @session_class.session_store_type.to_s
65
+ with_cookies(@controller_klass) do
66
+ controller = dispatch_to(@controller_klass, :index, :foo => session_store_type)
67
+ controller = dispatch_to(@controller_klass, :regenerate)
68
+ controller = dispatch_to(@controller_klass, :retrieve)
69
+ controller.request.session[:foo].should == session_store_type
70
+ end
71
+ end
72
+
73
+ it "should not set the Set-Cookie header when the session(_id) didn't change" do
74
+ session_store_type = @session_class.session_store_type.to_s
75
+ with_cookies(@controller_klass) do
76
+ controller = dispatch_to(@controller_klass, :index, :foo => session_store_type)
77
+ controller.headers["Set-Cookie"].should_not be_blank
78
+ controller = dispatch_to(@controller_klass, :retrieve)
79
+ controller.headers["Set-Cookie"].should be_blank
80
+ end
81
+ end
82
+
83
+ it "should have mixed in Merb::Session methods" do
84
+ with_cookies(@controller_klass) do
85
+ controller = dispatch_to(@controller_klass, :index, :foo => 'awesome')
86
+ controller.request.session.should respond_to(:awesome?)
87
+ controller.request.session.should be_awesome
88
+ end
89
+ end
90
+
91
+ end
@@ -35,4 +35,5 @@ module Namespaced
35
35
  Merb::Test::ControllerAssertionMock.called(:index)
36
36
  end
37
37
  end
38
- end
38
+ end
39
+
@@ -7,6 +7,20 @@ Dir[File.join(File.dirname(__FILE__), "controllers/**/*.rb")].each do |f|
7
7
  end
8
8
 
9
9
  describe Merb::Test::RequestHelper do
10
+
11
+ describe Merb::Test::RequestHelper::CookieJar do
12
+
13
+ it "should update its values from a request object" do
14
+ cookie_jar = Merb::Test::RequestHelper::CookieJar.new
15
+ cookie_jar.should be_empty
16
+ request = fake_request
17
+ request.cookies[:foo] = "bar+baz" # escaped by default
18
+ cookie_jar.update_from_request request
19
+ cookie_jar[:foo].should == 'bar baz'
20
+ end
21
+
22
+ end
23
+
10
24
  describe "#dispatch_to" do
11
25
 
12
26
  before(:all) do
@@ -205,6 +219,7 @@ describe Merb::Test::RequestHelper do
205
219
  controller.class.should == Namespaced::SpecHelperController
206
220
  end
207
221
  end
222
+
208
223
  end
209
224
 
210
225
  module Merb::Test::RequestHelper
data/spec/spec_helper.rb CHANGED
@@ -5,7 +5,7 @@ require File.join(File.dirname(__FILE__), "..", "lib", "merb-core")
5
5
 
6
6
  default_options = {:environment => 'test', :adapter => 'runner'}
7
7
  options = default_options.merge($START_OPTIONS || {})
8
- Merb.start options
8
+ Merb.start_environment(options)
9
9
 
10
10
  # -- Global custom matchers --
11
11
 
@@ -92,10 +92,10 @@ module Merb
92
92
  end
93
93
  end
94
94
 
95
-
96
95
  Spec::Runner.configure do |config|
97
96
  config.include Merb::Test::Helper
98
97
  config.include Merb::Test::RspecMatchers
98
+ config.include Merb::Test::Rspec::ViewMatchers
99
99
  config.include Merb::Test::RequestHelper
100
100
 
101
101
  def with_level(level)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: merb-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ezra Zygmuntowicz
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-26 00:00:00 +03:00
12
+ date: 2008-09-09 00:00:00 +03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.9.4
23
+ version: 0.9.5
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: erubis
@@ -127,6 +127,9 @@ files:
127
127
  - README
128
128
  - Rakefile
129
129
  - TODO
130
+ - CHANGELOG
131
+ - PUBLIC_CHANGELOG
132
+ - CONTRIBUTORS
130
133
  - docs/bootloading.dox
131
134
  - docs/documentation_standards
132
135
  - docs/merb-core-call-stack-diagram.mmap
@@ -146,7 +149,6 @@ files:
146
149
  - spec/private/core_ext/kernel_spec.rb
147
150
  - spec/private/dispatch
148
151
  - spec/private/dispatch/bootloader_spec.rb
149
- - spec/private/dispatch/cookies_spec.rb
150
152
  - spec/private/dispatch/fixture
151
153
  - spec/private/dispatch/fixture/app
152
154
  - spec/private/dispatch/fixture/app/controllers
@@ -183,7 +185,6 @@ files:
183
185
  - spec/private/dispatch/fixture/public/stylesheets
184
186
  - spec/private/dispatch/fixture/public/stylesheets/master.css
185
187
  - spec/private/dispatch/route_params_spec.rb
186
- - spec/private/dispatch/session_mixin_spec.rb
187
188
  - spec/private/dispatch/spec_helper.rb
188
189
  - spec/private/router
189
190
  - spec/private/router/behavior_spec.rb
@@ -324,11 +325,13 @@ files:
324
325
  - spec/public/controller
325
326
  - spec/public/controller/authentication_spec.rb
326
327
  - spec/public/controller/base_spec.rb
328
+ - spec/public/controller/conditional_get_spec.rb
327
329
  - spec/public/controller/config
328
330
  - spec/public/controller/config/init.rb
329
331
  - spec/public/controller/controllers
330
332
  - spec/public/controller/controllers/authentication.rb
331
333
  - spec/public/controller/controllers/base.rb
334
+ - spec/public/controller/controllers/conditional_get.rb
332
335
  - spec/public/controller/controllers/cookies.rb
333
336
  - spec/public/controller/controllers/dispatcher.rb
334
337
  - spec/public/controller/controllers/display.rb
@@ -402,6 +405,7 @@ files:
402
405
  - spec/public/logger/spec_helper.rb
403
406
  - spec/public/rack
404
407
  - spec/public/rack/conditinal_get_middleware_spec.rb
408
+ - spec/public/rack/csrf_middleware_spec.rb
405
409
  - spec/public/rack/rack_middleware_spec.rb
406
410
  - spec/public/rack/shared_example_groups.rb
407
411
  - spec/public/reloading
@@ -433,6 +437,15 @@ files:
433
437
  - spec/public/router/spec_helper.rb
434
438
  - spec/public/router/special_spec.rb
435
439
  - spec/public/router/string_spec.rb
440
+ - spec/public/session
441
+ - spec/public/session/controllers
442
+ - spec/public/session/controllers/sessions.rb
443
+ - spec/public/session/cookie_session_spec.rb
444
+ - spec/public/session/memcached_session_spec.rb
445
+ - spec/public/session/memory_session_spec.rb
446
+ - spec/public/session/multiple_sessions_spec.rb
447
+ - spec/public/session/no_session_spec.rb
448
+ - spec/public/session/session_spec.rb
436
449
  - spec/public/template
437
450
  - spec/public/template/template_spec.rb
438
451
  - spec/public/template/templates
@@ -465,6 +478,7 @@ files:
465
478
  - lib/merb-core/controller/mime.rb
466
479
  - lib/merb-core/controller/mixins
467
480
  - lib/merb-core/controller/mixins/authentication.rb
481
+ - lib/merb-core/controller/mixins/conditional_get.rb
468
482
  - lib/merb-core/controller/mixins/controller.rb
469
483
  - lib/merb-core/controller/mixins/render.rb
470
484
  - lib/merb-core/controller/mixins/responder.rb
@@ -489,9 +503,11 @@ files:
489
503
  - lib/merb-core/dispatch/router/route.rb
490
504
  - lib/merb-core/dispatch/router.rb
491
505
  - lib/merb-core/dispatch/session
506
+ - lib/merb-core/dispatch/session/container.rb
492
507
  - lib/merb-core/dispatch/session/cookie.rb
493
508
  - lib/merb-core/dispatch/session/memcached.rb
494
509
  - lib/merb-core/dispatch/session/memory.rb
510
+ - lib/merb-core/dispatch/session/store_container.rb
495
511
  - lib/merb-core/dispatch/session.rb
496
512
  - lib/merb-core/dispatch/worker.rb
497
513
  - lib/merb-core/gem_ext
@@ -517,12 +533,14 @@ files:
517
533
  - lib/merb-core/rack/middleware
518
534
  - lib/merb-core/rack/middleware/conditional_get.rb
519
535
  - lib/merb-core/rack/middleware/content_length.rb
536
+ - lib/merb-core/rack/middleware/csrf.rb
520
537
  - lib/merb-core/rack/middleware/path_prefix.rb
521
538
  - lib/merb-core/rack/middleware/profiler.rb
522
539
  - lib/merb-core/rack/middleware/static.rb
523
540
  - lib/merb-core/rack/middleware/tracer.rb
524
541
  - lib/merb-core/rack/middleware.rb
525
542
  - lib/merb-core/rack.rb
543
+ - lib/merb-core/script.rb
526
544
  - lib/merb-core/server.rb
527
545
  - lib/merb-core/tasks
528
546
  - lib/merb-core/tasks/audit.rake