buffet: add unit tests for http_utils

Added more unit tests for utility functions in http_utils.h

BUG=chromium:367379
TEST=Old and new unit tests pass.

Change-Id: I04e28691bc4db3980783c0033f5691087a8c6ab3
Reviewed-on: https://chromium-review.googlesource.com/197312
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/http_connection_fake.cc b/buffet/http_connection_fake.cc
index 6731aeb..0507c0b 100644
--- a/buffet/http_connection_fake.cc
+++ b/buffet/http_connection_fake.cc
@@ -67,7 +67,9 @@
 }
 
 uint64_t Connection::GetResponseDataSize() const {
-  return response_.GetData().size();
+  // HEAD requests must not return body.
+  return (request_.GetMethod() != request_type::kHead) ?
+      response_.GetData().size() : 0;
 }
 
 bool Connection::ReadResponseData(void* data, size_t buffer_size,
@@ -75,7 +77,8 @@
   size_t size_to_read = GetResponseDataSize() - response_data_ptr_;
   if (size_to_read > buffer_size)
     size_to_read = buffer_size;
-  memcpy(data, response_.GetData().data() + response_data_ptr_, size_to_read);
+  if (size_to_read > 0)
+    memcpy(data, response_.GetData().data() + response_data_ptr_, size_to_read);
   if (size_read)
     *size_read = size_to_read;
   response_data_ptr_ += size_to_read;