]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/beast/test/beast/http/file_body.cpp
2 // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 // Official repository: https://github.com/boostorg/beast
10 // Test that header file is self-contained.
11 #include <boost/beast/http/file_body.hpp>
13 #include <boost/beast/core/buffer_traits.hpp>
14 #include <boost/beast/core/buffers_prefix.hpp>
15 #include <boost/beast/core/file_stdio.hpp>
16 #include <boost/beast/core/flat_buffer.hpp>
17 #include <boost/beast/http/parser.hpp>
18 #include <boost/beast/http/serializer.hpp>
19 #include <boost/beast/_experimental/unit_test/suite.hpp>
20 #include <boost/filesystem.hpp>
26 class file_body_test
: public beast::unit_test::suite
33 template<class ConstBufferSequence
>
35 operator()(error_code
&, ConstBufferSequence
const& buffers
)
37 buffer
.commit(net::buffer_copy(
38 buffer
.prepare(buffer_bytes(buffers
)),
51 "Content-Length: 3\r\n"
54 auto const temp
= boost::filesystem::unique_path();
56 response_parser
<basic_file_body
<File
>> p
;
60 temp
.string
<std::string
>().c_str(), file_mode::write
, ec
);
61 BEAST_EXPECTS(! ec
, ec
.message());
63 p
.put(net::buffer(s
.data(), s
.size()), ec
);
64 BEAST_EXPECTS(! ec
, ec
.message());
68 f
.open(temp
.string
<std::string
>().c_str(), file_mode::read
, ec
);
69 auto size
= f
.size(ec
);
70 BEAST_EXPECTS(! ec
, ec
.message());
71 BEAST_EXPECT(size
== 3);
74 f
.read(&s1
[0], s1
.size(), ec
);
75 BEAST_EXPECTS(! ec
, ec
.message());
76 BEAST_EXPECTS(s1
== "xyz", s
);
81 response
<basic_file_body
<File
>> res
{status::ok
, 11};
82 res
.set(field::server
, "test");
83 res
.body().open(temp
.string
<std::string
>().c_str(),
85 BEAST_EXPECTS(! ec
, ec
.message());
86 res
.prepare_payload();
88 serializer
<false, basic_file_body
<File
>, fields
> sr
{res
};
90 BEAST_EXPECTS(! ec
, ec
.message());
91 auto const b
= buffers_front(visit
.buffer
.data());
93 reinterpret_cast<char const*>(b
.data()),
95 BEAST_EXPECTS(s1
== s
, s1
);
98 boost::filesystem::remove(temp
, ec
);
99 BEAST_EXPECTS(! ec
, ec
.message());
104 doTestFileBody
<file_stdio
>();
105 #if BOOST_BEAST_USE_WIN32_FILE
106 doTestFileBody
<file_win32
>();
108 #if BOOST_BEAST_USE_POSIX_FILE
109 doTestFileBody
<file_posix
>();
114 BEAST_DEFINE_TESTSUITE(beast
,http
,file_body
);