blob: c04f498796b1b723a8e1a9f205f3b472797ee637 [file] [log] [blame]
// Copyright 2014 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <gtest/gtest.h>
#include "buffet/bind_lambda.h"
#include "buffet/http_utils.h"
#include "buffet/http_transport_fake.h"
#include "buffet/mime_utils.h"
#include "buffet/url_utils.h"
using namespace chromeos;
using namespace chromeos::http;
static const char fake_url[] = "http://localhost";
TEST(HttpUtils, PostText) {
std::string fake_data = "Some data";
auto PostHandler = [fake_data](const fake::ServerRequest& request,
fake::ServerResponse* response) {
EXPECT_EQ(request_type::kPost, request.GetMethod());
EXPECT_EQ(fake_data.size(),
atoi(request.GetHeader(request_header::kContentLength).c_str()));
EXPECT_EQ(mime::text::kPlain,
request.GetHeader(request_header::kContentType));
response->Reply(status_code::Ok, request.GetData(), mime::text::kPlain);
};
std::shared_ptr<fake::Transport> transport(new fake::Transport);
transport->AddHandler(fake_url, request_type::kPost, base::Bind(PostHandler));
auto response = http::PostText(fake_url, fake_data.c_str(),
mime::text::kPlain, transport);
EXPECT_TRUE(response->IsSuccessful());
EXPECT_EQ(mime::text::kPlain, response->GetContentType());
EXPECT_EQ(fake_data, response->GetDataAsString());
}
TEST(HttpUtils, Get) {
auto GetHandler = [](const fake::ServerRequest& request,
fake::ServerResponse* response) {
EXPECT_EQ(request_type::kGet, request.GetMethod());
EXPECT_EQ("0", request.GetHeader(request_header::kContentLength));
EXPECT_EQ("", request.GetHeader(request_header::kContentType));
response->ReplyText(status_code::Ok, request.GetFormField("test"),
mime::text::kPlain);
};
std::shared_ptr<fake::Transport> transport(new fake::Transport);
transport->AddHandler(fake_url, request_type::kGet, base::Bind(GetHandler));
for (std::string data : {"blah", "some data", ""}) {
std::string url = url::AppendQueryParam(fake_url, "test", data);
EXPECT_EQ(data, http::GetAsString(url, transport));
}
}