Protocol-HTTP
view release on metacpan or search on metacpan
clib/tests/compile/compression.cc view on Meta::CPAN
for(auto& it : body_raw) { body_str += string(it); }
auto chunk = req->final_chunk(body_str);
for(auto& it : chunk) content += string(it);
auto result = p.parse(content);
CHECK(result.state == State::done);
CHECK(result.request->body.to_string() == body_concat);
}
}
}
TEST("ignore compression in response if request didn't support it") {
auto req = Request::Builder()
.method(Method::Get)
.allow_compression(Compression::IDENTITY)
.uri("/")
.build();
auto res = Response::Builder().code(200)
.body("my body")
.compress(Compression::GZIP)
.build();
auto data = res->to_string(req);
CHECK(data == "HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\nmy body");
}
TEST("brotli is ignored if there is no plugin for it") {
auto req = Request::Builder()
.method(Method::Get)
.allow_compression(Compression::IDENTITY)
.allow_compression(Compression::BROTLI)
.uri("/")
.build();
auto res = Response::Builder().code(200)
.body("my body")
.compress(Compression::BROTLI)
.build();
auto data = res->to_string(req);
CHECK(data == "HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\nmy body");
}
TEST("is_valid_compression") {
CHECK(is_valid_compression(1) == true);
CHECK(is_valid_compression(2) == true);
CHECK(is_valid_compression(4) == true);
CHECK(is_valid_compression(8) == true);
CHECK(is_valid_compression(0) == false);
CHECK(is_valid_compression(3) == false);
CHECK(is_valid_compression(5) == false);
CHECK(is_valid_compression(6) == false);
}
TEST("[SRV-1757] allow_compression accumulates identity") {
auto req = Request::Builder()
.method(Method::Get)
.allow_compression(Compression::IDENTITY)
.uri("/")
.build();
CHECK(req->compression_prefs != Compression::IDENTITY);
int count = 0;
compression::for_each(req->compression_prefs, [&](auto val, bool neg){
if (val == static_cast<int>(Compression::IDENTITY) && !neg) {
++count;
}
});
CHECK(count == 2);
}
( run in 1.539 second using v1.01-cache-2.11-cpan-5a3173703d6 )