class ActionController::Live::ResponseTest

Public Class Methods

default_headers() click to toggle source
# File actionpack/test/dispatch/live_response_test.rb, line 22
def self.default_headers
  { "omg" => "g" }
end

Public Instance Methods

setup() click to toggle source
# File actionpack/test/dispatch/live_response_test.rb, line 9
def setup
  @response = Live::Response.new
  @response.request = ActionDispatch::Request.empty
end
test_cache_control_is_set() click to toggle source
# File actionpack/test/dispatch/live_response_test.rb, line 54
def test_cache_control_is_set
  @response.stream.write "omg"
  assert_equal "no-cache", @response.headers["Cache-Control"]
end
test_content_length_is_removed() click to toggle source
# File actionpack/test/dispatch/live_response_test.rb, line 59
def test_content_length_is_removed
  @response.headers["Content-Length"] = "1234"
  @response.stream.write "omg"
  assert_nil @response.headers["Content-Length"]
end
test_header_merge() click to toggle source
# File actionpack/test/dispatch/live_response_test.rb, line 14
def test_header_merge
  header = @response.header.merge("Foo" => "Bar")
  assert_kind_of(ActionController::Live::Response::Header, header)
  assert_not_equal header, @response.header
end
test_headers_cannot_be_written_after_close() click to toggle source
# File actionpack/test/dispatch/live_response_test.rb, line 86
def test_headers_cannot_be_written_after_close
  @response.stream.close
  # we can add data until it's actually written, which happens on `each`
  @response.each { |x| }

  e = assert_raises(ActionDispatch::IllegalStateError) do
    @response.headers["Content-Length"] = "zomg"
  end
  assert_equal "header already sent", e.message
end
test_headers_cannot_be_written_after_webserver_reads() click to toggle source
# File actionpack/test/dispatch/live_response_test.rb, line 65
def test_headers_cannot_be_written_after_webserver_reads
  @response.stream.write "omg"
  latch = Concurrent::CountDownLatch.new

  t = Thread.new {
    @response.each do
      latch.count_down
    end
  }

  latch.wait
  assert @response.headers.frozen?
  e = assert_raises(ActionDispatch::IllegalStateError) do
    @response.headers["Content-Length"] = "zomg"
  end

  assert_equal "header already sent", e.message
  @response.stream.close
  t.join
end
test_initialize_with_default_headers() click to toggle source
# File actionpack/test/dispatch/live_response_test.rb, line 20
def test_initialize_with_default_headers
  r = Class.new(Live::Response) do
    def self.default_headers
      { "omg" => "g" }
    end
  end

  header = r.new.header
  assert_kind_of(ActionController::Live::Response::Header, header)
end
test_parallel() click to toggle source
# File actionpack/test/dispatch/live_response_test.rb, line 31
def test_parallel
  latch = Concurrent::CountDownLatch.new

  t = Thread.new {
    @response.stream.write "foo"
    latch.wait
    @response.stream.close
  }

  @response.await_commit
  @response.each do |part|
    assert_equal "foo", part
    latch.count_down
  end
  assert t.join
end
test_setting_body_populates_buffer() click to toggle source
# File actionpack/test/dispatch/live_response_test.rb, line 48
def test_setting_body_populates_buffer
  @response.body = "omg"
  @response.close
  assert_equal ["omg"], @response.body_parts
end