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

Side by Side Diff: chrome/browser/local_discovery/cloud_print_printer_list_unittest.cc

Issue 23658020: Printer list for Google Cloud Print (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 months 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/local_discovery/cloud_print_printer_list.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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.
4
5 #include <set>
6
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h"
9 #include "chrome/browser/local_discovery/cloud_print_printer_list.h"
10 #include "content/public/test/test_browser_thread.h"
11 #include "google_apis/gaia/google_service_auth_error.h"
12 #include "net/base/host_port_pair.h"
13 #include "net/base/net_errors.h"
14 #include "net/http/http_request_headers.h"
15 #include "net/url_request/test_url_fetcher_factory.h"
16 #include "net/url_request/url_fetcher_impl.h"
17 #include "net/url_request/url_request_test_util.h"
18 #include "testing/gmock/include/gmock/gmock.h"
19 #include "testing/gtest/include/gtest/gtest.h"
20
21 using testing::NiceMock;
22 using testing::StrictMock;
23 using testing::Mock;
24
25 namespace local_discovery {
26
27 namespace {
28
29 const char kSampleSuccessResponseOAuth[] = "{"
30 " \"success\": true,"
31 " \"printers\": ["
32 " {\"id\" : \"someID\","
33 " \"displayName\": \"someDisplayName\","
34 " \"description\": \"someDescription\"}"
35 " ]"
36 "}";
37
38 class TestOAuth2TokenService : public OAuth2TokenService {
39 public:
40 explicit TestOAuth2TokenService(net::URLRequestContextGetter* request_context)
41 : request_context_(request_context) {
42 }
43 protected:
44 virtual std::string GetRefreshToken() OVERRIDE {
45 return "SampleToken";
46 }
47
48 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE {
49 return request_context_.get();
50 }
51
52 private:
53 scoped_refptr<net::URLRequestContextGetter> request_context_;
54 };
55
56 class MockDelegate : public CloudPrintPrinterList::Delegate {
57 public:
58 MOCK_METHOD0(OnCloudPrintPrinterListUnavailable, void());
59 MOCK_METHOD0(OnCloudPrintPrinterListReady, void());
60 };
61
62 class CloudPrintPrinterListTest : public testing::Test {
63 public:
64 CloudPrintPrinterListTest()
65 : ui_thread_(content::BrowserThread::UI,
66 &loop_),
67 request_context_(new net::TestURLRequestContextGetter(
68 base::MessageLoopProxy::current())),
69 token_service_(request_context_.get()) {
70 ui_thread_.Stop(); // HACK: Fake being on the UI thread
71
72 printer_list_.reset(
73 new CloudPrintPrinterList(request_context_.get(),
74 "http://SoMeUrL.com/cloudprint",
75 &token_service_,
76 &delegate_));
77
78 fallback_fetcher_factory_.reset(new net::TestURLFetcherFactory());
79 net::URLFetcherImpl::set_factory(NULL);
80 fetcher_factory_.reset(new net::FakeURLFetcherFactory(
81 fallback_fetcher_factory_.get()));
82 }
83
84 virtual ~CloudPrintPrinterListTest() {
85 fetcher_factory_.reset();
86 net::URLFetcherImpl::set_factory(fallback_fetcher_factory_.get());
87 fallback_fetcher_factory_.reset();
88 }
89
90 protected:
91 base::MessageLoopForUI loop_;
92 content::TestBrowserThread ui_thread_;
93 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
94 // Use a test factory as a fallback so we don't have to deal with OAuth2
95 // requests.
96 scoped_ptr<net::TestURLFetcherFactory> fallback_fetcher_factory_;
97 scoped_ptr<net::FakeURLFetcherFactory> fetcher_factory_;
98 TestOAuth2TokenService token_service_;
99 StrictMock<MockDelegate> delegate_;
100 scoped_ptr<CloudPrintPrinterList> printer_list_;
101 };
102
103 TEST_F(CloudPrintPrinterListTest, SuccessOAuth2) {
104 fetcher_factory_->SetFakeResponse("http://SoMeUrL.com/cloudprint/search",
105 kSampleSuccessResponseOAuth,
106 true);
107
108
109 CloudPrintBaseApiFlow* cloudprint_flow =
110 printer_list_->GetOAuth2ApiFlowForTests();
111
112 printer_list_->Start();
113
114 cloudprint_flow->OnGetTokenSuccess(NULL, "SomeToken", base::Time());
115
116 EXPECT_CALL(delegate_, OnCloudPrintPrinterListReady());
117
118 base::MessageLoop::current()->RunUntilIdle();
119
120 Mock::VerifyAndClear(&delegate_);
121
122 std::set<std::string> ids_found;
123 std::set<std::string> ids_expected;
124
125 ids_expected.insert("someID");
126
127 int length = 0;
128 for (CloudPrintPrinterList::iterator i = printer_list_->begin();
129 i != printer_list_->end(); i++, length++) {
130 ids_found.insert(i->id);
131 }
132
133 EXPECT_EQ(ids_expected, ids_found);
134 EXPECT_EQ(1, length);
135
136 const CloudPrintPrinterList::PrinterDetails* found =
137 printer_list_->GetDetailsFor("someID");
138 ASSERT_TRUE(found != NULL);
139 EXPECT_EQ("someID", found->id);
140 EXPECT_EQ("someDisplayName", found->display_name);
141 EXPECT_EQ("someDescription", found->description);
142 }
143
144 } // namespace
145
146 } // namespace local_discovery
OLDNEW
« no previous file with comments | « chrome/browser/local_discovery/cloud_print_printer_list.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698