merb-core 0.9.5 → 0.9.6

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.
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