1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright 2017 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include <memory>
- #include "base/run_loop.h"
- #include "base/test/bind.h"
- #include "ios/web/public/test/fakes/fake_browser_state.h"
- #import "ios/web/public/test/web_test.h"
- #import "ios/web/public/web_client.h"
- #include "net/test/embedded_test_server/embedded_test_server.h"
- #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
- #include "services/network/public/cpp/resource_request.h"
- #include "services/network/public/cpp/simple_url_loader.h"
- #include "services/network/public/mojom/url_response_head.mojom.h"
- #if !defined(__has_feature) || !__has_feature(objc_arc)
- #error "This file requires ARC support."
- #endif
- namespace web {
- class URLLoaderTest : public WebTest {
- protected:
- URLLoaderTest() : WebTest(WebTaskEnvironment::Options::IO_MAINLOOP) {}
- protected:
- net::EmbeddedTestServer server_;
- };
- // Tests that basic URLLoader wrapper works.
- TEST_F(URLLoaderTest, Basic) {
- server_.AddDefaultHandlers(FILE_PATH_LITERAL(base::FilePath()));
- ASSERT_TRUE(server_.Start());
- std::unique_ptr<network::ResourceRequest> request =
- std::make_unique<network::ResourceRequest>();
- request->url = server_.GetURL("/echo");
- // Adds kCorsExemptHeaderName into the cors_exempt_headers, that use should be
- // allowed by FakeBrowserState. If BrowserState implementation does not
- // permit to use this header in |cors_exempt_headers| explicitly, the request
- // fails with net::ERR_INVALID_ARGUMENT.
- request->cors_exempt_headers.SetHeader(
- FakeBrowserState::kCorsExemptTestHeaderName, "Test");
- auto loader = network::SimpleURLLoader::Create(std::move(request),
- TRAFFIC_ANNOTATION_FOR_TESTS);
- std::string result;
- base::RunLoop run_loop;
- loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
- GetBrowserState()->GetURLLoaderFactory(),
- base::BindLambdaForTesting(
- [&](std::unique_ptr<std::string> response_body) {
- if (response_body)
- result = *response_body;
- run_loop.Quit();
- }));
- run_loop.Run();
- EXPECT_EQ(0, loader->NetError());
- EXPECT_EQ(result, "Echo");
- auto* response_info = loader->ResponseInfo();
- ASSERT_TRUE(!!response_info);
- ASSERT_TRUE(!!response_info->headers);
- EXPECT_EQ(200, response_info->headers->response_code());
- }
- } // namespace web
|