Skip to content

Commit 1025361

Browse files
tehampsonpull[bot]
authored andcommitted
Small refactor to TestCASESession bringing it inline with other unit tests (#20039)
* Small refactor to TestCASESession to bring it inline with other unit test * Restyle * Remove CASE_ prefix on test and add comment to TestCASESession * Restyle
1 parent aa54d06 commit 1025361

File tree

2 files changed

+64
-54
lines changed

2 files changed

+64
-54
lines changed

src/protocols/secure_channel/CASESession.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ class DLL_EXPORT CASESession : public Messaging::UnsolicitedMessageHandler,
188188
void Clear();
189189

190190
private:
191-
friend class CASESessionForTest;
191+
friend class TestCASESession;
192192
enum class State : uint8_t
193193
{
194194
kInitialized = 0,

src/protocols/secure_channel/tests/TestCASESession.cpp

+63-53
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,16 @@ using namespace chip;
4747
using namespace Credentials;
4848
using namespace TestCerts;
4949

50-
using namespace chip;
5150
using namespace chip::Inet;
5251
using namespace chip::Transport;
5352
using namespace chip::Messaging;
5453
using namespace chip::Protocols;
5554

5655
using TestContext = Test::LoopbackMessagingContext;
5756

57+
namespace chip {
5858
namespace {
59+
5960
CHIP_ERROR InitFabricTable(chip::FabricTable & fabricTable, chip::TestPersistentStorageDelegate * testStorage,
6061
chip::Crypto::OperationalKeystore * opKeyStore,
6162
chip::Credentials::PersistentStorageOpCertStore * opCertStore)
@@ -254,39 +255,57 @@ CHIP_ERROR InitCredentialSets()
254255
return CHIP_NO_ERROR;
255256
}
256257

257-
} // namespace
258+
} // anonymous namespace
258259

259-
void CASE_SecurePairingWaitTest(nlTestSuite * inSuite, void * inContext)
260+
// Specifically for SimulateUpdateNOCInvalidatePendingEstablishment, we need it to be static so that the class below can
261+
// be a friend to CASESession so that test can get access to CASESession::State and test method that are not public. To
262+
// keep the rest of this file consistent we brought all other tests into this class.
263+
class TestCASESession
264+
{
265+
public:
266+
static void SecurePairingWaitTest(nlTestSuite * inSuite, void * inContext);
267+
static void SecurePairingStartTest(nlTestSuite * inSuite, void * inContext);
268+
static void SecurePairingHandshakeTest(nlTestSuite * inSuite, void * inContext);
269+
static void SecurePairingHandshakeServerTest(nlTestSuite * inSuite, void * inContext);
270+
static void Sigma1ParsingTest(nlTestSuite * inSuite, void * inContext);
271+
static void DestinationIdTest(nlTestSuite * inSuite, void * inContext);
272+
static void SessionResumptionStorage(nlTestSuite * inSuite, void * inContext);
273+
#if CONFIG_BUILD_FOR_HOST_UNIT_TEST
274+
static void SimulateUpdateNOCInvalidatePendingEstablishment(nlTestSuite * inSuite, void * inContext);
275+
#endif // CONFIG_BUILD_FOR_HOST_UNIT_TEST
276+
};
277+
278+
void TestCASESession::SecurePairingWaitTest(nlTestSuite * inSuite, void * inContext)
260279
{
261280
SessionManager sessionManager;
262281

263282
// Test all combinations of invalid parameters
264283
TestCASESecurePairingDelegate delegate;
265284
FabricTable fabrics;
266-
// In normal operation scope of FabricTable outlives CASESession. Without this scoping we hit
267-
// ASAN test issue since FabricTable is not normally on the stack.
268-
{
269-
CASESession caseSession;
285+
CASESession caseSession;
270286

271-
NL_TEST_ASSERT(inSuite, caseSession.GetSecureSessionType() == SecureSession::Type::kCASE);
287+
NL_TEST_ASSERT(inSuite, caseSession.GetSecureSessionType() == SecureSession::Type::kCASE);
272288

273-
caseSession.SetGroupDataProvider(&gDeviceGroupDataProvider);
274-
NL_TEST_ASSERT(inSuite,
275-
caseSession.PrepareForSessionEstablishment(
276-
sessionManager, nullptr, nullptr, nullptr, nullptr, ScopedNodeId(),
277-
Optional<ReliableMessageProtocolConfig>::Missing()) == CHIP_ERROR_INVALID_ARGUMENT);
278-
NL_TEST_ASSERT(inSuite,
279-
caseSession.PrepareForSessionEstablishment(
280-
sessionManager, nullptr, nullptr, nullptr, &delegate, ScopedNodeId(),
281-
Optional<ReliableMessageProtocolConfig>::Missing()) == CHIP_ERROR_INVALID_ARGUMENT);
282-
NL_TEST_ASSERT(
283-
inSuite,
284-
caseSession.PrepareForSessionEstablishment(sessionManager, &fabrics, nullptr, nullptr, &delegate, ScopedNodeId(),
285-
Optional<ReliableMessageProtocolConfig>::Missing()) == CHIP_NO_ERROR);
286-
}
289+
caseSession.SetGroupDataProvider(&gDeviceGroupDataProvider);
290+
NL_TEST_ASSERT(inSuite,
291+
caseSession.PrepareForSessionEstablishment(sessionManager, nullptr, nullptr, nullptr, nullptr, ScopedNodeId(),
292+
Optional<ReliableMessageProtocolConfig>::Missing()) ==
293+
CHIP_ERROR_INVALID_ARGUMENT);
294+
NL_TEST_ASSERT(inSuite,
295+
caseSession.PrepareForSessionEstablishment(sessionManager, nullptr, nullptr, nullptr, &delegate, ScopedNodeId(),
296+
Optional<ReliableMessageProtocolConfig>::Missing()) ==
297+
CHIP_ERROR_INVALID_ARGUMENT);
298+
NL_TEST_ASSERT(inSuite,
299+
caseSession.PrepareForSessionEstablishment(sessionManager, &fabrics, nullptr, nullptr, &delegate, ScopedNodeId(),
300+
Optional<ReliableMessageProtocolConfig>::Missing()) == CHIP_NO_ERROR);
301+
302+
// Calling Clear() here since ASAN will have an issue if FabricTable destructor is called before CASESession's
303+
// destructor. We could reorder FabricTable and CaseSession, but this makes it a little more clear what we are
304+
// doing here.
305+
caseSession.Clear();
287306
}
288307

289-
void CASE_SecurePairingStartTest(nlTestSuite * inSuite, void * inContext)
308+
void TestCASESession::SecurePairingStartTest(nlTestSuite * inSuite, void * inContext)
290309
{
291310
TestContext & ctx = *reinterpret_cast<TestContext *>(inContext);
292311
SessionManager sessionManager;
@@ -341,8 +360,8 @@ void CASE_SecurePairingStartTest(nlTestSuite * inSuite, void * inContext)
341360
loopback.mMessageSendError = CHIP_NO_ERROR;
342361
}
343362

344-
void CASE_SecurePairingHandshakeTestCommon(nlTestSuite * inSuite, void * inContext, SessionManager & sessionManager,
345-
CASESession & pairingCommissioner, TestCASESecurePairingDelegate & delegateCommissioner)
363+
void SecurePairingHandshakeTestCommon(nlTestSuite * inSuite, void * inContext, SessionManager & sessionManager,
364+
CASESession & pairingCommissioner, TestCASESecurePairingDelegate & delegateCommissioner)
346365
{
347366
TestContext & ctx = *reinterpret_cast<TestContext *>(inContext);
348367

@@ -400,18 +419,18 @@ void CASE_SecurePairingHandshakeTestCommon(nlTestSuite * inSuite, void * inConte
400419
#endif // CONFIG_BUILD_FOR_HOST_UNIT_TEST
401420
}
402421

403-
void CASE_SecurePairingHandshakeTest(nlTestSuite * inSuite, void * inContext)
422+
void TestCASESession::SecurePairingHandshakeTest(nlTestSuite * inSuite, void * inContext)
404423
{
405424
SessionManager sessionManager;
406425
TestCASESecurePairingDelegate delegateCommissioner;
407426
CASESession pairingCommissioner;
408427
pairingCommissioner.SetGroupDataProvider(&gCommissionerGroupDataProvider);
409-
CASE_SecurePairingHandshakeTestCommon(inSuite, inContext, sessionManager, pairingCommissioner, delegateCommissioner);
428+
SecurePairingHandshakeTestCommon(inSuite, inContext, sessionManager, pairingCommissioner, delegateCommissioner);
410429
}
411430

412431
CASEServerForTest gPairingServer;
413432

414-
void CASE_SecurePairingHandshakeServerTest(nlTestSuite * inSuite, void * inContext)
433+
void TestCASESession::SecurePairingHandshakeServerTest(nlTestSuite * inSuite, void * inContext)
415434
{
416435
// TODO: Add cases for mismatching IPK config between initiator/responder
417436

@@ -489,7 +508,7 @@ struct Sigma1Params
489508
static constexpr bool expectSuccess = true;
490509
};
491510

492-
void CASE_DestinationIdTest(nlTestSuite * inSuite, void * inContext)
511+
void TestCASESession::DestinationIdTest(nlTestSuite * inSuite, void * inContext)
493512
{
494513
// Validate example test vector from CASE section of spec
495514

@@ -705,7 +724,7 @@ struct Sigma1SessionIdTooBig : public BadSigma1ParamsBase
705724
static constexpr uint32_t initiatorSessionId = UINT16_MAX + 1;
706725
};
707726

708-
static void CASE_Sigma1ParsingTest(nlTestSuite * inSuite, void * inContext)
727+
void TestCASESession::Sigma1ParsingTest(nlTestSuite * inSuite, void * inContext)
709728
{
710729
// 1280 bytes must be enough by definition.
711730
constexpr size_t bufferSize = 1280;
@@ -778,7 +797,7 @@ struct SessionResumptionTestStorage : SessionResumptionStorage
778797
Crypto::P256ECDHDerivedSecret * mSharedSecret = nullptr;
779798
};
780799

781-
static void CASE_SessionResumptionStorage(nlTestSuite * inSuite, void * inContext)
800+
void TestCASESession::SessionResumptionStorage(nlTestSuite * inSuite, void * inContext)
782801
{
783802
// Test the SessionResumptionStorage external interface.
784803
//
@@ -876,18 +895,8 @@ static void CASE_SessionResumptionStorage(nlTestSuite * inSuite, void * inContex
876895
}
877896
}
878897

879-
// TODO, move all tests above into this class
880898
#if CONFIG_BUILD_FOR_HOST_UNIT_TEST
881-
namespace chip {
882-
// TODO rename CASESessionForTest to TestCASESession. Not doing that immediately since that requires
883-
// removing a lot of the `using namesapce` above which is a larger cleanup.
884-
class CASESessionForTest
885-
{
886-
public:
887-
static void CASE_SimulateUpdateNOCInvalidatePendingEstablishment(nlTestSuite * inSuite, void * inContext);
888-
};
889-
890-
void CASESessionForTest::CASE_SimulateUpdateNOCInvalidatePendingEstablishment(nlTestSuite * inSuite, void * inContext)
899+
void TestCASESession::SimulateUpdateNOCInvalidatePendingEstablishment(nlTestSuite * inSuite, void * inContext)
891900
{
892901
SessionManager sessionManager;
893902
TestCASESecurePairingDelegate delegateCommissioner;
@@ -954,9 +963,10 @@ void CASESessionForTest::CASE_SimulateUpdateNOCInvalidatePendingEstablishment(nl
954963
NL_TEST_ASSERT(inSuite, delegateAccessory.mNumPairingComplete == 0);
955964
NL_TEST_ASSERT(inSuite, delegateCommissioner.mNumPairingComplete == 0);
956965
}
957-
} // namespace chip
958966
#endif // CONFIG_BUILD_FOR_HOST_UNIT_TEST
959967

968+
} // namespace chip
969+
960970
// Test Suite
961971

962972
/**
@@ -965,17 +975,17 @@ void CASESessionForTest::CASE_SimulateUpdateNOCInvalidatePendingEstablishment(nl
965975
// clang-format off
966976
static const nlTest sTests[] =
967977
{
968-
NL_TEST_DEF("WaitInit", CASE_SecurePairingWaitTest),
969-
NL_TEST_DEF("Start", CASE_SecurePairingStartTest),
970-
NL_TEST_DEF("Handshake", CASE_SecurePairingHandshakeTest),
971-
NL_TEST_DEF("ServerHandshake", CASE_SecurePairingHandshakeServerTest),
972-
NL_TEST_DEF("Sigma1Parsing", CASE_Sigma1ParsingTest),
973-
NL_TEST_DEF("DestinationId", CASE_DestinationIdTest),
974-
NL_TEST_DEF("SessionResumptionStorage", CASE_SessionResumptionStorage),
978+
NL_TEST_DEF("WaitInit", chip::TestCASESession::SecurePairingWaitTest),
979+
NL_TEST_DEF("Start", chip::TestCASESession::SecurePairingStartTest),
980+
NL_TEST_DEF("Handshake", chip::TestCASESession::SecurePairingHandshakeTest),
981+
NL_TEST_DEF("ServerHandshake", chip::TestCASESession::SecurePairingHandshakeServerTest),
982+
NL_TEST_DEF("Sigma1Parsing", chip::TestCASESession::Sigma1ParsingTest),
983+
NL_TEST_DEF("DestinationId", chip::TestCASESession::DestinationIdTest),
984+
NL_TEST_DEF("SessionResumptionStorage", chip::TestCASESession::SessionResumptionStorage),
975985
#if CONFIG_BUILD_FOR_HOST_UNIT_TEST
976986
// This is compiled for host tests which is enough test coverage to ensure updating NOC invalidates
977987
// CASESession that are in the process of establishing.
978-
NL_TEST_DEF("InvalidatePendingSessionEstablishment", chip::CASESessionForTest::CASE_SimulateUpdateNOCInvalidatePendingEstablishment),
988+
NL_TEST_DEF("InvalidatePendingSessionEstablishment", chip::TestCASESession::SimulateUpdateNOCInvalidatePendingEstablishment),
979989
#endif // CONFIG_BUILD_FOR_HOST_UNIT_TEST
980990

981991
NL_TEST_SENTINEL()
@@ -1046,9 +1056,9 @@ int CASE_TestSecurePairing_Teardown(void * inContext)
10461056
/**
10471057
* Main
10481058
*/
1049-
int TestCASESession()
1059+
int TestCASESessionTest()
10501060
{
10511061
return chip::ExecuteTestsWithContext<TestContext>(&sSuite);
10521062
}
10531063

1054-
CHIP_REGISTER_TEST_SUITE(TestCASESession)
1064+
CHIP_REGISTER_TEST_SUITE(TestCASESessionTest)

0 commit comments

Comments
 (0)