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 |