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

Side by Side Diff: components/proximity_auth/ble/bluetooth_low_energy_weave_packet_receiver_unittest.cc

Issue 2561203002: Migrate weave-related classes from proximity_auth/ble to cryptauth/ble. (Closed)
Patch Set: Created 4 years 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
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/proximity_auth/ble/bluetooth_low_energy_weave_packet_receiv er.h"
6
7 #include <algorithm>
8 #include <string>
9
10 #include "base/logging.h"
11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 namespace proximity_auth {
15 namespace weave {
16 namespace {
17
18 typedef BluetoothLowEnergyWeavePacketReceiver::ReceiverType ReceiverType;
19 typedef BluetoothLowEnergyWeavePacketReceiver::State State;
20 typedef BluetoothLowEnergyWeavePacketReceiver::ReceiverError ReceiverError;
21
22 const uint8_t kCloseWithoutError = 0;
23
24 // uWeave Header:
25 // 1--- ---- : type = 1 (control packet)
26 // -000 ---- : counter = 0
27 // ---- 0000 : command = 0 (request)
28 // 1000 0000 = 0x80
29 const uint8_t kControlRequestHeader = 0x80;
30
31 // uWeave Header:
32 // 1--- ---- : type = 1 (control packet)
33 // -000 ---- : counter = 0
34 // ---- 0001 : command = 1 (response)
35 // 1000 0001 = 0x81
36 const uint8_t kControlResponseHeader = 0x81;
37 } // namespace
38
39 class ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest
40 : public testing::Test {
41 protected:
42 ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest() {}
43
44 private:
45 DISALLOW_COPY_AND_ASSIGN(
46 ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest);
47 };
48
49 // TODO(http://crbug.com/651246) this test is flaky.
50 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
51 DISABLED_WellBehavingServerPacketsNoControlDataTest) {
52 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
53 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
54 ReceiverType::SERVER);
55
56 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
57 kByteWeaveVersion, kEmptyUpperByte,
58 kByteWeaveVersion, kEmptyUpperByte,
59 kByteSelectMaxPacketSize};
60 receiver->ReceivePacket(p0);
61 EXPECT_EQ(State::WAITING, receiver->GetState());
62
63 std::vector<uint8_t> p1(kByteDefaultMaxPacketSize, 'a');
64 // uWeave Header:
65 // 0--- ---- : type = 0 (data packet)
66 // -001 ---- : counter = 1
67 // ---- 1--- : first packet = true
68 // ---- -0-- : last packet = false
69 // ---- --00 : defined by uWeave to be 0
70 // 0001 1000 = 0x18
71 p1[0] = 0x18;
72 receiver->ReceivePacket(p1);
73 EXPECT_EQ(State::RECEIVING_DATA, receiver->GetState());
74
75 // uWeave Header:
76 // 0--- ---- : type = 0 (data packet)
77 // -010 ---- : counter = 2
78 // ---- 0--- : first packet = false
79 // ---- -1-- : last packet = true
80 // ---- --00 : defined by uWeave to be 0
81 // 0010 0100 = 0x24
82 std::vector<uint8_t> p2{0x24, 'c', 'd'};
83 receiver->ReceivePacket(p2);
84 EXPECT_EQ(State::DATA_READY, receiver->GetState());
85 EXPECT_EQ("aaaaaaaaaaaaaaaaaaacd", receiver->GetDataMessage());
86
87 // uWeave Header:
88 // 0--- ---- : type = 0 (data packet)
89 // -011 ---- : counter = 3
90 // ---- 1--- : first packet = true
91 // ---- -1-- : last packet = true
92 // ---- --00 : defined by uWeave to be 0
93 // 0011 1100 = 0x3C
94 std::vector<uint8_t> p3{0x3C, 'g', 'o', 'o', 'g', 'l', 'e'};
95 receiver->ReceivePacket(p3);
96 EXPECT_EQ(State::DATA_READY, receiver->GetState());
97 EXPECT_EQ("google", receiver->GetDataMessage());
98
99 // uWeave Header:
100 // 1--- ---- : type = 1 (control packet)
101 // -100 ---- : counter = 4
102 // ---- 0010 : command = 2 (close)
103 // 1100 0010 = 0xC2
104 // 0x80 is the hex value for APPLICATION_ERROR
105 std::vector<uint8_t> p4{0xC2, kEmptyUpperByte, 0x80};
106 receiver->ReceivePacket(p4);
107 EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
108 EXPECT_EQ(ReasonForClose::APPLICATION_ERROR, receiver->GetReasonForClose());
109 }
110
111 // TODO(http://crbug.com/651246) this test is flaky.
112 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
113 DISABLED_WellBehavingServerPacketsWithFullControlDataTest) {
114 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
115 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
116 ReceiverType::SERVER);
117
118 std::vector<uint8_t> p0{kControlRequestHeader,
119 kEmptyUpperByte,
120 kByteWeaveVersion,
121 kEmptyUpperByte,
122 kByteWeaveVersion,
123 kEmptyUpperByte,
124 kByteSelectMaxPacketSize,
125 'a',
126 'b',
127 'c',
128 'd',
129 'e',
130 'f',
131 'g',
132 'h',
133 'i',
134 'j',
135 'k',
136 'l',
137 'm'};
138
139 receiver->ReceivePacket(p0);
140 EXPECT_EQ(State::DATA_READY, receiver->GetState());
141 EXPECT_EQ("abcdefghijklm", receiver->GetDataMessage());
142
143 // uWeave Header:
144 // 0--- ---- : type = 0 (data packet)
145 // -001 ---- : counter = 1
146 // ---- 1--- : first packet = true
147 // ---- -0-- : last packet = false
148 // ---- --00 : defined by uWeave to be 0
149 // 0001 1000 = 0x18
150 std::vector<uint8_t> p1(kByteDefaultMaxPacketSize, 'o');
151 p1[0] = 0x18;
152 receiver->ReceivePacket(p1);
153 EXPECT_EQ(State::RECEIVING_DATA, receiver->GetState());
154
155 // uWeave Header:
156 // 0--- ---- : type = 0 (data packet)
157 // -010 ---- : counter = 2
158 // ---- 0--- : first packet = false
159 // ---- -1-- : last packet = true
160 // ---- --00 : defined by uWeave to be 0
161 // 0010 0100 = 0x24
162 std::vector<uint8_t> p2{0x24, 'p', 'q'};
163 receiver->ReceivePacket(p2);
164 EXPECT_EQ(State::DATA_READY, receiver->GetState());
165 EXPECT_EQ("ooooooooooooooooooopq", receiver->GetDataMessage());
166
167 // uWeave Header:
168 // 1--- ---- : type = 1 (control packet)
169 // -011 ---- : counter = 3
170 // ---- 0010 : command = 2 (close)
171 // 1011 0010 = 0xB2
172 std::vector<uint8_t> p3{0xB2, kEmptyUpperByte, kCloseWithoutError};
173 receiver->ReceivePacket(p3);
174 EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
175 EXPECT_EQ(ReasonForClose::CLOSE_WITHOUT_ERROR, receiver->GetReasonForClose());
176 }
177
178 // TODO(http://crbug.com/651246) this test is flaky.
179 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
180 DISABLED_WellBehavingServerPacketsWithSomeControlDataTest) {
181 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
182 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
183 ReceiverType::SERVER);
184
185 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
186 kByteWeaveVersion, kEmptyUpperByte,
187 kByteWeaveVersion, kEmptyUpperByte,
188 kByteSelectMaxPacketSize, 'a'};
189
190 receiver->ReceivePacket(p0);
191 EXPECT_EQ(State::DATA_READY, receiver->GetState());
192 EXPECT_EQ("a", receiver->GetDataMessage());
193
194 // uWeave Header:
195 // 0--- ---- : type = 0 (data packet)
196 // -001 ---- : counter = 1
197 // ---- 1--- : first packet = true
198 // ---- -0-- : last packet = false
199 // ---- --00 : defined by uWeave to be 0
200 // 0001 1000 = 0x18
201 std::vector<uint8_t> p1(kByteDefaultMaxPacketSize, 'o');
202 p1[0] = 0x18;
203 receiver->ReceivePacket(p1);
204 EXPECT_EQ(State::RECEIVING_DATA, receiver->GetState());
205
206 // uWeave Header:
207 // 0--- ---- : type = 0 (data packet)
208 // -010 ---- : counter = 2
209 // ---- 0--- : first packet = false
210 // ---- -1-- : last packet = true
211 // ---- --00 : defined by uWeave to be 0
212 // 0010 0100 = 0x24
213 std::vector<uint8_t> p2{0x24, 'p', 'q'};
214 receiver->ReceivePacket(p2);
215 EXPECT_EQ(State::DATA_READY, receiver->GetState());
216 EXPECT_EQ("ooooooooooooooooooopq", receiver->GetDataMessage());
217
218 // uWeave Header:
219 // 1--- ---- : type = 1 (control packet)
220 // -011 ---- : counter = 3
221 // ---- 0010 : command = 2 (close)
222 // 1011 0010 = 0xB2
223 std::vector<uint8_t> p3{0xB2, kEmptyUpperByte, kCloseWithoutError};
224 receiver->ReceivePacket(p3);
225 EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
226 EXPECT_EQ(ReasonForClose::CLOSE_WITHOUT_ERROR, receiver->GetReasonForClose());
227 }
228
229 // TODO(http://crbug.com/651246) this test is flaky.
230 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
231 DISABLED_WellBehavingClientPacketsNoControlDataTest) {
232 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
233 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
234 ReceiverType::CLIENT);
235
236 const uint8_t kSelectedPacketSize = 30;
237 std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
238 kByteWeaveVersion, kEmptyUpperByte,
239 kSelectedPacketSize};
240 receiver->ReceivePacket(p0);
241 EXPECT_EQ(State::WAITING, receiver->GetState());
242 EXPECT_EQ(kSelectedPacketSize, receiver->GetMaxPacketSize());
243
244 std::vector<uint8_t> p1(kSelectedPacketSize, 'o');
245 // uWeave Header:
246 // 0--- ---- : type = 0 (data packet)
247 // -001 ---- : counter = 1
248 // ---- 1--- : first packet = true
249 // ---- -1-- : last packet = true
250 // ---- --00 : defined by uWeave to be 0
251 // 0001 1100 = 0x1C
252 p1[0] = 0x1C;
253 receiver->ReceivePacket(p1);
254 EXPECT_EQ(State::DATA_READY, receiver->GetState());
255 EXPECT_EQ("ooooooooooooooooooooooooooooo", receiver->GetDataMessage());
256
257 const uint8_t kApplicationError = 0x80;
258 // uWeave Header:
259 // 1--- ---- : type = 1 (control packet)
260 // -010 ---- : counter = 2
261 // ---- 0010 : command = 2 (close)
262 // 1010 0010 = 0xA2
263 std::vector<uint8_t> p2{0xA2, kEmptyUpperByte, kApplicationError};
264 receiver->ReceivePacket(p2);
265 EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
266 EXPECT_EQ(ReasonForClose::APPLICATION_ERROR, receiver->GetReasonForClose());
267 }
268
269 // TODO(http://crbug.com/651246) this test is flaky.
270 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
271 DISABLED_WellBehavingClientPacketsWithFullControlDataTest) {
272 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
273 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
274 ReceiverType::CLIENT);
275
276 std::vector<uint8_t> p0{kControlResponseHeader,
277 kEmptyUpperByte,
278 kByteWeaveVersion,
279 kEmptyUpperByte,
280 kByteDefaultMaxPacketSize,
281 'a',
282 'b',
283 'c',
284 'd',
285 'e',
286 'f',
287 'g',
288 'h',
289 'i',
290 'j',
291 'k',
292 'l',
293 'm',
294 'n',
295 'o'};
296 receiver->ReceivePacket(p0);
297 EXPECT_EQ(State::DATA_READY, receiver->GetState());
298 EXPECT_EQ("abcdefghijklmno", receiver->GetDataMessage());
299
300 // uWeave Header:
301 // 0--- ---- : type = 0 (data packet)
302 // -001 ---- : counter = 1
303 // ---- 1--- : first packet = true
304 // ---- -1-- : last packet = true
305 // ---- --00 : defined by uWeave to be 0
306 // 0001 1100 = 0x1C
307 std::vector<uint8_t> p1{0x1C, 'g', 'o', 'o', 'g', 'l', 'e'};
308 receiver->ReceivePacket(p1);
309 EXPECT_EQ(State::DATA_READY, receiver->GetState());
310 EXPECT_EQ("google", receiver->GetDataMessage());
311
312 // uWeave Header:
313 // 1--- ---- : type = 1 (control packet)
314 // -010 ---- : counter = 2
315 // ---- 0010 : command = 2 (close)
316 // 1010 0010 = 0xA2
317 std::vector<uint8_t> p2{0xA2, kEmptyUpperByte, kCloseWithoutError};
318 receiver->ReceivePacket(p2);
319 EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
320 EXPECT_EQ(ReasonForClose::CLOSE_WITHOUT_ERROR, receiver->GetReasonForClose());
321 }
322
323 // TODO(http://crbug.com/651246) this test is flaky.
324 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
325 DISABLED_WellBehavingClientPacketsWithSomeControlDataTest) {
326 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
327 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
328 ReceiverType::CLIENT);
329
330 std::vector<uint8_t> p0{kControlResponseHeader,
331 kEmptyUpperByte,
332 kByteWeaveVersion,
333 kEmptyUpperByte,
334 kByteDefaultMaxPacketSize,
335 'a',
336 'b',
337 'c'};
338 receiver->ReceivePacket(p0);
339 EXPECT_EQ(State::DATA_READY, receiver->GetState());
340 EXPECT_EQ("abc", receiver->GetDataMessage());
341
342 // uWeave Header:
343 // 0--- ---- : type = 0 (data packet)
344 // -001 ---- : counter = 1
345 // ---- 1--- : first packet = true
346 // ---- -1-- : last packet = true
347 // ---- --00 : defined by uWeave to be 0
348 // 0001 1100 = 0x1C
349 std::vector<uint8_t> p1{0x1C, 'g', 'o', 'o', 'g', 'l', 'e'};
350 receiver->ReceivePacket(p1);
351 EXPECT_EQ(State::DATA_READY, receiver->GetState());
352 EXPECT_EQ("google", receiver->GetDataMessage());
353
354 // uWeave Header:
355 // 1--- ---- : type = 1 (control packet)
356 // -010 ---- : counter = 2
357 // ---- 0010 : command = 2 (close)
358 // 1010 0010 = 0xA2
359 std::vector<uint8_t> p2{0xA2, kEmptyUpperByte, kCloseWithoutError};
360 receiver->ReceivePacket(p2);
361 EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
362 EXPECT_EQ(ReasonForClose::CLOSE_WITHOUT_ERROR, receiver->GetReasonForClose());
363 }
364
365 // TODO(http://crbug.com/651246) this test is flaky.
366 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
367 DISABLED_LegacyCloseWithoutReasonTest) {
368 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
369 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
370 ReceiverType::SERVER);
371
372 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
373 kByteWeaveVersion, kEmptyUpperByte,
374 kByteWeaveVersion, kEmptyUpperByte,
375 kByteSelectMaxPacketSize};
376 receiver->ReceivePacket(p0);
377 EXPECT_EQ(State::WAITING, receiver->GetState());
378
379 // uWeave Header:
380 // 1--- ---- : type = 1 (control packet)
381 // -001 ---- : counter = 1
382 // ---- 0010 : command = 2 (close)
383 // 1001 0010 = 0x92
384 std::vector<uint8_t> p1{0x92};
385 receiver->ReceivePacket(p1);
386 EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
387 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonForClose());
388 }
389
390 // TODO(http://crbug.com/651246) this test is flaky.
391 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
392 DISABLED_OneBytePacketTest) {
393 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
394 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
395 ReceiverType::CLIENT);
396
397 std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
398 kByteWeaveVersion, kEmptyUpperByte,
399 kByteDefaultMaxPacketSize};
400 receiver->ReceivePacket(p0);
401 EXPECT_EQ(State::WAITING, receiver->GetState());
402
403 // uWeave Header:
404 // 0--- ---- : type = 0 (data packet)
405 // -001 ---- : counter = 1
406 // ---- 1--- : first packet = true
407 // ---- -1-- : last packet = true
408 // ---- --00 : defined by uWeave to be 0
409 // 0001 1100 = 0x1C
410 std::vector<uint8_t> p1{0x1C};
411 receiver->ReceivePacket(p1);
412 EXPECT_EQ(State::DATA_READY, receiver->GetState());
413 EXPECT_EQ("", receiver->GetDataMessage());
414 }
415
416 // TODO(http://crbug.com/651246) this test is flaky.
417 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
418 DISABLED_EmptyPacketTest) {
419 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
420 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
421 ReceiverType::CLIENT);
422
423 std::vector<uint8_t> p0;
424 receiver->ReceivePacket(p0);
425 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
426 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
427 EXPECT_EQ(ReceiverError::EMPTY_PACKET, receiver->GetReceiverError());
428 }
429
430 // TODO(http://crbug.com/651246) this test is flaky.
431 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
432 DISABLED_ServerReceivingConnectionResponseTest) {
433 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
434 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
435 ReceiverType::SERVER);
436 std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
437 kByteWeaveVersion, kEmptyUpperByte,
438 kByteDefaultMaxPacketSize};
439 receiver->ReceivePacket(p0);
440 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
441 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
442 EXPECT_EQ(ReceiverError::CLIENT_RECEIVED_CONNECTION_REQUEST,
443 receiver->GetReceiverError());
444 }
445
446 // TODO(http://crbug.com/651246) this test is flaky.
447 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
448 DISABLED_ClientReceivingConnectionRequestTest) {
449 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
450 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
451 ReceiverType::CLIENT);
452 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
453 kByteWeaveVersion, kEmptyUpperByte,
454 kByteWeaveVersion, kEmptyUpperByte,
455 kByteSelectMaxPacketSize};
456 receiver->ReceivePacket(p0);
457 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
458 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
459 EXPECT_EQ(ReceiverError::SERVER_RECEIVED_CONNECTION_RESPONSE,
460 receiver->GetReceiverError());
461 }
462
463 // TODO(http://crbug.com/651246) this test is flaky.
464 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
465 DISABLED_ReceiveConnectionCloseInConnecting) {
466 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
467 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
468 ReceiverType::SERVER);
469
470 // uWeave Header:
471 // 1--- ---- : type = 1 (control packet)
472 // -000 ---- : counter = 0
473 // ---- 0010 : command = 2 (close)
474 // 1000 0010 = 0x82
475 std::vector<uint8_t> p0{0x82, kEmptyUpperByte, kCloseWithoutError};
476 receiver->ReceivePacket(p0);
477 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
478 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
479 EXPECT_EQ(ReceiverError::RECEIVED_CONNECTION_CLOSE_IN_CONNECTING,
480 receiver->GetReceiverError());
481 }
482
483 // TODO(http://crbug.com/651246) this test is flaky.
484 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
485 DISABLED_ReceiveDataInConnecting) {
486 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
487 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
488 ReceiverType::SERVER);
489
490 // uWeave Header:
491 // 0--- ---- : type = 0 (data packet)
492 // -000 ---- : counter = 0
493 // ---- 1--- : first packet = true
494 // ---- -0-- : last packet = false
495 // ---- --00 : defined by uWeave to be 0
496 // 0000 1000 = 0x08
497 std::vector<uint8_t> p3{0x08, 'a', 'b', 'c', 'd'};
498 receiver->ReceivePacket(p3);
499 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
500 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
501 EXPECT_EQ(ReceiverError::RECEIVED_DATA_IN_CONNECTING,
502 receiver->GetReceiverError());
503 }
504
505 // TODO(http://crbug.com/651246) this test is flaky.
506 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
507 DISABLED_ConnectionRequestTooSmallTest) {
508 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
509 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
510 ReceiverType::SERVER);
511 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
512 kByteWeaveVersion, kEmptyUpperByte,
513 kByteWeaveVersion, kEmptyUpperByte};
514 receiver->ReceivePacket(p0);
515 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
516 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
517 EXPECT_EQ(ReceiverError::INVALID_CONNECTION_REQUEST_SIZE,
518 receiver->GetReceiverError());
519 }
520
521 // TODO(http://crbug.com/651246) this test is flaky.
522 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
523 DISABLED_ConnectionRequestTooLargeTest) {
524 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
525 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
526 ReceiverType::SERVER);
527
528 std::vector<uint8_t> p0(kByteDefaultMaxPacketSize + 1, 0);
529 p0[0] = kControlRequestHeader;
530 p0[2] = kByteWeaveVersion;
531 p0[4] = kByteWeaveVersion;
532 receiver->ReceivePacket(p0);
533 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
534 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
535 EXPECT_EQ(ReceiverError::INVALID_CONNECTION_REQUEST_SIZE,
536 receiver->GetReceiverError());
537 }
538
539 // TODO(http://crbug.com/651246) this test is flaky.
540 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
541 DISABLED_ConnectionResponseTooSmallTest) {
542 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
543 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
544 ReceiverType::CLIENT);
545
546 std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
547 kByteWeaveVersion, kEmptyUpperByte};
548 receiver->ReceivePacket(p0);
549 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
550 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
551 EXPECT_EQ(ReceiverError::INVALID_CONNECTION_RESPONSE_SIZE,
552 receiver->GetReceiverError());
553 }
554
555 // TODO(http://crbug.com/651246) this test is flaky.
556 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
557 DISABLED_ConnectionResponseTooLargeTest) {
558 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
559 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
560 ReceiverType::CLIENT);
561
562 std::vector<uint8_t> p0(kByteDefaultMaxPacketSize + 1, 0);
563 p0[0] = kControlResponseHeader;
564 p0[2] = kByteWeaveVersion;
565 p0[4] = kByteDefaultMaxPacketSize;
566 receiver->ReceivePacket(p0);
567 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
568 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
569 EXPECT_EQ(ReceiverError::INVALID_CONNECTION_RESPONSE_SIZE,
570 receiver->GetReceiverError());
571 }
572
573 // TODO(http://crbug.com/651246) this test is flaky.
574 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
575 DISABLED_ConnectionCloseTooLargeTest) {
576 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
577 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
578 ReceiverType::SERVER);
579
580 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
581 kByteWeaveVersion, kEmptyUpperByte,
582 kByteWeaveVersion, kEmptyUpperByte,
583 kByteSelectMaxPacketSize};
584 receiver->ReceivePacket(p0);
585 EXPECT_EQ(State::WAITING, receiver->GetState());
586
587 // uWeave Header:
588 // 1--- ---- : type = 1 (control packet)
589 // -001 ---- : counter = 1
590 // ---- 0010 : command = 2 (close)
591 // 1001 0010 = 0x92
592 std::vector<uint8_t> p1{0x92, kEmptyUpperByte, kCloseWithoutError, 'a'};
593 receiver->ReceivePacket(p1);
594 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
595 EXPECT_EQ(ReceiverError::INVALID_CONNECTION_CLOSE_SIZE,
596 receiver->GetReceiverError());
597 }
598
599 // TODO(http://crbug.com/651246) this test is flaky.
600 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
601 DISABLED_DataPacketTooLargeTest) {
602 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
603 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
604 ReceiverType::SERVER);
605
606 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
607 kByteWeaveVersion, kEmptyUpperByte,
608 kByteWeaveVersion, kEmptyUpperByte,
609 kByteSelectMaxPacketSize};
610 receiver->ReceivePacket(p0);
611 EXPECT_EQ(State::WAITING, receiver->GetState());
612
613 // uWeave Header:
614 // 0--- ---- : type = 0 (data packet)
615 // -001 ---- : counter = 1
616 // ---- 1--- : first packet = true
617 // ---- -1-- : last packet = true
618 // ---- --00 : defined by uWeave to be 0
619 // 0001 1100 = 0x1C
620 std::vector<uint8_t> p1(kByteDefaultMaxPacketSize + 1, 'a');
621 p1[0] = 0x1C;
622 receiver->ReceivePacket(p1);
623 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
624 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
625 EXPECT_EQ(ReceiverError::INVALID_DATA_PACKET_SIZE,
626 receiver->GetReceiverError());
627 }
628
629 // TODO(http://crbug.com/651246) this test is flaky.
630 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
631 DISABLED_FirstPacketNoFirstNorLastBitTest) {
632 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
633 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
634 ReceiverType::SERVER);
635
636 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
637 kByteWeaveVersion, kEmptyUpperByte,
638 kByteWeaveVersion, kEmptyUpperByte,
639 kByteSelectMaxPacketSize};
640 receiver->ReceivePacket(p0);
641 EXPECT_EQ(State::WAITING, receiver->GetState());
642
643 // uWeave Header:
644 // 0--- ---- : type = 0 (data packet)
645 // -001 ---- : counter = 1
646 // ---- 0--- : first packet = false
647 // ---- -0-- : last packet = false
648 // ---- --00 : defined by uWeave to be 0
649 // 0001 0000 = 0x10
650 std::vector<uint8_t> p1{0x10};
651 receiver->ReceivePacket(p1);
652 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
653 EXPECT_EQ(ReasonForClose::RECEIVED_PACKET_OUT_OF_SEQUENCE,
654 receiver->GetReasonToClose());
655 EXPECT_EQ(ReceiverError::INCORRECT_DATA_FIRST_BIT,
656 receiver->GetReceiverError());
657 }
658
659 // TODO(http://crbug.com/651246) this test is flaky.
660 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
661 DISABLED_FirstPacketNoFirstYesLastBitTest) {
662 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
663 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
664 ReceiverType::SERVER);
665
666 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
667 kByteWeaveVersion, kEmptyUpperByte,
668 kByteWeaveVersion, kEmptyUpperByte,
669 kByteSelectMaxPacketSize};
670 receiver->ReceivePacket(p0);
671 EXPECT_EQ(State::WAITING, receiver->GetState());
672
673 // uWeave Header:
674 // 0--- ---- : type = 0 (data packet)
675 // -001 ---- : counter = 1
676 // ---- 0--- : first packet = false
677 // ---- -1-- : last packet = true
678 // ---- --00 : defined by uWeave to be 0
679 // 0001 0100 = 0x14
680 std::vector<uint8_t> p1{0x14};
681 receiver->ReceivePacket(p1);
682 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
683 EXPECT_EQ(ReasonForClose::RECEIVED_PACKET_OUT_OF_SEQUENCE,
684 receiver->GetReasonToClose());
685 EXPECT_EQ(ReceiverError::INCORRECT_DATA_FIRST_BIT,
686 receiver->GetReceiverError());
687 }
688
689 // TODO(http://crbug.com/651246) this test is flaky.
690 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
691 DISABLED_NonFirstPacketYesFirstBitTest) {
692 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
693 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
694 ReceiverType::SERVER);
695
696 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
697 kByteWeaveVersion, kEmptyUpperByte,
698 kByteWeaveVersion, kEmptyUpperByte,
699 kByteSelectMaxPacketSize};
700 receiver->ReceivePacket(p0);
701 EXPECT_EQ(State::WAITING, receiver->GetState());
702
703 // uWeave Header:
704 // 0--- ---- : type = 0 (data packet)
705 // -001 ---- : counter = 1
706 // ---- 1--- : first packet = true
707 // ---- -0-- : last packet = false
708 // ---- --00 : defined by uWeave to be 0
709 // 0001 1000 = 0x18
710 std::vector<uint8_t> p1{0x18};
711 receiver->ReceivePacket(p1);
712 EXPECT_EQ(State::RECEIVING_DATA, receiver->GetState());
713
714 // uWeave Header:
715 // 0--- ---- : type = 0 (data packet)
716 // -010 ---- : counter = 2
717 // ---- 1--- : first packet = true
718 // ---- -0-- : last packet = false
719 // ---- --00 : defined by uWeave to be 0
720 // 0010 1000 = 0x28
721 std::vector<uint8_t> p2{0x28};
722 receiver->ReceivePacket(p2);
723 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
724 EXPECT_EQ(ReasonForClose::RECEIVED_PACKET_OUT_OF_SEQUENCE,
725 receiver->GetReasonToClose());
726 EXPECT_EQ(ReceiverError::INCORRECT_DATA_FIRST_BIT,
727 receiver->GetReceiverError());
728 }
729
730 // TODO(http://crbug.com/651246) this test is flaky.
731 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
732 DISABLED_OutOfOrderPacketTest) {
733 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
734 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
735 ReceiverType::SERVER);
736
737 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
738 kByteWeaveVersion, kEmptyUpperByte,
739 kByteWeaveVersion, kEmptyUpperByte,
740 kByteSelectMaxPacketSize};
741 receiver->ReceivePacket(p0);
742 EXPECT_EQ(State::WAITING, receiver->GetState());
743
744 // uWeave Header:
745 // 0--- ---- : type = 0 (data packet)
746 // -010 ---- : counter = 2
747 // ---- 0--- : first packet = false
748 // ---- -0-- : last packet = false
749 // ---- --00 : defined by uWeave to be 0
750 // 0010 0000 = 0x20
751 std::vector<uint8_t> p1{0x20};
752 receiver->ReceivePacket(p1);
753 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
754 EXPECT_EQ(ReasonForClose::RECEIVED_PACKET_OUT_OF_SEQUENCE,
755 receiver->GetReasonToClose());
756 EXPECT_EQ(ReceiverError::PACKET_OUT_OF_SEQUENCE,
757 receiver->GetReceiverError());
758 }
759
760 // TODO(http://crbug.com/651246) this test is flaky.
761 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
762 DISABLED_InvalidVersionInConnectionRequestTest) {
763 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
764 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
765 ReceiverType::SERVER);
766
767 const uint8_t kWrongVersion = 2;
768 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
769 kWrongVersion, kEmptyUpperByte,
770 kByteWeaveVersion, kEmptyUpperByte,
771 kByteSelectMaxPacketSize};
772 receiver->ReceivePacket(p0);
773 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
774 EXPECT_EQ(ReasonForClose::NO_COMMON_VERSION_SUPPORTED,
775 receiver->GetReasonToClose());
776 EXPECT_EQ(ReceiverError::NOT_SUPPORTED_REQUESTED_VERSION,
777 receiver->GetReceiverError());
778 }
779
780 // TODO(http://crbug.com/651246) this test is flaky.
781 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
782 DISABLED_InvalidMaxPacketSizeInConnectionRequestTest) {
783 const uint8_t kSmallMaxPacketSize = 19;
784
785 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
786 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
787 ReceiverType::SERVER);
788
789 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
790 kByteWeaveVersion, kEmptyUpperByte,
791 kByteWeaveVersion, kEmptyUpperByte,
792 kSmallMaxPacketSize};
793 receiver->ReceivePacket(p0);
794 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
795 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
796 EXPECT_EQ(ReceiverError::INVALID_REQUESTED_MAX_PACKET_SIZE,
797 receiver->GetReceiverError());
798 }
799
800 // TODO(http://crbug.com/651246) this test is flaky.
801 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
802 DISABLED_InvalidSelectedVersionInConnectionResponseTest) {
803 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
804 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
805 ReceiverType::CLIENT);
806
807 std::vector<uint8_t> p0{kControlResponseHeader, kByteWeaveVersion,
808 kEmptyUpperByte, kEmptyUpperByte,
809 kByteDefaultMaxPacketSize};
810 receiver->ReceivePacket(p0);
811 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
812 EXPECT_EQ(ReasonForClose::NO_COMMON_VERSION_SUPPORTED,
813 receiver->GetReasonToClose());
814 EXPECT_EQ(ReceiverError::NOT_SUPPORTED_SELECTED_VERSION,
815 receiver->GetReceiverError());
816 }
817
818 // TODO(http://crbug.com/651246) this test is flaky.
819 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
820 DISABLED_InvalidSelectedMaxPacketSizeInConnectionResponseTest) {
821 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
822 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
823 ReceiverType::CLIENT);
824
825 const uint8_t kSmallMaxPacketSize = 19;
826 std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
827 kByteWeaveVersion, kEmptyUpperByte,
828 kSmallMaxPacketSize};
829 receiver->ReceivePacket(p0);
830 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
831 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
832 EXPECT_EQ(ReceiverError::INVALID_SELECTED_MAX_PACKET_SIZE,
833 receiver->GetReceiverError());
834 }
835
836 // TODO(http://crbug.com/651246) this test is flaky.
837 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
838 DISABLED_UnrecognizedReasonForCloseInConnectionCloseTest) {
839 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
840 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
841 ReceiverType::CLIENT);
842
843 std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
844 kByteWeaveVersion, kEmptyUpperByte,
845 kByteDefaultMaxPacketSize};
846 receiver->ReceivePacket(p0);
847 EXPECT_EQ(State::WAITING, receiver->GetState());
848
849 const uint8_t kInvalidReasonForClose = 5;
850 // uWeave Header:
851 // 1--- ---- : type = 1 (control packet)
852 // -001 ---- : counter = 1
853 // ---- 0010 : command = 2 (close)
854 // 1001 0010 = 0x92
855 std::vector<uint8_t> p1{0x92, kEmptyUpperByte, kInvalidReasonForClose};
856 receiver->ReceivePacket(p1);
857 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
858 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
859 EXPECT_EQ(ReceiverError::UNRECOGNIZED_REASON_FOR_CLOSE,
860 receiver->GetReceiverError());
861 }
862
863 // TODO(http://crbug.com/651246) this test is flaky.
864 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
865 DISABLED_UnrecognizedControlCommandBitTwoTest) {
866 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
867 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
868 ReceiverType::SERVER);
869
870 // uWeave Header:
871 // 1--- ---- : type = 1 (control packet)
872 // -000 ---- : counter = 0
873 // ---- 0100 : command = 4 (INVALID)
874 // 1000 0100 = 0x84
875 std::vector<uint8_t> p0{0x84,
876 kEmptyUpperByte,
877 kByteWeaveVersion,
878 kEmptyUpperByte,
879 kByteWeaveVersion,
880 kEmptyUpperByte,
881 kByteSelectMaxPacketSize};
882 receiver->ReceivePacket(p0);
883 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
884 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
885 EXPECT_EQ(ReceiverError::UNRECOGNIZED_CONTROL_COMMAND,
886 receiver->GetReceiverError());
887 }
888
889 // TODO(http://crbug.com/651246) this test is flaky.
890 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
891 DISABLED_InvalidControlCommandBitThreeTest) {
892 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
893 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
894 ReceiverType::CLIENT);
895
896 // uWeave Header:
897 // 1--- ---- : type = 1 (control packet)
898 // -000 ---- : counter = 0
899 // ---- 1000 : command = 8 (INVALID)
900 // 1000 1000 = 0x88
901 std::vector<uint8_t> p0{0x88, kEmptyUpperByte, kByteWeaveVersion,
902 kEmptyUpperByte, kByteDefaultMaxPacketSize};
903 receiver->ReceivePacket(p0);
904 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
905 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
906 EXPECT_EQ(ReceiverError::UNRECOGNIZED_CONTROL_COMMAND,
907 receiver->GetReceiverError());
908 }
909
910 // TODO(http://crbug.com/651246) this test is flaky.
911 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
912 DISABLED_InvalidBitOneInDataPacketHeaderTest) {
913 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
914 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
915 ReceiverType::CLIENT);
916
917 std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
918 kByteWeaveVersion, kEmptyUpperByte,
919 kByteDefaultMaxPacketSize};
920 receiver->ReceivePacket(p0);
921 EXPECT_EQ(State::WAITING, receiver->GetState());
922
923 // uWeave Header:
924 // 0--- ---- : type = 0 (data packet)
925 // -001 ---- : counter = 1
926 // ---- 1--- : first packet = true
927 // ---- -1-- : last packet = true
928 // ---- --10 : defined by uWeave to be 0, but bit 1 is not
929 // 0001 1110 = 0x1E
930 std::vector<uint8_t> p1{0x1E, 'a'};
931 receiver->ReceivePacket(p1);
932 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
933 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
934 EXPECT_EQ(ReceiverError::DATA_HEADER_LOW_BITS_NOT_CLEARED,
935 receiver->GetReceiverError());
936 }
937
938 // TODO(http://crbug.com/651246) this test is flaky.
939 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
940 DISABLED_InvalidBitZeroInDataPacketHeaderTest) {
941 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
942 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
943 ReceiverType::CLIENT);
944
945 std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
946 kByteWeaveVersion, kEmptyUpperByte,
947 kByteDefaultMaxPacketSize};
948 receiver->ReceivePacket(p0);
949 EXPECT_EQ(State::WAITING, receiver->GetState());
950
951 // uWeave Header:
952 // 0--- ---- : type = 0 (data packet)
953 // -001 ---- : counter = 1
954 // ---- 1--- : first packet = true
955 // ---- -1-- : last packet = true
956 // ---- --01 : defined by uWeave to be 0, but bit 0 is not
957 // 0001 1101 = 0x1D
958 std::vector<uint8_t> p1{0x1D, 'a'};
959 receiver->ReceivePacket(p1);
960 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
961 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
962 EXPECT_EQ(ReceiverError::DATA_HEADER_LOW_BITS_NOT_CLEARED,
963 receiver->GetReceiverError());
964 }
965
966 // TODO(http://crbug.com/651246) this test is flaky.
967 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
968 DISABLED_ReceivedPacketInErrorState) {
969 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
970 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
971 ReceiverType::CLIENT);
972
973 std::vector<uint8_t> p0;
974 receiver->ReceivePacket(p0);
975 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
976 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
977
978 std::vector<uint8_t> p1{kControlResponseHeader, kEmptyUpperByte,
979 kByteWeaveVersion, kEmptyUpperByte,
980 kByteSelectMaxPacketSize};
981 receiver->ReceivePacket(p1);
982 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
983 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
984 EXPECT_EQ(ReceiverError::EMPTY_PACKET, receiver->GetReceiverError());
985 }
986
987 // TODO(http://crbug.com/651246) this test is flaky.
988 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
989 DISABLED_ReceivedPacketInConnectionClosedStateTest) {
990 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
991 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
992 ReceiverType::SERVER);
993
994 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
995 kByteWeaveVersion, kEmptyUpperByte,
996 kByteWeaveVersion, kEmptyUpperByte,
997 kByteSelectMaxPacketSize};
998 receiver->ReceivePacket(p0);
999 EXPECT_EQ(State::WAITING, receiver->GetState());
1000
1001 // uWeave Header:
1002 // 1--- ---- : type = 1 (control packet)
1003 // -001 ---- : counter = 1
1004 // ---- 0010 : command = 2 (close)
1005 // 1001 0010 = 0x92
1006 std::vector<uint8_t> p1{0x92, kEmptyUpperByte, kCloseWithoutError};
1007 receiver->ReceivePacket(p1);
1008 EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
1009 EXPECT_EQ(ReasonForClose::CLOSE_WITHOUT_ERROR, receiver->GetReasonForClose());
1010
1011 // uWeave Header:
1012 // 0--- ---- : type = 0 (data packet)
1013 // -010 ---- : counter = 2
1014 // ---- 1--- : first packet = true
1015 // ---- -1-- : last packet = true
1016 // ---- --00 : defined by uWeave to be 0
1017 // 0010 1100 = 0x2C
1018 std::vector<uint8_t> p2{0x2C, 'a'};
1019 receiver->ReceivePacket(p2);
1020 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
1021 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
1022 EXPECT_EQ(ReceiverError::RECEIVED_PACKET_IN_CONNECTION_CLOSED,
1023 receiver->GetReceiverError());
1024 }
1025
1026 // TODO(http://crbug.com/651246) this test is flaky.
1027 TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
1028 DISABLED_MultipleControlPacketTest) {
1029 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
1030 BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
1031 ReceiverType::SERVER);
1032
1033 std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
1034 kByteWeaveVersion, kEmptyUpperByte,
1035 kByteWeaveVersion, kEmptyUpperByte,
1036 kByteSelectMaxPacketSize};
1037 receiver->ReceivePacket(p0);
1038 EXPECT_EQ(State::WAITING, receiver->GetState());
1039
1040 // uWeave Header:
1041 // 1--- ---- : type = 1 (control packet)
1042 // -001 ---- : counter = 1
1043 // ---- 0000 : command = 0 (request)
1044 // 1001 0000 = 0x90
1045 std::vector<uint8_t> p1{0x90,
1046 kEmptyUpperByte,
1047 kByteWeaveVersion,
1048 kEmptyUpperByte,
1049 kByteWeaveVersion,
1050 kEmptyUpperByte,
1051 kByteSelectMaxPacketSize};
1052 receiver->ReceivePacket(p1);
1053 EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
1054 EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
1055 EXPECT_EQ(ReceiverError::INVALID_CONTROL_COMMAND_IN_DATA_TRANSACTION,
1056 receiver->GetReceiverError());
1057 }
1058
1059 } // namespace weave
1060
1061 } // namespace proximity_auth
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698