blob: 59d1d56e7648983937b97715921c60918e327c48 [file] [log] [blame]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "cups_proxy/mhd_http_request.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
namespace cups_proxy {
namespace {
TEST(SetStatusLine, ValuesAreSaved) {
MHDHttpRequest request;
request.SetStatusLine("GET", "/test", "1.1");
EXPECT_EQ(request.method(), "GET");
EXPECT_EQ(request.url(), "/test");
EXPECT_EQ(request.version(), "1.1");
}
TEST(AddHeader, SkipExpect100Continue) {
MHDHttpRequest request;
request.AddHeader("Expect", "100-continue");
EXPECT_TRUE(request.headers().empty());
}
TEST(AddHeader, PreserveNon100Expect) {
MHDHttpRequest request;
request.AddHeader("Expect", "arbitrary");
auto headers = request.headers();
EXPECT_EQ(headers["Expect"], "arbitrary");
}
TEST(AddHeader, TrackChunkedEncoding) {
MHDHttpRequest request;
request.AddHeader("Transfer-Encoding", "chunked");
request.Finalize();
auto headers = request.headers();
EXPECT_EQ(headers["Content-Length"], "0");
EXPECT_EQ(headers.find("Transfer-Encoding"), headers.end());
}
TEST(AddHeader, TrackNonChunkedEncoding) {
MHDHttpRequest request;
request.AddHeader("Transfer-Encoding", "gzip");
request.Finalize();
auto headers = request.headers();
EXPECT_EQ(headers.find("Content-Length"), headers.end());
EXPECT_EQ(headers["Transfer-Encoding"], "gzip");
}
TEST(AddHeader, OtherHeaders) {
MHDHttpRequest request;
request.AddHeader("Header1", "Value1");
request.AddHeader("Header2", "value2-test");
request.Finalize();
auto headers = request.headers();
EXPECT_EQ(headers["Header1"], "Value1");
EXPECT_EQ(headers["Header2"], "value2-test");
}
TEST(PushToBody, AddContent) {
MHDHttpRequest request;
request.PushToBody("line1\n");
request.PushToBody("line2\n");
std::string body = "line1\nline2\n";
std::vector<unsigned char> expected(body.begin(), body.end());
EXPECT_EQ(request.body(), expected);
}
} // namespace
} // namespace cups_proxy