1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6 #include "base/bind_helpers.h"
7 #include "base/message_loop/message_loop.h"
8 #include "components/dom_distiller/core/distiller_url_fetcher.h"
9 #include "net/http/http_status_code.h"
10 #include "net/url_request/test_url_fetcher_factory.h"
11 #include "net/url_request/url_fetcher.h"
12 #include "net/url_request/url_request_context_getter.h"
13 #include "testing/gtest/include/gtest/gtest.h"
16 const char kTestPageA[] = "http://www.a.com/";
17 const char kTestPageAResponse[] = { 1, 2, 3, 4, 5, 6, 7 };
18 const char kTestPageB[] = "http://www.b.com/";
19 const char kTestPageBResponse[] = { 'a', 'b', 'c' };
22 class DistillerURLFetcherTest : public testing::Test {
24 void FetcherCallback(const std::string& response) {
29 // testing::Test implementation:
30 virtual void SetUp() OVERRIDE {
31 url_fetcher_.reset(new dom_distiller::DistillerURLFetcher());
32 factory_.reset(new net::FakeURLFetcherFactory(NULL));
33 factory_->SetFakeResponse(
35 std::string(kTestPageAResponse, sizeof(kTestPageAResponse)),
37 factory_->SetFakeResponse(
39 std::string(kTestPageBResponse, sizeof(kTestPageBResponse)),
40 net::HTTP_INTERNAL_SERVER_ERROR);
43 void Fetch(const std::string& url,
44 const std::string& expected_response) {
45 base::MessageLoop loop(base::MessageLoop::TYPE_UI);
46 url_fetcher_->FetchURL(
48 base::Bind(&DistillerURLFetcherTest::FetcherCallback,
49 base::Unretained(this)));
51 CHECK_EQ(expected_response, response_);
54 scoped_ptr<dom_distiller::DistillerURLFetcher> url_fetcher_;
55 scoped_ptr<net::FakeURLFetcherFactory> factory_;
56 std::string response_;
59 TEST_F(DistillerURLFetcherTest, PopulateProto) {
61 std::string(kTestPageAResponse, sizeof(kTestPageAResponse)));
64 TEST_F(DistillerURLFetcherTest, PopulateProtoFailedFetch) {
65 // Expect the callback to contain an empty string for this URL.
66 Fetch(kTestPageB, std::string(std::string(), 0));