| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/proximity_auth/remote_device_loader.h" | 5 #include "components/proximity_auth/remote_device_loader.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 class ProximityAuthRemoteDeviceLoaderTest : public testing::Test { | 54 class ProximityAuthRemoteDeviceLoaderTest : public testing::Test { |
| 55 public: | 55 public: |
| 56 ProximityAuthRemoteDeviceLoaderTest() | 56 ProximityAuthRemoteDeviceLoaderTest() |
| 57 : secure_message_delegate_(new cryptauth::FakeSecureMessageDelegate()), | 57 : secure_message_delegate_(new cryptauth::FakeSecureMessageDelegate()), |
| 58 user_private_key_(secure_message_delegate_->GetPrivateKeyForPublicKey( | 58 user_private_key_(secure_message_delegate_->GetPrivateKeyForPublicKey( |
| 59 kUserPublicKey)), | 59 kUserPublicKey)), |
| 60 pref_manager_(new MockProximityAuthPrefManager()) {} | 60 pref_manager_(new MockProximityAuthPrefManager()) {} |
| 61 | 61 |
| 62 ~ProximityAuthRemoteDeviceLoaderTest() {} | 62 ~ProximityAuthRemoteDeviceLoaderTest() {} |
| 63 | 63 |
| 64 void OnRemoteDevicesLoaded(const std::vector<RemoteDevice>& remote_devices) { | 64 void OnRemoteDevicesLoaded( |
| 65 const std::vector<cryptauth::RemoteDevice>& remote_devices) { |
| 65 remote_devices_ = remote_devices; | 66 remote_devices_ = remote_devices; |
| 66 LoadCompleted(); | 67 LoadCompleted(); |
| 67 } | 68 } |
| 68 | 69 |
| 69 MOCK_METHOD0(LoadCompleted, void()); | 70 MOCK_METHOD0(LoadCompleted, void()); |
| 70 | 71 |
| 71 protected: | 72 protected: |
| 72 // Handles deriving the PSK. Ownership will be passed to the | 73 // Handles deriving the PSK. Ownership will be passed to the |
| 73 // RemoteDeviceLoader under test. | 74 // RemoteDeviceLoader under test. |
| 74 std::unique_ptr<cryptauth::FakeSecureMessageDelegate> | 75 std::unique_ptr<cryptauth::FakeSecureMessageDelegate> |
| 75 secure_message_delegate_; | 76 secure_message_delegate_; |
| 76 | 77 |
| 77 // The private key of the user local device. | 78 // The private key of the user local device. |
| 78 std::string user_private_key_; | 79 std::string user_private_key_; |
| 79 | 80 |
| 80 // Stores the result of the RemoteDeviceLoader. | 81 // Stores the result of the RemoteDeviceLoader. |
| 81 std::vector<RemoteDevice> remote_devices_; | 82 std::vector<cryptauth::RemoteDevice> remote_devices_; |
| 82 | 83 |
| 83 // Stores the bluetooth address for BLE devices. | 84 // Stores the bluetooth address for BLE devices. |
| 84 std::unique_ptr<MockProximityAuthPrefManager> pref_manager_; | 85 std::unique_ptr<MockProximityAuthPrefManager> pref_manager_; |
| 85 | 86 |
| 86 DISALLOW_COPY_AND_ASSIGN(ProximityAuthRemoteDeviceLoaderTest); | 87 DISALLOW_COPY_AND_ASSIGN(ProximityAuthRemoteDeviceLoaderTest); |
| 87 }; | 88 }; |
| 88 | 89 |
| 89 TEST_F(ProximityAuthRemoteDeviceLoaderTest, LoadZeroDevices) { | 90 TEST_F(ProximityAuthRemoteDeviceLoaderTest, LoadZeroDevices) { |
| 90 std::vector<cryptauth::ExternalDeviceInfo> unlock_keys; | 91 std::vector<cryptauth::ExternalDeviceInfo> unlock_keys; |
| 91 RemoteDeviceLoader loader(unlock_keys, user_private_key_, kUserId, | 92 RemoteDeviceLoader loader(unlock_keys, user_private_key_, kUserId, |
| 92 std::move(secure_message_delegate_), | 93 std::move(secure_message_delegate_), |
| 93 pref_manager_.get()); | 94 pref_manager_.get()); |
| 94 | 95 |
| 95 std::vector<RemoteDevice> result; | 96 std::vector<cryptauth::RemoteDevice> result; |
| 96 EXPECT_CALL(*this, LoadCompleted()); | 97 EXPECT_CALL(*this, LoadCompleted()); |
| 97 loader.Load( | 98 loader.Load( |
| 98 base::Bind(&ProximityAuthRemoteDeviceLoaderTest::OnRemoteDevicesLoaded, | 99 base::Bind(&ProximityAuthRemoteDeviceLoaderTest::OnRemoteDevicesLoaded, |
| 99 base::Unretained(this))); | 100 base::Unretained(this))); |
| 100 | 101 |
| 101 EXPECT_EQ(0u, remote_devices_.size()); | 102 EXPECT_EQ(0u, remote_devices_.size()); |
| 102 } | 103 } |
| 103 | 104 |
| 104 TEST_F(ProximityAuthRemoteDeviceLoaderTest, LoadOneClassicRemoteDevice) { | 105 TEST_F(ProximityAuthRemoteDeviceLoaderTest, LoadOneClassicRemoteDevice) { |
| 105 std::vector<cryptauth::ExternalDeviceInfo> unlock_keys(1, | 106 std::vector<cryptauth::ExternalDeviceInfo> unlock_keys(1, |
| 106 CreateUnlockKey("1")); | 107 CreateUnlockKey("1")); |
| 107 RemoteDeviceLoader loader(unlock_keys, user_private_key_, kUserId, | 108 RemoteDeviceLoader loader(unlock_keys, user_private_key_, kUserId, |
| 108 std::move(secure_message_delegate_), | 109 std::move(secure_message_delegate_), |
| 109 pref_manager_.get()); | 110 pref_manager_.get()); |
| 110 | 111 |
| 111 std::vector<RemoteDevice> result; | 112 std::vector<cryptauth::RemoteDevice> result; |
| 112 EXPECT_CALL(*this, LoadCompleted()); | 113 EXPECT_CALL(*this, LoadCompleted()); |
| 113 loader.Load( | 114 loader.Load( |
| 114 base::Bind(&ProximityAuthRemoteDeviceLoaderTest::OnRemoteDevicesLoaded, | 115 base::Bind(&ProximityAuthRemoteDeviceLoaderTest::OnRemoteDevicesLoaded, |
| 115 base::Unretained(this))); | 116 base::Unretained(this))); |
| 116 | 117 |
| 117 EXPECT_EQ(1u, remote_devices_.size()); | 118 EXPECT_EQ(1u, remote_devices_.size()); |
| 118 EXPECT_FALSE(remote_devices_[0].persistent_symmetric_key.empty()); | 119 EXPECT_FALSE(remote_devices_[0].persistent_symmetric_key.empty()); |
| 119 EXPECT_EQ(unlock_keys[0].friendly_device_name(), remote_devices_[0].name); | 120 EXPECT_EQ(unlock_keys[0].friendly_device_name(), remote_devices_[0].name); |
| 120 EXPECT_EQ(unlock_keys[0].public_key(), remote_devices_[0].public_key); | 121 EXPECT_EQ(unlock_keys[0].public_key(), remote_devices_[0].public_key); |
| 121 EXPECT_EQ(unlock_keys[0].bluetooth_address(), | 122 EXPECT_EQ(unlock_keys[0].bluetooth_address(), |
| 122 remote_devices_[0].bluetooth_address); | 123 remote_devices_[0].bluetooth_address); |
| 123 EXPECT_EQ(RemoteDevice::BLUETOOTH_CLASSIC, remote_devices_[0].bluetooth_type); | 124 EXPECT_EQ(cryptauth::RemoteDevice::BLUETOOTH_CLASSIC, |
| 125 remote_devices_[0].bluetooth_type); |
| 124 } | 126 } |
| 125 | 127 |
| 126 TEST_F(ProximityAuthRemoteDeviceLoaderTest, LoadOneBLERemoteDevice) { | 128 TEST_F(ProximityAuthRemoteDeviceLoaderTest, LoadOneBLERemoteDevice) { |
| 127 std::vector<cryptauth::ExternalDeviceInfo> unlock_keys(1, | 129 std::vector<cryptauth::ExternalDeviceInfo> unlock_keys(1, |
| 128 CreateUnlockKey("1")); | 130 CreateUnlockKey("1")); |
| 129 unlock_keys[0].set_bluetooth_address(std::string()); | 131 unlock_keys[0].set_bluetooth_address(std::string()); |
| 130 RemoteDeviceLoader loader(unlock_keys, user_private_key_, kUserId, | 132 RemoteDeviceLoader loader(unlock_keys, user_private_key_, kUserId, |
| 131 std::move(secure_message_delegate_), | 133 std::move(secure_message_delegate_), |
| 132 pref_manager_.get()); | 134 pref_manager_.get()); |
| 133 | 135 |
| 134 std::string ble_address = "00:00:00:00:00:00"; | 136 std::string ble_address = "00:00:00:00:00:00"; |
| 135 EXPECT_CALL(*pref_manager_, GetDeviceAddress(testing::_)) | 137 EXPECT_CALL(*pref_manager_, GetDeviceAddress(testing::_)) |
| 136 .WillOnce(testing::Return(ble_address)); | 138 .WillOnce(testing::Return(ble_address)); |
| 137 | 139 |
| 138 std::vector<RemoteDevice> result; | 140 std::vector<cryptauth::RemoteDevice> result; |
| 139 EXPECT_CALL(*this, LoadCompleted()); | 141 EXPECT_CALL(*this, LoadCompleted()); |
| 140 loader.Load( | 142 loader.Load( |
| 141 base::Bind(&ProximityAuthRemoteDeviceLoaderTest::OnRemoteDevicesLoaded, | 143 base::Bind(&ProximityAuthRemoteDeviceLoaderTest::OnRemoteDevicesLoaded, |
| 142 base::Unretained(this))); | 144 base::Unretained(this))); |
| 143 | 145 |
| 144 EXPECT_EQ(1u, remote_devices_.size()); | 146 EXPECT_EQ(1u, remote_devices_.size()); |
| 145 EXPECT_FALSE(remote_devices_[0].persistent_symmetric_key.empty()); | 147 EXPECT_FALSE(remote_devices_[0].persistent_symmetric_key.empty()); |
| 146 EXPECT_EQ(unlock_keys[0].friendly_device_name(), remote_devices_[0].name); | 148 EXPECT_EQ(unlock_keys[0].friendly_device_name(), remote_devices_[0].name); |
| 147 EXPECT_EQ(unlock_keys[0].public_key(), remote_devices_[0].public_key); | 149 EXPECT_EQ(unlock_keys[0].public_key(), remote_devices_[0].public_key); |
| 148 EXPECT_EQ(ble_address, remote_devices_[0].bluetooth_address); | 150 EXPECT_EQ(ble_address, remote_devices_[0].bluetooth_address); |
| 149 EXPECT_EQ(RemoteDevice::BLUETOOTH_LE, remote_devices_[0].bluetooth_type); | 151 EXPECT_EQ(cryptauth::RemoteDevice::BLUETOOTH_LE, |
| 152 remote_devices_[0].bluetooth_type); |
| 150 } | 153 } |
| 151 | 154 |
| 152 TEST_F(ProximityAuthRemoteDeviceLoaderTest, LoadThreeRemoteDevice) { | 155 TEST_F(ProximityAuthRemoteDeviceLoaderTest, LoadThreeRemoteDevice) { |
| 153 std::vector<cryptauth::ExternalDeviceInfo> unlock_keys; | 156 std::vector<cryptauth::ExternalDeviceInfo> unlock_keys; |
| 154 unlock_keys.push_back(CreateUnlockKey("1")); | 157 unlock_keys.push_back(CreateUnlockKey("1")); |
| 155 unlock_keys.push_back(CreateUnlockKey("2")); | 158 unlock_keys.push_back(CreateUnlockKey("2")); |
| 156 unlock_keys.push_back(CreateUnlockKey("3")); | 159 unlock_keys.push_back(CreateUnlockKey("3")); |
| 157 RemoteDeviceLoader loader(unlock_keys, user_private_key_, kUserId, | 160 RemoteDeviceLoader loader(unlock_keys, user_private_key_, kUserId, |
| 158 std::move(secure_message_delegate_), | 161 std::move(secure_message_delegate_), |
| 159 pref_manager_.get()); | 162 pref_manager_.get()); |
| 160 | 163 |
| 161 std::vector<RemoteDevice> result; | 164 std::vector<cryptauth::RemoteDevice> result; |
| 162 EXPECT_CALL(*this, LoadCompleted()); | 165 EXPECT_CALL(*this, LoadCompleted()); |
| 163 loader.Load( | 166 loader.Load( |
| 164 base::Bind(&ProximityAuthRemoteDeviceLoaderTest::OnRemoteDevicesLoaded, | 167 base::Bind(&ProximityAuthRemoteDeviceLoaderTest::OnRemoteDevicesLoaded, |
| 165 base::Unretained(this))); | 168 base::Unretained(this))); |
| 166 | 169 |
| 167 EXPECT_EQ(3u, remote_devices_.size()); | 170 EXPECT_EQ(3u, remote_devices_.size()); |
| 168 for (size_t i = 0; i < 3; ++i) { | 171 for (size_t i = 0; i < 3; ++i) { |
| 169 EXPECT_FALSE(remote_devices_[i].persistent_symmetric_key.empty()); | 172 EXPECT_FALSE(remote_devices_[i].persistent_symmetric_key.empty()); |
| 170 EXPECT_EQ(unlock_keys[i].friendly_device_name(), remote_devices_[i].name); | 173 EXPECT_EQ(unlock_keys[i].friendly_device_name(), remote_devices_[i].name); |
| 171 EXPECT_EQ(unlock_keys[i].public_key(), remote_devices_[i].public_key); | 174 EXPECT_EQ(unlock_keys[i].public_key(), remote_devices_[i].public_key); |
| 172 EXPECT_EQ(unlock_keys[i].bluetooth_address(), | 175 EXPECT_EQ(unlock_keys[i].bluetooth_address(), |
| 173 remote_devices_[i].bluetooth_address); | 176 remote_devices_[i].bluetooth_address); |
| 174 } | 177 } |
| 175 } | 178 } |
| 176 | 179 |
| 177 } // namespace proximity_auth | 180 } // namespace proximity_auth |
| OLD | NEW |