chromium/services/network/test/test_utils.h

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_NETWORK_TEST_TEST_UTILS_H_
#define SERVICES_NETWORK_TEST_TEST_UTILS_H_

#include <string>
#include <vector>

#include "net/http/http_status_code.h"
#include "services/network/public/mojom/network_context.mojom-forward.h"
#include "services/network/public/mojom/url_response_head.mojom-forward.h"

namespace network {
struct ResourceRequest;

// Helper method to read the upload bytes from a ResourceRequest with a body.
std::string GetUploadData(const network::ResourceRequest& request);

// Helper methods used to create a mojom::URLResponseHead with the given status.
// If |report_raw_headers| is true, the |raw_request_response_info| field of the
// returned mojom::URLResponseHead is also set to contain the raw headers as
// reported by the network stack (it's useful to report cookies, for example,
// as they are filtered out of the net::HttpResponseHeaders when serialized).
mojom::URLResponseHeadPtr CreateURLResponseHead(
    net::HttpStatusCode http_status);

// Adds cookies to the passed in mojom::URLResponseHead. If it was created with
// |report_raw_headers| true, the cookies are also added to the raw headers.
void AddCookiesToURLResponseHead(const std::vector<std::string>& cookies,
                                 mojom::URLResponseHead* response_header);

// Creates a new NetworkContextParamsPtr for testing that uses a fixed proxy
// config and is safe to use without setting file permissions on Windows.
mojom::NetworkContextParamsPtr CreateNetworkContextParamsForTesting();

}  // namespace network

#endif  // SERVICES_NETWORK_TEST_TEST_UTILS_H_