Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(175)

Side by Side Diff: chrome/browser/chromeos/drive/test_servers/http_server_unittest.cc

Issue 11088073: HTTP server for testing Google Drive. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixed response generation. Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 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.
4
5 #include "chrome/browser/chromeos/drive/test_servers/http_server.h"
6
7 #include "base/threading/thread.h"
8 #include "content/public/browser/browser_thread.h"
9 #include "content/public/test/test_browser_thread.h"
10 #include "net/url_request/url_fetcher.h"
11 #include "net/url_request/url_fetcher_delegate.h"
12 #include "net/url_request/url_request_test_util.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace drive {
16 namespace test_servers {
17
18 namespace {
19
20 // Helper function to receive content of a response returned after invoking
21 // |fetcher|.
22 std::string GetFetcherResponseContent(const net::URLFetcher* fetcher) {
23 std::string result;
24 DCHECK(fetcher->GetResponseAsString(&result));
25 return result;
26 }
27
28 } // namespace
29
30 class HttpServerTest : public testing::Test,
31 public net::URLFetcherDelegate {
32 public:
33 HttpServerTest()
34 : ui_thread_(content::BrowserThread::UI, &message_loop_),
35 io_thread_(content::BrowserThread::IO) {
36 }
37
38 virtual void SetUp() OVERRIDE {
39 io_thread_.StartIOThread();
40
41 request_context_getter_ = new TestURLRequestContextGetter(
42 content::BrowserThread::GetMessageLoopProxyForThread(
43 content::BrowserThread::IO));
44
45 server_ = HttpServer::CreateForTesting();
46 DCHECK(server_.get());
47 }
48
49 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE {
50 MessageLoop::current()->Quit();
51 }
52
53 protected:
54 MessageLoopForUI message_loop_;
55 content::TestBrowserThread ui_thread_;
56 content::TestBrowserThread io_thread_;
57 scoped_refptr<TestURLRequestContextGetter> request_context_getter_;
58 scoped_ptr<HttpServer> server_;
59 };
60
61 TEST_F(HttpServerTest, TextRequest) {
62 // The simplest text response with an auto generated url.
63 GURL url1 = server_->RegisterSimpleTextResponse("Raspberry chocolate",
64 "text/html");
65 ASSERT_NE("", url1.spec());
66
67 GURL url2 = server_->RegisterSimpleTextResponse("Vanilla chocolate",
68 "text/html");
69 ASSERT_NE("", url2.spec());
70
71 // Response with a specified url and response code.
72 GURL url3 = server_->RegisterTextResponse(
73 "chocolate/bar.html", // URL
74 "No chocolates", // Dummy response text.
75 "text/plain", // Content type.
76 NOT_FOUND); // Response code (404 here).
77 ASSERT_NE("", url3.spec());
78
79 // Set up fetchers.
80 scoped_ptr<net::URLFetcher> fetcher1 = scoped_ptr<net::URLFetcher>(
81 net::URLFetcher::Create(url1,
82 net::URLFetcher::GET,
83 this));
84 fetcher1->SetRequestContext(request_context_getter_.get());
85 scoped_ptr<net::URLFetcher> fetcher2 = scoped_ptr<net::URLFetcher>(
86 net::URLFetcher::Create(url2,
87 net::URLFetcher::GET,
88 this));
89 fetcher2->SetRequestContext(request_context_getter_.get());
90 scoped_ptr<net::URLFetcher> fetcher3 = scoped_ptr<net::URLFetcher>(
91 net::URLFetcher::Create(url3,
92 net::URLFetcher::GET,
93 this));
94 fetcher3->SetRequestContext(request_context_getter_.get());
95
96 // Test.
97 fetcher1->Start();
98 MessageLoop::current()->Run();
99 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher1->GetStatus().status());
100 EXPECT_EQ(200, fetcher1->GetResponseCode());
101 EXPECT_EQ("Raspberry chocolate", GetFetcherResponseContent(fetcher1.get()));
102
103 fetcher2->Start();
104 MessageLoop::current()->Run();
105 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher1->GetStatus().status());
106 EXPECT_EQ(200, fetcher2->GetResponseCode());
107 EXPECT_EQ("Vanilla chocolate", GetFetcherResponseContent(fetcher2.get()));
108
109 fetcher3->Start();
110 MessageLoop::current()->Run();
111 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher1->GetStatus().status());
112 EXPECT_EQ(404, fetcher3->GetResponseCode());
113 EXPECT_EQ("No chocolates", GetFetcherResponseContent(fetcher3.get()));
114 }
115
116 TEST_F(HttpServerTest, DefaultNotFoundResponse) {
117 ASSERT_NE("", server_->GetBaseURL().spec());
118
119 scoped_ptr<net::URLFetcher> fetcher = scoped_ptr<net::URLFetcher>(
120 net::URLFetcher::Create(server_->GetBaseURL(),
121 net::URLFetcher::GET,
122 this));
123 fetcher->SetRequestContext(request_context_getter_.get());
124
125 fetcher->Start();
126 MessageLoop::current()->Run();
127 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status());
128 EXPECT_EQ(404, fetcher->GetResponseCode());
129 }
130
131 // TODO(mtomasz): Write a test for a file response.
132
133 } // namespace test_servers
134 } // namespace drive
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698