@@ -47,15 +47,16 @@ using namespace chip;
47
47
using namespace Credentials ;
48
48
using namespace TestCerts ;
49
49
50
- using namespace chip ;
51
50
using namespace chip ::Inet;
52
51
using namespace chip ::Transport;
53
52
using namespace chip ::Messaging;
54
53
using namespace chip ::Protocols;
55
54
56
55
using TestContext = Test::LoopbackMessagingContext;
57
56
57
+ namespace chip {
58
58
namespace {
59
+
59
60
CHIP_ERROR InitFabricTable (chip::FabricTable & fabricTable, chip::TestPersistentStorageDelegate * testStorage,
60
61
chip::Crypto::OperationalKeystore * opKeyStore,
61
62
chip::Credentials::PersistentStorageOpCertStore * opCertStore)
@@ -254,39 +255,57 @@ CHIP_ERROR InitCredentialSets()
254
255
return CHIP_NO_ERROR;
255
256
}
256
257
257
- } // namespace
258
+ } // anonymous namespace
258
259
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)
260
279
{
261
280
SessionManager sessionManager;
262
281
263
282
// Test all combinations of invalid parameters
264
283
TestCASESecurePairingDelegate delegate;
265
284
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;
270
286
271
- NL_TEST_ASSERT (inSuite, caseSession.GetSecureSessionType () == SecureSession::Type::kCASE );
287
+ NL_TEST_ASSERT (inSuite, caseSession.GetSecureSessionType () == SecureSession::Type::kCASE );
272
288
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 ();
287
306
}
288
307
289
- void CASE_SecurePairingStartTest (nlTestSuite * inSuite, void * inContext)
308
+ void TestCASESession::SecurePairingStartTest (nlTestSuite * inSuite, void * inContext)
290
309
{
291
310
TestContext & ctx = *reinterpret_cast <TestContext *>(inContext);
292
311
SessionManager sessionManager;
@@ -341,8 +360,8 @@ void CASE_SecurePairingStartTest(nlTestSuite * inSuite, void * inContext)
341
360
loopback.mMessageSendError = CHIP_NO_ERROR;
342
361
}
343
362
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)
346
365
{
347
366
TestContext & ctx = *reinterpret_cast <TestContext *>(inContext);
348
367
@@ -400,18 +419,18 @@ void CASE_SecurePairingHandshakeTestCommon(nlTestSuite * inSuite, void * inConte
400
419
#endif // CONFIG_BUILD_FOR_HOST_UNIT_TEST
401
420
}
402
421
403
- void CASE_SecurePairingHandshakeTest (nlTestSuite * inSuite, void * inContext)
422
+ void TestCASESession::SecurePairingHandshakeTest (nlTestSuite * inSuite, void * inContext)
404
423
{
405
424
SessionManager sessionManager;
406
425
TestCASESecurePairingDelegate delegateCommissioner;
407
426
CASESession pairingCommissioner;
408
427
pairingCommissioner.SetGroupDataProvider (&gCommissionerGroupDataProvider );
409
- CASE_SecurePairingHandshakeTestCommon (inSuite, inContext, sessionManager, pairingCommissioner, delegateCommissioner);
428
+ SecurePairingHandshakeTestCommon (inSuite, inContext, sessionManager, pairingCommissioner, delegateCommissioner);
410
429
}
411
430
412
431
CASEServerForTest gPairingServer ;
413
432
414
- void CASE_SecurePairingHandshakeServerTest (nlTestSuite * inSuite, void * inContext)
433
+ void TestCASESession::SecurePairingHandshakeServerTest (nlTestSuite * inSuite, void * inContext)
415
434
{
416
435
// TODO: Add cases for mismatching IPK config between initiator/responder
417
436
@@ -489,7 +508,7 @@ struct Sigma1Params
489
508
static constexpr bool expectSuccess = true ;
490
509
};
491
510
492
- void CASE_DestinationIdTest (nlTestSuite * inSuite, void * inContext)
511
+ void TestCASESession::DestinationIdTest (nlTestSuite * inSuite, void * inContext)
493
512
{
494
513
// Validate example test vector from CASE section of spec
495
514
@@ -705,7 +724,7 @@ struct Sigma1SessionIdTooBig : public BadSigma1ParamsBase
705
724
static constexpr uint32_t initiatorSessionId = UINT16_MAX + 1 ;
706
725
};
707
726
708
- static void CASE_Sigma1ParsingTest (nlTestSuite * inSuite, void * inContext)
727
+ void TestCASESession::Sigma1ParsingTest (nlTestSuite * inSuite, void * inContext)
709
728
{
710
729
// 1280 bytes must be enough by definition.
711
730
constexpr size_t bufferSize = 1280 ;
@@ -778,7 +797,7 @@ struct SessionResumptionTestStorage : SessionResumptionStorage
778
797
Crypto::P256ECDHDerivedSecret * mSharedSecret = nullptr ;
779
798
};
780
799
781
- static void CASE_SessionResumptionStorage (nlTestSuite * inSuite, void * inContext)
800
+ void TestCASESession::SessionResumptionStorage (nlTestSuite * inSuite, void * inContext)
782
801
{
783
802
// Test the SessionResumptionStorage external interface.
784
803
//
@@ -876,18 +895,8 @@ static void CASE_SessionResumptionStorage(nlTestSuite * inSuite, void * inContex
876
895
}
877
896
}
878
897
879
- // TODO, move all tests above into this class
880
898
#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)
891
900
{
892
901
SessionManager sessionManager;
893
902
TestCASESecurePairingDelegate delegateCommissioner;
@@ -954,9 +963,10 @@ void CASESessionForTest::CASE_SimulateUpdateNOCInvalidatePendingEstablishment(nl
954
963
NL_TEST_ASSERT (inSuite, delegateAccessory.mNumPairingComplete == 0 );
955
964
NL_TEST_ASSERT (inSuite, delegateCommissioner.mNumPairingComplete == 0 );
956
965
}
957
- } // namespace chip
958
966
#endif // CONFIG_BUILD_FOR_HOST_UNIT_TEST
959
967
968
+ } // namespace chip
969
+
960
970
// Test Suite
961
971
962
972
/* *
@@ -965,17 +975,17 @@ void CASESessionForTest::CASE_SimulateUpdateNOCInvalidatePendingEstablishment(nl
965
975
// clang-format off
966
976
static const nlTest sTests [] =
967
977
{
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 ),
975
985
#if CONFIG_BUILD_FOR_HOST_UNIT_TEST
976
986
// This is compiled for host tests which is enough test coverage to ensure updating NOC invalidates
977
987
// 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 ),
979
989
#endif // CONFIG_BUILD_FOR_HOST_UNIT_TEST
980
990
981
991
NL_TEST_SENTINEL ()
@@ -1046,9 +1056,9 @@ int CASE_TestSecurePairing_Teardown(void * inContext)
1046
1056
/* *
1047
1057
* Main
1048
1058
*/
1049
- int TestCASESession ()
1059
+ int TestCASESessionTest ()
1050
1060
{
1051
1061
return chip::ExecuteTestsWithContext<TestContext>(&sSuite );
1052
1062
}
1053
1063
1054
- CHIP_REGISTER_TEST_SUITE (TestCASESession )
1064
+ CHIP_REGISTER_TEST_SUITE (TestCASESessionTest )
0 commit comments