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 )