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

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

Issue 284223004: List cloud devices in chrome://devices page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/local_discovery/cloud_print_printer_list.h"
6
5 #include <set> 7 #include <set>
6 8
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
9 #include "chrome/browser/local_discovery/cloud_print_printer_list.h" 10 #include "base/run_loop.h"
10 #include "components/cloud_devices/common/cloud_devices_urls.h" 11 #include "components/cloud_devices/common/cloud_devices_urls.h"
11 #include "content/public/test/test_browser_thread.h" 12 #include "content/public/test/test_browser_thread.h"
12 #include "google_apis/gaia/fake_oauth2_token_service.h" 13 #include "google_apis/gaia/fake_oauth2_token_service.h"
13 #include "google_apis/gaia/google_service_auth_error.h"
14 #include "net/base/host_port_pair.h"
15 #include "net/base/net_errors.h"
16 #include "net/http/http_request_headers.h"
17 #include "net/http/http_status_code.h"
18 #include "net/url_request/test_url_fetcher_factory.h" 14 #include "net/url_request/test_url_fetcher_factory.h"
19 #include "net/url_request/url_fetcher_impl.h"
20 #include "net/url_request/url_request_status.h"
21 #include "net/url_request/url_request_test_util.h" 15 #include "net/url_request/url_request_test_util.h"
22 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
24 #include "url/gurl.h"
25 18
26 using testing::Mock; 19 using testing::Mock;
27 using testing::NiceMock; 20 using testing::NiceMock;
28 using testing::StrictMock; 21 using testing::StrictMock;
29 22
30 namespace local_discovery { 23 namespace local_discovery {
31 24
32 namespace { 25 namespace {
33 26
34 const char kSampleSuccessResponseOAuth[] = "{" 27 const char kSampleSuccessResponseOAuth[] = "{"
35 " \"success\": true," 28 " \"success\": true,"
36 " \"printers\": [" 29 " \"printers\": ["
37 " {\"id\" : \"someID\"," 30 " {\"id\" : \"someID\","
38 " \"displayName\": \"someDisplayName\"," 31 " \"displayName\": \"someDisplayName\","
39 " \"description\": \"someDescription\"}" 32 " \"description\": \"someDescription\"}"
40 " ]" 33 " ]"
41 "}"; 34 "}";
42 35
43 class MockDelegate : public CloudPrintPrinterList::Delegate { 36 class MockDelegate : public CloudDeviceListDelegate {
44 public: 37 public:
45 MOCK_METHOD0(OnCloudPrintPrinterListUnavailable, void()); 38 MOCK_METHOD0(OnDeviceListUnavailable, void());
46 MOCK_METHOD0(OnCloudPrintPrinterListReady, void()); 39 MOCK_METHOD0(OnDeviceListReady, void());
47 }; 40 };
48 41
49 class CloudPrintPrinterListTest : public testing::Test { 42 class CloudPrintPrinterListTest : public testing::Test {
50 public: 43 public:
51 CloudPrintPrinterListTest() 44 CloudPrintPrinterListTest()
52 : ui_thread_(content::BrowserThread::UI, &loop_), 45 : ui_thread_(content::BrowserThread::UI, &loop_),
53 request_context_(new net::TestURLRequestContextGetter( 46 request_context_(new net::TestURLRequestContextGetter(
54 base::MessageLoopProxy::current())) { 47 base::MessageLoopProxy::current())),
48 fetcher_factory_(NULL),
49 printer_list_(request_context_.get(), &token_service_, "account_id",
50 &delegate_) {
51 }
52
53 virtual void SetUp() OVERRIDE {
55 ui_thread_.Stop(); // HACK: Fake being on the UI thread 54 ui_thread_.Stop(); // HACK: Fake being on the UI thread
56 token_service_.set_request_context(request_context_.get()); 55 token_service_.set_request_context(request_context_.get());
57 token_service_.AddAccount("account_id"); 56 token_service_.AddAccount("account_id");
58 printer_list_.reset(
59 new CloudPrintPrinterList(request_context_.get(),
60 &token_service_,
61 "account_id",
62 &delegate_));
63
64 fallback_fetcher_factory_.reset(new net::TestURLFetcherFactory());
65 net::URLFetcherImpl::set_factory(NULL);
66 fetcher_factory_.reset(new net::FakeURLFetcherFactory(
67 fallback_fetcher_factory_.get()));
68 }
69
70 virtual ~CloudPrintPrinterListTest() {
71 fetcher_factory_.reset();
72 net::URLFetcherImpl::set_factory(fallback_fetcher_factory_.get());
73 fallback_fetcher_factory_.reset();
74 } 57 }
75 58
76 protected: 59 protected:
77 base::MessageLoopForUI loop_; 60 base::MessageLoopForUI loop_;
78 content::TestBrowserThread ui_thread_; 61 content::TestBrowserThread ui_thread_;
79 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 62 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
80 // Use a test factory as a fallback so we don't have to deal with OAuth2 63 net::FakeURLFetcherFactory fetcher_factory_;
81 // requests.
82 scoped_ptr<net::TestURLFetcherFactory> fallback_fetcher_factory_;
83 scoped_ptr<net::FakeURLFetcherFactory> fetcher_factory_;
84 FakeOAuth2TokenService token_service_; 64 FakeOAuth2TokenService token_service_;
85 StrictMock<MockDelegate> delegate_; 65 StrictMock<MockDelegate> delegate_;
86 scoped_ptr<CloudPrintPrinterList> printer_list_; 66 CloudPrintPrinterList printer_list_;
87 }; 67 };
88 68
89 TEST_F(CloudPrintPrinterListTest, SuccessOAuth2) { 69 TEST_F(CloudPrintPrinterListTest, List) {
90 fetcher_factory_->SetFakeResponse( 70 fetcher_factory_.SetFakeResponse(
91 cloud_devices::GetCloudPrintRelativeURL("search"), 71 cloud_devices::GetCloudPrintRelativeURL("search"),
92 kSampleSuccessResponseOAuth, 72 kSampleSuccessResponseOAuth,
93 net::HTTP_OK, 73 net::HTTP_OK,
94 net::URLRequestStatus::SUCCESS); 74 net::URLRequestStatus::SUCCESS);
95 75
96 GCDBaseApiFlow* cloudprint_flow = printer_list_->GetOAuth2ApiFlowForTests(); 76 GCDBaseApiFlow* cloudprint_flow = printer_list_.GetOAuth2ApiFlowForTests();
97 77
98 printer_list_->Start(); 78 printer_list_.Start();
99 79
100 cloudprint_flow->OnGetTokenSuccess(NULL, "SomeToken", base::Time()); 80 cloudprint_flow->OnGetTokenSuccess(NULL, "SomeToken", base::Time());
101 81
102 EXPECT_CALL(delegate_, OnCloudPrintPrinterListReady()); 82 EXPECT_CALL(delegate_, OnDeviceListReady());
103 83
104 base::MessageLoop::current()->RunUntilIdle(); 84 base::RunLoop().RunUntilIdle();
105 85
106 Mock::VerifyAndClear(&delegate_); 86 Mock::VerifyAndClear(&delegate_);
107 87
108 std::set<std::string> ids_found; 88 std::set<std::string> ids_found;
109 std::set<std::string> ids_expected; 89 std::set<std::string> ids_expected;
110
111 ids_expected.insert("someID"); 90 ids_expected.insert("someID");
112 91
113 int length = 0; 92 for (CloudPrintPrinterList::iterator i = printer_list_.printer_list().begin();
114 for (CloudPrintPrinterList::iterator i = printer_list_->begin(); 93 i != printer_list_.printer_list().end(); i++) {
115 i != printer_list_->end(); i++, length++) {
116 ids_found.insert(i->id); 94 ids_found.insert(i->id);
117 } 95 }
118 96
119 EXPECT_EQ(ids_expected, ids_found); 97 ASSERT_EQ(ids_expected, ids_found);
120 EXPECT_EQ(1, length);
121 98
122 const CloudPrintPrinterList::PrinterDetails* found = 99 EXPECT_EQ("someID", printer_list_.printer_list()[0].id);
123 printer_list_->GetDetailsFor("someID"); 100 EXPECT_EQ("someDisplayName", printer_list_.printer_list()[0].display_name);
124 ASSERT_TRUE(found != NULL); 101 EXPECT_EQ("someDescription", printer_list_.printer_list()[0].description);
125 EXPECT_EQ("someID", found->id); 102 EXPECT_EQ("printer", printer_list_.printer_list()[0].type);
126 EXPECT_EQ("someDisplayName", found->display_name);
127 EXPECT_EQ("someDescription", found->description);
128 } 103 }
129 104
130 } // namespace 105 } // namespace
131 106
132 } // namespace local_discovery 107 } // namespace local_discovery
OLDNEW
« no previous file with comments | « chrome/browser/local_discovery/cloud_print_printer_list.cc ('k') | chrome/browser/local_discovery/gcd_base_api_flow.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698