146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file.
446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/bind.h"
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/browser/local_discovery/wifi/bootstrapping_device_lister.h"
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/browser/local_discovery/wifi/mock_wifi_manager.h"
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "components/onc/onc_constants.h"
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h"
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)using testing::StrictMock;
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)using testing::Mock;
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace local_discovery {
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace wifi {
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace {
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class MockableUpdateCallback {
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void UpdateCallback(bool available,
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                      const BootstrappingDeviceDescription& description) {
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    UpdateCallbackInternal(available,
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                           description.device_network_id,
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                           description.device_ssid,
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                           description.device_name,
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                           description.device_kind,
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                           description.connection_status);
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  MOCK_METHOD6(UpdateCallbackInternal,
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)               void(bool available,
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                    const std::string& network_id,
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                    const std::string& ssid,
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                    const std::string& name,
3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                    const std::string& kind,
3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                    BootstrappingDeviceDescription::ConnectionStatus status));
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  BootstrappingDeviceLister::UpdateCallback callback() {
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    return base::Bind(&MockableUpdateCallback::UpdateCallback,
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                      base::Unretained(this));
4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class BootstrappingDeviceListerTest : public ::testing::Test {
4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  BootstrappingDeviceListerTest()
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      : lister_(&mock_wifi_manager_, mockable_callback_.callback()) {}
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ~BootstrappingDeviceListerTest() {}
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  StrictMock<MockableUpdateCallback> mockable_callback_;
5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  StrictMock<MockWifiManager> mock_wifi_manager_;
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  BootstrappingDeviceLister lister_;
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
5846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST_F(BootstrappingDeviceListerTest, ListSingleDevice) {
6046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_CALL(mock_wifi_manager_, GetSSIDListInternal());
6146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  lister_.Start();
6246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  Mock::VerifyAndClearExpectations(&mock_wifi_manager_);
6346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
6446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  std::vector<NetworkProperties> network_property_list;
6546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
6646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NetworkProperties network;
6746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network.guid = "MyInternalID";
6846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network.ssid = "MyDevice@camNprv";
6946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network.connection_state = onc::connection_state::kNotConnected;
7046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
7146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network_property_list.push_back(network);
7246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
7346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NetworkProperties network2;
7446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network2.guid = "MyInternalID2";
7546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network2.ssid = "SomeRandomNetwork";
7646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network2.connection_state = onc::connection_state::kNotConnected;
7746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
7846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network_property_list.push_back(network2);
7946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
8046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_CALL(
8146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      mockable_callback_,
8246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UpdateCallbackInternal(true,
8346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyInternalID",
8446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyDevice@camNprv",
8546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyDevice",
8646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "camera",
8746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             BootstrappingDeviceDescription::NOT_CONFIGURED));
8846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  mock_wifi_manager_.CallSSIDListCallback(network_property_list);
8946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
9046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
9146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST_F(BootstrappingDeviceListerTest, AddRemoveDevice) {
9246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_CALL(mock_wifi_manager_, GetSSIDListInternal());
9346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  lister_.Start();
9446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  Mock::VerifyAndClearExpectations(&mock_wifi_manager_);
9546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
9646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  std::vector<NetworkProperties> network_property_list;
9746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
9846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NetworkProperties network;
9946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network.guid = "MyInternalID";
10046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network.ssid = "MyDevice@camNprv";
10146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network.connection_state = onc::connection_state::kNotConnected;
10246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
10346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network_property_list.push_back(network);
10446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
10546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  std::vector<NetworkProperties> network_property_list2;
10646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
10746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NetworkProperties network2;
10846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network2.guid = "MyInternalID2";
10946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network2.ssid = "MyDevice2@priFprv";
11046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network2.connection_state = onc::connection_state::kNotConnected;
11146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
11246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network_property_list2.push_back(network2);
11346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
11446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_CALL(
11546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      mockable_callback_,
11646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UpdateCallbackInternal(true,
11746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyInternalID",
11846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyDevice@camNprv",
11946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyDevice",
12046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "camera",
12146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             BootstrappingDeviceDescription::NOT_CONFIGURED));
12246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  mock_wifi_manager_.CallSSIDListCallback(network_property_list);
12346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
12446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  Mock::VerifyAndClearExpectations(&mock_wifi_manager_);
12546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
12646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_CALL(
12746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      mockable_callback_,
12846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UpdateCallbackInternal(false,
12946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyInternalID",
13046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyDevice@camNprv",
13146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyDevice",
13246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "camera",
13346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             BootstrappingDeviceDescription::NOT_CONFIGURED));
13446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_CALL(mockable_callback_,
13546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)              UpdateCallbackInternal(true,
13646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                     "MyInternalID2",
13746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                     "MyDevice2@priFprv",
13846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                     "MyDevice2",
13946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                     "printer",
14046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                     BootstrappingDeviceDescription::OFFLINE));
14146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  mock_wifi_manager_.CallNetworkListObservers(network_property_list2);
14246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
14346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
14446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST_F(BootstrappingDeviceListerTest, EdgeCases) {
14546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_CALL(mock_wifi_manager_, GetSSIDListInternal());
14646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  lister_.Start();
14746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  Mock::VerifyAndClearExpectations(&mock_wifi_manager_);
14846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
14946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  std::vector<NetworkProperties> network_property_list;
15046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
15146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NetworkProperties network;
15246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network.guid = "MyInternalID";
15346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network.ssid = "MyDevice@camprv";
15446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network.connection_state = onc::connection_state::kNotConnected;
15546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
15646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NetworkProperties network2;
15746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network2.guid = "MyInternalID2";
15846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network2.ssid = "MyDevice2@unkNprv";
15946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network2.connection_state = onc::connection_state::kNotConnected;
16046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
16146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NetworkProperties network3;
16246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network3.guid = "MyInternalID3";
16346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network3.ssid = "MyDevice3camNprv";
16446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network3.connection_state = onc::connection_state::kNotConnected;
16546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
16646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NetworkProperties network4;
16746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network4.guid = "MyInternalID4";
16846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network4.ssid = "MyDevice4@camNnpr";
16946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network4.connection_state = onc::connection_state::kNotConnected;
17046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
17146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  NetworkProperties network5;
17246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network5.guid = "MyInternalID5";
17346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network5.ssid = "MyDevice5@With@At@Signs@camOprv";
17446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network5.connection_state = onc::connection_state::kNotConnected;
17546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
17646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network_property_list.push_back(network);
17746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network_property_list.push_back(network2);
17846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network_property_list.push_back(network3);
17946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network_property_list.push_back(network4);
18046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  network_property_list.push_back(network5);
18146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
18246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_CALL(
18346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      mockable_callback_,
18446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UpdateCallbackInternal(true,
18546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyInternalID2",
18646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyDevice2@unkNprv",
18746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "MyDevice2",
18846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             "device",
18946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             BootstrappingDeviceDescription::NOT_CONFIGURED));
19046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
19146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_CALL(mockable_callback_,
19246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)              UpdateCallbackInternal(true,
19346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                     "MyInternalID5",
19446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                     "MyDevice5@With@At@Signs@camOprv",
19546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                     "MyDevice5@With@At@Signs",
19646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                     "camera",
19746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                     BootstrappingDeviceDescription::ONLINE));
19846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  mock_wifi_manager_.CallSSIDListCallback(network_property_list);
19946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
20046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
20146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace
20246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
20346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace wifi
20446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
20546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace local_discovery
206