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

Unified 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: Rebase. 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 side-by-side diff with in-line comments
Download patch
Index: components/proximity_auth/ble/bluetooth_low_energy_weave_packet_receiver_unittest.cc
diff --git a/components/proximity_auth/ble/bluetooth_low_energy_weave_packet_receiver_unittest.cc b/components/proximity_auth/ble/bluetooth_low_energy_weave_packet_receiver_unittest.cc
deleted file mode 100644
index de009c8eeeaff507704481001fd03c171b32019d..0000000000000000000000000000000000000000
--- a/components/proximity_auth/ble/bluetooth_low_energy_weave_packet_receiver_unittest.cc
+++ /dev/null
@@ -1,1026 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/proximity_auth/ble/bluetooth_low_energy_weave_packet_receiver.h"
-
-#include <algorithm>
-#include <string>
-
-#include "base/logging.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace proximity_auth {
-namespace weave {
-namespace {
-
-typedef BluetoothLowEnergyWeavePacketReceiver::ReceiverType ReceiverType;
-typedef BluetoothLowEnergyWeavePacketReceiver::State State;
-typedef BluetoothLowEnergyWeavePacketReceiver::ReceiverError ReceiverError;
-
-const uint8_t kCloseWithoutError = 0;
-
-// uWeave Header:
-// 1--- ---- : type = 1 (control packet)
-// -000 ---- : counter = 0
-// ---- 0000 : command = 0 (request)
-// 1000 0000 = 0x80
-const uint8_t kControlRequestHeader = 0x80;
-
-// uWeave Header:
-// 1--- ---- : type = 1 (control packet)
-// -000 ---- : counter = 0
-// ---- 0001 : command = 1 (response)
-// 1000 0001 = 0x81
-const uint8_t kControlResponseHeader = 0x81;
-} // namespace
-
-class ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest
- : public testing::Test {
- protected:
- ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest() {}
-
- private:
- DISALLOW_COPY_AND_ASSIGN(
- ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest);
-};
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- WellBehavingServerPacketsNoControlDataTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- std::vector<uint8_t> p1(kByteDefaultMaxPacketSize, 'a');
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -0-- : last packet = false
- // ---- --00 : defined by uWeave to be 0
- // 0001 1000 = 0x18
- p1[0] = 0x18;
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::RECEIVING_DATA, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -010 ---- : counter = 2
- // ---- 0--- : first packet = false
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0010 0100 = 0x24
- std::vector<uint8_t> p2{0x24, 'c', 'd'};
- receiver->ReceivePacket(p2);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("aaaaaaaaaaaaaaaaaaacd", receiver->GetDataMessage());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -011 ---- : counter = 3
- // ---- 1--- : first packet = true
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0011 1100 = 0x3C
- std::vector<uint8_t> p3{0x3C, 'g', 'o', 'o', 'g', 'l', 'e'};
- receiver->ReceivePacket(p3);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("google", receiver->GetDataMessage());
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -100 ---- : counter = 4
- // ---- 0010 : command = 2 (close)
- // 1100 0010 = 0xC2
- // 0x80 is the hex value for APPLICATION_ERROR
- std::vector<uint8_t> p4{0xC2, kEmptyUpperByte, 0x80};
- receiver->ReceivePacket(p4);
- EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::APPLICATION_ERROR, receiver->GetReasonForClose());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- WellBehavingServerPacketsWithFullControlDataTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader,
- kEmptyUpperByte,
- kByteWeaveVersion,
- kEmptyUpperByte,
- kByteWeaveVersion,
- kEmptyUpperByte,
- kByteSelectMaxPacketSize,
- 'a',
- 'b',
- 'c',
- 'd',
- 'e',
- 'f',
- 'g',
- 'h',
- 'i',
- 'j',
- 'k',
- 'l',
- 'm'};
-
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("abcdefghijklm", receiver->GetDataMessage());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -0-- : last packet = false
- // ---- --00 : defined by uWeave to be 0
- // 0001 1000 = 0x18
- std::vector<uint8_t> p1(kByteDefaultMaxPacketSize, 'o');
- p1[0] = 0x18;
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::RECEIVING_DATA, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -010 ---- : counter = 2
- // ---- 0--- : first packet = false
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0010 0100 = 0x24
- std::vector<uint8_t> p2{0x24, 'p', 'q'};
- receiver->ReceivePacket(p2);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("ooooooooooooooooooopq", receiver->GetDataMessage());
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -011 ---- : counter = 3
- // ---- 0010 : command = 2 (close)
- // 1011 0010 = 0xB2
- std::vector<uint8_t> p3{0xB2, kEmptyUpperByte, kCloseWithoutError};
- receiver->ReceivePacket(p3);
- EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::CLOSE_WITHOUT_ERROR, receiver->GetReasonForClose());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- WellBehavingServerPacketsWithSomeControlDataTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize, 'a'};
-
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("a", receiver->GetDataMessage());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -0-- : last packet = false
- // ---- --00 : defined by uWeave to be 0
- // 0001 1000 = 0x18
- std::vector<uint8_t> p1(kByteDefaultMaxPacketSize, 'o');
- p1[0] = 0x18;
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::RECEIVING_DATA, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -010 ---- : counter = 2
- // ---- 0--- : first packet = false
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0010 0100 = 0x24
- std::vector<uint8_t> p2{0x24, 'p', 'q'};
- receiver->ReceivePacket(p2);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("ooooooooooooooooooopq", receiver->GetDataMessage());
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -011 ---- : counter = 3
- // ---- 0010 : command = 2 (close)
- // 1011 0010 = 0xB2
- std::vector<uint8_t> p3{0xB2, kEmptyUpperByte, kCloseWithoutError};
- receiver->ReceivePacket(p3);
- EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::CLOSE_WITHOUT_ERROR, receiver->GetReasonForClose());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- WellBehavingClientPacketsNoControlDataTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- const uint8_t kSelectedPacketSize = 30;
- std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kSelectedPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
- EXPECT_EQ(kSelectedPacketSize, receiver->GetMaxPacketSize());
-
- std::vector<uint8_t> p1(kSelectedPacketSize, 'o');
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0001 1100 = 0x1C
- p1[0] = 0x1C;
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("ooooooooooooooooooooooooooooo", receiver->GetDataMessage());
-
- const uint8_t kApplicationError = 0x80;
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -010 ---- : counter = 2
- // ---- 0010 : command = 2 (close)
- // 1010 0010 = 0xA2
- std::vector<uint8_t> p2{0xA2, kEmptyUpperByte, kApplicationError};
- receiver->ReceivePacket(p2);
- EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::APPLICATION_ERROR, receiver->GetReasonForClose());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- WellBehavingClientPacketsWithFullControlDataTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0{kControlResponseHeader,
- kEmptyUpperByte,
- kByteWeaveVersion,
- kEmptyUpperByte,
- kByteDefaultMaxPacketSize,
- 'a',
- 'b',
- 'c',
- 'd',
- 'e',
- 'f',
- 'g',
- 'h',
- 'i',
- 'j',
- 'k',
- 'l',
- 'm',
- 'n',
- 'o'};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("abcdefghijklmno", receiver->GetDataMessage());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0001 1100 = 0x1C
- std::vector<uint8_t> p1{0x1C, 'g', 'o', 'o', 'g', 'l', 'e'};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("google", receiver->GetDataMessage());
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -010 ---- : counter = 2
- // ---- 0010 : command = 2 (close)
- // 1010 0010 = 0xA2
- std::vector<uint8_t> p2{0xA2, kEmptyUpperByte, kCloseWithoutError};
- receiver->ReceivePacket(p2);
- EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::CLOSE_WITHOUT_ERROR, receiver->GetReasonForClose());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- WellBehavingClientPacketsWithSomeControlDataTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0{kControlResponseHeader,
- kEmptyUpperByte,
- kByteWeaveVersion,
- kEmptyUpperByte,
- kByteDefaultMaxPacketSize,
- 'a',
- 'b',
- 'c'};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("abc", receiver->GetDataMessage());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0001 1100 = 0x1C
- std::vector<uint8_t> p1{0x1C, 'g', 'o', 'o', 'g', 'l', 'e'};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("google", receiver->GetDataMessage());
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -010 ---- : counter = 2
- // ---- 0010 : command = 2 (close)
- // 1010 0010 = 0xA2
- std::vector<uint8_t> p2{0xA2, kEmptyUpperByte, kCloseWithoutError};
- receiver->ReceivePacket(p2);
- EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::CLOSE_WITHOUT_ERROR, receiver->GetReasonForClose());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- LegacyCloseWithoutReasonTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -001 ---- : counter = 1
- // ---- 0010 : command = 2 (close)
- // 1001 0010 = 0x92
- std::vector<uint8_t> p1{0x92};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonForClose());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- OneBytePacketTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteDefaultMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0001 1100 = 0x1C
- std::vector<uint8_t> p1{0x1C};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::DATA_READY, receiver->GetState());
- EXPECT_EQ("", receiver->GetDataMessage());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- EmptyPacketTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0;
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::EMPTY_PACKET, receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ServerReceivingConnectionResponseTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
- std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteDefaultMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::CLIENT_RECEIVED_CONNECTION_REQUEST,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ClientReceivingConnectionRequestTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::SERVER_RECEIVED_CONNECTION_RESPONSE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ReceiveConnectionCloseInConnecting) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -000 ---- : counter = 0
- // ---- 0010 : command = 2 (close)
- // 1000 0010 = 0x82
- std::vector<uint8_t> p0{0x82, kEmptyUpperByte, kCloseWithoutError};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::RECEIVED_CONNECTION_CLOSE_IN_CONNECTING,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ReceiveDataInConnecting) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -000 ---- : counter = 0
- // ---- 1--- : first packet = true
- // ---- -0-- : last packet = false
- // ---- --00 : defined by uWeave to be 0
- // 0000 1000 = 0x08
- std::vector<uint8_t> p3{0x08, 'a', 'b', 'c', 'd'};
- receiver->ReceivePacket(p3);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::RECEIVED_DATA_IN_CONNECTING,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ConnectionRequestTooSmallTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INVALID_CONNECTION_REQUEST_SIZE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ConnectionRequestTooLargeTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0(kByteDefaultMaxPacketSize + 1, 0);
- p0[0] = kControlRequestHeader;
- p0[2] = kByteWeaveVersion;
- p0[4] = kByteWeaveVersion;
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INVALID_CONNECTION_REQUEST_SIZE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ConnectionResponseTooSmallTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INVALID_CONNECTION_RESPONSE_SIZE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ConnectionResponseTooLargeTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0(kByteDefaultMaxPacketSize + 1, 0);
- p0[0] = kControlResponseHeader;
- p0[2] = kByteWeaveVersion;
- p0[4] = kByteDefaultMaxPacketSize;
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INVALID_CONNECTION_RESPONSE_SIZE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ConnectionCloseTooLargeTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -001 ---- : counter = 1
- // ---- 0010 : command = 2 (close)
- // 1001 0010 = 0x92
- std::vector<uint8_t> p1{0x92, kEmptyUpperByte, kCloseWithoutError, 'a'};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReceiverError::INVALID_CONNECTION_CLOSE_SIZE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- DataPacketTooLargeTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0001 1100 = 0x1C
- std::vector<uint8_t> p1(kByteDefaultMaxPacketSize + 1, 'a');
- p1[0] = 0x1C;
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INVALID_DATA_PACKET_SIZE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- FirstPacketNoFirstNorLastBitTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 0--- : first packet = false
- // ---- -0-- : last packet = false
- // ---- --00 : defined by uWeave to be 0
- // 0001 0000 = 0x10
- std::vector<uint8_t> p1{0x10};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::RECEIVED_PACKET_OUT_OF_SEQUENCE,
- receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INCORRECT_DATA_FIRST_BIT,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- FirstPacketNoFirstYesLastBitTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 0--- : first packet = false
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0001 0100 = 0x14
- std::vector<uint8_t> p1{0x14};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::RECEIVED_PACKET_OUT_OF_SEQUENCE,
- receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INCORRECT_DATA_FIRST_BIT,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- NonFirstPacketYesFirstBitTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -0-- : last packet = false
- // ---- --00 : defined by uWeave to be 0
- // 0001 1000 = 0x18
- std::vector<uint8_t> p1{0x18};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::RECEIVING_DATA, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -010 ---- : counter = 2
- // ---- 1--- : first packet = true
- // ---- -0-- : last packet = false
- // ---- --00 : defined by uWeave to be 0
- // 0010 1000 = 0x28
- std::vector<uint8_t> p2{0x28};
- receiver->ReceivePacket(p2);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::RECEIVED_PACKET_OUT_OF_SEQUENCE,
- receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INCORRECT_DATA_FIRST_BIT,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- OutOfOrderPacketTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -010 ---- : counter = 2
- // ---- 0--- : first packet = false
- // ---- -0-- : last packet = false
- // ---- --00 : defined by uWeave to be 0
- // 0010 0000 = 0x20
- std::vector<uint8_t> p1{0x20};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::RECEIVED_PACKET_OUT_OF_SEQUENCE,
- receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::PACKET_OUT_OF_SEQUENCE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- InvalidVersionInConnectionRequestTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- const uint8_t kWrongVersion = 2;
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kWrongVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::NO_COMMON_VERSION_SUPPORTED,
- receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::NOT_SUPPORTED_REQUESTED_VERSION,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- InvalidMaxPacketSizeInConnectionRequestTest) {
- const uint8_t kSmallMaxPacketSize = 19;
-
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kSmallMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INVALID_REQUESTED_MAX_PACKET_SIZE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- InvalidSelectedVersionInConnectionResponseTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0{kControlResponseHeader, kByteWeaveVersion,
- kEmptyUpperByte, kEmptyUpperByte,
- kByteDefaultMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::NO_COMMON_VERSION_SUPPORTED,
- receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::NOT_SUPPORTED_SELECTED_VERSION,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- InvalidSelectedMaxPacketSizeInConnectionResponseTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- const uint8_t kSmallMaxPacketSize = 19;
- std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kSmallMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INVALID_SELECTED_MAX_PACKET_SIZE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- UnrecognizedReasonForCloseInConnectionCloseTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteDefaultMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- const uint8_t kInvalidReasonForClose = 5;
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -001 ---- : counter = 1
- // ---- 0010 : command = 2 (close)
- // 1001 0010 = 0x92
- std::vector<uint8_t> p1{0x92, kEmptyUpperByte, kInvalidReasonForClose};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::UNRECOGNIZED_REASON_FOR_CLOSE,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- UnrecognizedControlCommandBitTwoTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -000 ---- : counter = 0
- // ---- 0100 : command = 4 (INVALID)
- // 1000 0100 = 0x84
- std::vector<uint8_t> p0{0x84,
- kEmptyUpperByte,
- kByteWeaveVersion,
- kEmptyUpperByte,
- kByteWeaveVersion,
- kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::UNRECOGNIZED_CONTROL_COMMAND,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- InvalidControlCommandBitThreeTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -000 ---- : counter = 0
- // ---- 1000 : command = 8 (INVALID)
- // 1000 1000 = 0x88
- std::vector<uint8_t> p0{0x88, kEmptyUpperByte, kByteWeaveVersion,
- kEmptyUpperByte, kByteDefaultMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::UNRECOGNIZED_CONTROL_COMMAND,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- InvalidBitOneInDataPacketHeaderTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteDefaultMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -1-- : last packet = true
- // ---- --10 : defined by uWeave to be 0, but bit 1 is not
- // 0001 1110 = 0x1E
- std::vector<uint8_t> p1{0x1E, 'a'};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::DATA_HEADER_LOW_BITS_NOT_CLEARED,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- InvalidBitZeroInDataPacketHeaderTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0{kControlResponseHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteDefaultMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -001 ---- : counter = 1
- // ---- 1--- : first packet = true
- // ---- -1-- : last packet = true
- // ---- --01 : defined by uWeave to be 0, but bit 0 is not
- // 0001 1101 = 0x1D
- std::vector<uint8_t> p1{0x1D, 'a'};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::DATA_HEADER_LOW_BITS_NOT_CLEARED,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ReceivedPacketInErrorState) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::CLIENT);
-
- std::vector<uint8_t> p0;
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
-
- std::vector<uint8_t> p1{kControlResponseHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::EMPTY_PACKET, receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- ReceivedPacketInConnectionClosedStateTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -001 ---- : counter = 1
- // ---- 0010 : command = 2 (close)
- // 1001 0010 = 0x92
- std::vector<uint8_t> p1{0x92, kEmptyUpperByte, kCloseWithoutError};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::CONNECTION_CLOSED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::CLOSE_WITHOUT_ERROR, receiver->GetReasonForClose());
-
- // uWeave Header:
- // 0--- ---- : type = 0 (data packet)
- // -010 ---- : counter = 2
- // ---- 1--- : first packet = true
- // ---- -1-- : last packet = true
- // ---- --00 : defined by uWeave to be 0
- // 0010 1100 = 0x2C
- std::vector<uint8_t> p2{0x2C, 'a'};
- receiver->ReceivePacket(p2);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::RECEIVED_PACKET_IN_CONNECTION_CLOSED,
- receiver->GetReceiverError());
-}
-
-TEST_F(ProximityAuthBluetoothLowEnergyWeavePacketReceiverTest,
- MultipleControlPacketTest) {
- std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> receiver =
- BluetoothLowEnergyWeavePacketReceiver::Factory::NewInstance(
- ReceiverType::SERVER);
-
- std::vector<uint8_t> p0{kControlRequestHeader, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteWeaveVersion, kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p0);
- EXPECT_EQ(State::WAITING, receiver->GetState());
-
- // uWeave Header:
- // 1--- ---- : type = 1 (control packet)
- // -001 ---- : counter = 1
- // ---- 0000 : command = 0 (request)
- // 1001 0000 = 0x90
- std::vector<uint8_t> p1{0x90,
- kEmptyUpperByte,
- kByteWeaveVersion,
- kEmptyUpperByte,
- kByteWeaveVersion,
- kEmptyUpperByte,
- kByteSelectMaxPacketSize};
- receiver->ReceivePacket(p1);
- EXPECT_EQ(State::ERROR_DETECTED, receiver->GetState());
- EXPECT_EQ(ReasonForClose::UNKNOWN_ERROR, receiver->GetReasonToClose());
- EXPECT_EQ(ReceiverError::INVALID_CONTROL_COMMAND_IN_DATA_TRANSACTION,
- receiver->GetReceiverError());
-}
-
-} // namespace weave
-
-} // namespace proximity_auth

Powered by Google App Engine
This is Rietveld 408576698