cloud_device_list_unittest.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Copyright 2014 The Chromium Authors. All rights reserved. 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Use of this source code is governed by a BSD-style license that can be 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// found in the LICENSE file. 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "chrome/browser/local_discovery/cloud_device_list.h" 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <set> 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "base/json/json_reader.h" 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "chrome/browser/local_discovery/cloud_device_list_delegate.h" 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "testing/gmock/include/gmock/gmock.h" 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "testing/gtest/include/gtest/gtest.h" 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgusing testing::Mock; 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgusing testing::SaveArg; 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgusing testing::StrictMock; 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgusing testing::_; 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnamespace local_discovery { 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnamespace { 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgconst char kSampleSuccessResponseOAuth[] = 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "{" 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "\"kind\": \"clouddevices#devicesListResponse\"," 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org "\"devices\": [{" 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"kind\": \"clouddevices#device\"," 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"id\": \"someID\"," 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"deviceKind\": \"someType\"," 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"creationTimeMs\": \"123\"," 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"systemName\": \"someDisplayName\"," 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"owner\": \"user@domain.com\"," 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"description\": \"someDescription\"," 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"state\": {" 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"base\": {" 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"connectionStatus\": \"offline\"" 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " }" 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " }," 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"channel\": {" 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"supportedType\": \"xmpp\"" 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " }," 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"personalizedInfo\": {" 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " \"maxRole\": \"owner\"" 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org " }}]}"; 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclass MockDelegate : public CloudDeviceListDelegate { 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org MOCK_METHOD1(OnDeviceListReady, void(const DeviceList&)); 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org MOCK_METHOD0(OnDeviceListUnavailable, void()); 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgTEST(CloudDeviceListTest, Params) { 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org CloudDeviceList device_list(NULL); 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_EQ(GURL("https://www.googleapis.com/clouddevices/v1/devices"), 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org device_list.GetURL()); 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_EQ("https://www.googleapis.com/auth/clouddevices", 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org device_list.GetOAuthScope()); 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_EQ(net::URLFetcher::GET, device_list.GetRequestType()); 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_TRUE(device_list.GetExtraRequestHeaders().empty()); 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgTEST(CloudDeviceListTest, Parsing) { 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org StrictMock<MockDelegate> delegate; 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org CloudDeviceList device_list(&delegate); 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org CloudDeviceListDelegate::DeviceList devices; 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_CALL(delegate, OnDeviceListReady(_)).WillOnce(SaveArg<0>(&devices)); 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org scoped_ptr<base::Value> value( 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org base::JSONReader::Read(kSampleSuccessResponseOAuth)); 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const base::DictionaryValue* dictionary = NULL; 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_TRUE(value->GetAsDictionary(&dictionary)); 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org device_list.OnGCDAPIFlowComplete(*dictionary); 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Mock::VerifyAndClear(&delegate); 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org std::set<std::string> ids_found; 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org std::set<std::string> ids_expected; 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ids_expected.insert("someID"); 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (size_t i = 0; i != devices.size(); ++i) { 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ids_found.insert(devices[i].id); 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_EQ(ids_expected, ids_found); 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_EQ("someID", devices[0].id); 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_EQ("someDisplayName", devices[0].display_name); 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_EQ("someDescription", devices[0].description); 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org EXPECT_EQ("someType", devices[0].type); 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} // namespace 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} // namespace local_discovery 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org