<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -35,7 +35,7 @@ module ActionController #:nodoc:
     end
 
     def cookies
-      @response.cookies
+      @request.cookies.merge(@response.cookies)
     end
 
     def redirect_to_url</diff>
      <filename>actionpack/lib/action_controller/testing/process.rb</filename>
    </modified>
    <modified>
      <diff>@@ -108,6 +108,11 @@ XML
       head :created, :location =&gt; 'created resource'
     end
 
+    def delete_cookie
+      cookies.delete(&quot;foo&quot;)
+      render :nothing =&gt; true
+    end
+
     private
       def rescue_action(e)
         raise e
@@ -512,6 +517,18 @@ XML
     assert @request.params[:foo].blank?
   end
 
+  def test_should_have_knowledge_of_client_side_cookie_state_even_if_they_are_not_set
+    @request.cookies['foo'] = 'bar'
+    get :no_op
+    assert_equal 'bar', cookies['foo']
+  end
+
+  def test_should_detect_if_cookie_is_deleted
+    @request.cookies['foo'] = 'bar'
+    get :delete_cookie
+    assert_nil cookies['foo']
+  end
+
   %w(controller response request).each do |variable|
     %w(get post put delete head process).each do |method|
       define_method(&quot;test_#{variable}_missing_for_#{method}_raises_error&quot;) do</diff>
      <filename>actionpack/test/controller/test_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>fc46c9b2207c62d4b029c2c891c61fc660c0b627</id>
    </parent>
  </parents>
  <author>
    <name>Craig Smith</name>
    <email>craigsmith@reevoo.com</email>
  </author>
  <url>http://github.com/rails/rails/commit/316f4704eaa8aaba11e7ecebc1da9aa926fdd2d0</url>
  <id>316f4704eaa8aaba11e7ecebc1da9aa926fdd2d0</id>
  <committed-date>2009-10-14T14:58:55-07:00</committed-date>
  <authored-date>2009-06-05T06:58:38-07:00</authored-date>
  <message>Test cases should see all the cookies, not just cookies that have been set in the controller.

Previously this example would always pass, even when cookies.delete was not called.

@request.cookies['foo'] = 'bar'
get :delete_cookie
assert_nil cookies['foo']

Signed-off-by: Michael Koziarski &lt;michael@koziarski.com&gt;
[#2768 state:committed]</message>
  <tree>2f6030053f62533550957050fc75dc21dd5cecb9</tree>
  <committer>
    <name>Michael Koziarski</name>
    <email>michael@koziarski.com</email>
  </committer>
</commit>
