From 53a7f9225aece77e600de2f08f1eeecae385120b Mon Sep 17 00:00:00 2001 From: Cecille Freeman Date: Thu, 22 Dec 2022 17:16:44 -0500 Subject: [PATCH 1/7] Add TC-ACE-1.5 yaml --- .../suites/certification/Test_TC_ACE_1_5.yaml | 183 ++++++ src/app/tests/suites/ciTests.json | 2 + .../chip-tool/zap-generated/test/Commands.h | 387 +++++++++++++ .../zap-generated/test/Commands.h | 537 ++++++++++++++++++ 4 files changed, 1109 insertions(+) create mode 100644 src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml new file mode 100644 index 00000000000000..d73b471ba3ae35 --- /dev/null +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml @@ -0,0 +1,183 @@ +# Copyright (c) 2021 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default + +name: 42.1.5. [TC-ACE-1.5] Multi-fabric + +config: + nodeId: 0x12344321 + cluster: "Access Control" + endpoint: 0 + payload: + type: char_string + defaultValue: "MT:-24J0AFN00KA0648G00" + +tests: + - label: "Wait for the commissioned device to be retrieved for TH1" + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH1 reads the fabric index" + cluster: "Operational Credentials" + command: "readAttribute" + attribute: "CurrentFabricIndex" + response: + saveAs: th1FabricIndex + + - label: "Open Commissioning Window from alpha" + cluster: "AdministratorCommissioning" + command: "OpenBasicCommissioningWindow" + timedInteractionTimeoutMs: 10000 + arguments: + values: + - name: "CommissioningTimeout" + value: 180 + + - label: "Commission from TH2" + identity: "beta" + cluster: "CommissionerCommands" + command: "PairWithCode" + arguments: + values: + - name: "nodeId" + value: nodeId + - name: "payload" + value: payload + + - label: "Wait for the commissioned device to be retrieved for TH2" + identity: beta + cluster: "DelayCommands" + command: "WaitForCommissionee" + arguments: + values: + - name: "nodeId" + value: nodeId + + - label: "TH2 reads the fabric index" + identity: "beta" + cluster: "Operational Credentials" + command: "readAttribute" + attribute: "CurrentFabricIndex" + response: + saveAs: th2FabricIndex + + - label: "TH1 writes ACL giving view privilge for descriptor cluster" + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + FabricIndex: th1FabricIndex, + Privilege: 5, # administer + AuthMode: 2, # case + Subjects: [ 112233 ], + Targets: + [ + { Cluster: 0x001f, Endpoint: 0, DeviceType: null } + ] + }, + { + FabricIndex: th1FabricIndex, + Privilege: 1, # view + AuthMode: 2, # case + Subjects: null, + Targets: + [ + { Cluster: 0x001d, Endpoint: 0, DeviceType: null } + ] + }, + ] + + - label: "TH2 writes ACL giving view privilge for basic cluster" + identity: beta + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + FabricIndex: th2FabricIndex, + Privilege: 5, # administer + AuthMode: 2, # case + Subjects: [ 112233 ], + Targets: + [ + { Cluster: 0x001f, Endpoint: 0, DeviceType: null } + ] + }, + { + FabricIndex: th2FabricIndex, + Privilege: 1, # view + AuthMode: 2, # case + Subjects: null, + Targets: + [ + { Cluster: 0x0028, Endpoint: 0, DeviceType: null } + ] + }, + ] + + - label: "TH1 reads descriptor cluster - expect SUCCESS" + command: "readAttribute" + cluster: "Descriptor" + attribute: "DeviceTypeList" + + - label: "TH1 reads basic cluster - expect UNSUPPORTED_ACCESS" + command: "readAttribute" + cluster: "Basic Information" + attribute: "VendorID" + response: + error: UNSUPPORTED_ACCESS + + - label: "TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS" + identity: "beta" + command: "readAttribute" + cluster: "Descriptor" + attribute: "DeviceTypeList" + response: + error: UNSUPPORTED_ACCESS + + - label: "TH2 reads basic cluster - expect SUCCESS" + identity: "beta" + command: "readAttribute" + cluster: "Basic Information" + attribute: "VendorID" + + - label: "TH1 resets ACL to default" + command: "writeAttribute" + attribute: "ACL" + arguments: + value: + [ + { + FabricIndex: 1, + Privilege: 5, # administer + AuthMode: 2, # case + Subjects: [ 112233 ], + Targets: null + } + ] + + - label: "TH1 sends RemoveFabric command for TH2" + cluster: "Operational Credentials" + command: "RemoveFabric" + arguments: + values: + - name: "FabricIndex" + value: th2FabricIndex \ No newline at end of file diff --git a/src/app/tests/suites/ciTests.json b/src/app/tests/suites/ciTests.json index 77542393e3a746..3e2dab5de48351 100644 --- a/src/app/tests/suites/ciTests.json +++ b/src/app/tests/suites/ciTests.json @@ -9,6 +9,7 @@ "Test_TC_ACL_2_7", "Test_TC_ACL_2_9" ], + "AccessControlEnforcement": ["Test_TC_ACE_1_5"], "BooleanState": ["Test_TC_BOOL_1_1", "Test_TC_BOOL_2_1"], "Binding": ["Test_TC_BIND_1_1"], "BridgedDeviceBasicInformation": [ @@ -269,6 +270,7 @@ ], "collection": [ "AccessControl", + "AccessControlEnforcement", "BooleanState", "BridgedDeviceBasicInformation", "Actions", diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index 4e0836a8e5318b..172e4b67f734e5 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -43,6 +43,7 @@ class TestList : public Command printf("Test_TC_ACL_2_4\n"); printf("Test_TC_ACL_2_7\n"); printf("Test_TC_ACL_2_9\n"); + printf("Test_TC_ACE_1_5\n"); printf("Test_TC_BOOL_1_1\n"); printf("Test_TC_BOOL_2_1\n"); printf("Test_TC_BRBINFO_1_1\n"); @@ -6083,6 +6084,391 @@ class Test_TC_ACL_2_9Suite : public TestCommand } }; +class Test_TC_ACE_1_5Suite : public TestCommand +{ +public: + Test_TC_ACE_1_5Suite(CredentialIssuerCommands * credsIssuerConfig) : TestCommand("Test_TC_ACE_1_5", 14, credsIssuerConfig) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("payload", &mPayload); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + + ~Test_TC_ACE_1_5Suite() {} + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mPayload; + chip::Optional mTimeout; + + uint8_t th1FabricIndex; + uint8_t th2FabricIndex; + + chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; } + + // + // Tests methods + // + + void OnResponse(const chip::app::StatusIB & status, chip::TLV::TLVReader * data) override + { + + // Allow yaml to access the current commissioner node id. + // Default to 0 (undefined node id) so we know if this isn't + // set correctly. + // Reset on every step in case it changed. + chip::NodeId commissionerNodeId = mCommissionerNodeId.ValueOr(0); + (void) commissionerNodeId; + + bool shouldContinue = false; + + switch (mTestIndex - 1) + { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + th1FabricIndex = value; + } + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + uint8_t value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + th2FabricIndex = value; + } + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::DataModel::DecodableList + value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + } + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::VendorId value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + } + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + { + chip::app::Clusters::OperationalCredentials::Commands::NOCResponse::DecodableType value; + VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); + } + break; + default: + LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); + } + + if (shouldContinue) + { + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + } + + CHIP_ERROR DoTestStep(uint16_t testIndex) override + { + using namespace chip::app::Clusters; + // Allow yaml to access the current commissioner node id. + // Default to 0 (undefined node id) so we know if this isn't + // set correctly. + // Reset on every step in case it changed. + chip::NodeId commissionerNodeId = mCommissionerNodeId.ValueOr(0); + (void) commissionerNodeId; + switch (testIndex) + { + case 0: { + LogStep(0, "Wait for the commissioned device to be retrieved for TH1"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityAlpha, value); + } + case 1: { + LogStep(1, "TH1 reads the fabric index"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); + } + case 2: { + LogStep(2, "Open Commissioning Window from alpha"); + ListFreer listFreer; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + value.commissioningTimeout = 180U; + return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, + AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + chip::Optional(10000), chip::NullOptional + + ); + } + case 3: { + LogStep(3, "Commission from TH2"); + ListFreer listFreer; + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:-24J0AFN00KA0648G00", 22); + return PairWithCode(kIdentityBeta, value); + } + case 4: { + LogStep(4, "Wait for the commissioned device to be retrieved for TH2"); + ListFreer listFreer; + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee(kIdentityBeta, value); + } + case 5: { + LogStep(5, "TH2 reads the fabric index"); + return ReadAttribute(kIdentityBeta, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); + } + case 6: { + LogStep(6, "TH1 writes ACL giving view privilge for descriptor cluster"); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 31UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 0U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[0].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[0].fabricIndex = th1FabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(1); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 29UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 0U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[1].fabricIndex = th1FabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 7: { + LogStep(7, "TH2 writes ACL giving view privilge for basic cluster"); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(2); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 31UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 0U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[0].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[0].fabricIndex = th2FabricIndex; + + listHolder_0->mList[1].privilege = + static_cast(1); + listHolder_0->mList[1].authMode = + static_cast(2); + listHolder_0->mList[1].subjects.SetNull(); + listHolder_0->mList[1].targets.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + + listHolder_3->mList[0].cluster.SetNonNull(); + listHolder_3->mList[0].cluster.Value() = 40UL; + listHolder_3->mList[0].endpoint.SetNonNull(); + listHolder_3->mList[0].endpoint.Value() = 0U; + listHolder_3->mList[0].deviceType.SetNull(); + + listHolder_0->mList[1].targets.Value() = + chip::app::DataModel::List(listHolder_3->mList, + 1); + } + listHolder_0->mList[1].fabricIndex = th2FabricIndex; + + value = chip::app::DataModel::List( + listHolder_0->mList, 2); + } + return WriteAttribute(kIdentityBeta, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 8: { + LogStep(8, "TH1 reads descriptor cluster - expect SUCCESS"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::DeviceTypeList::Id, true, + chip::NullOptional); + } + case 9: { + LogStep(9, "TH1 reads basic cluster - expect UNSUPPORTED_ACCESS"); + return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorID::Id, + true, chip::NullOptional); + } + case 10: { + LogStep(10, "TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS"); + return ReadAttribute(kIdentityBeta, GetEndpoint(0), Descriptor::Id, Descriptor::Attributes::DeviceTypeList::Id, true, + chip::NullOptional); + } + case 11: { + LogStep(11, "TH2 reads basic cluster - expect SUCCESS"); + return ReadAttribute(kIdentityBeta, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorID::Id, + true, chip::NullOptional); + } + case 12: { + LogStep(12, "TH1 resets ACL to default"); + ListFreer listFreer; + chip::app::DataModel::List value; + + { + auto * listHolder_0 = + new ListHolder(1); + listFreer.add(listHolder_0); + + listHolder_0->mList[0].privilege = + static_cast(5); + listHolder_0->mList[0].authMode = + static_cast(2); + listHolder_0->mList[0].subjects.SetNonNull(); + + { + auto * listHolder_3 = new ListHolder(1); + listFreer.add(listHolder_3); + listHolder_3->mList[0] = 112233ULL; + listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); + } + listHolder_0->mList[0].targets.SetNull(); + listHolder_0->mList[0].fabricIndex = 1U; + + value = chip::app::DataModel::List( + listHolder_0->mList, 1); + } + return WriteAttribute(kIdentityAlpha, GetEndpoint(0), AccessControl::Id, AccessControl::Attributes::Acl::Id, value, + chip::NullOptional, chip::NullOptional); + } + case 13: { + LogStep(13, "TH1 sends RemoveFabric command for TH2"); + ListFreer listFreer; + chip::app::Clusters::OperationalCredentials::Commands::RemoveFabric::Type value; + value.fabricIndex = th2FabricIndex; + return SendCommand(kIdentityAlpha, GetEndpoint(0), OperationalCredentials::Id, + OperationalCredentials::Commands::RemoveFabric::Id, value, chip::NullOptional + + ); + } + } + return CHIP_NO_ERROR; + } +}; + class Test_TC_BOOL_1_1Suite : public TestCommand { public: @@ -116802,6 +117188,7 @@ void registerCommandsTests(Commands & commands, CredentialIssuerCommands * creds make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 0bc213e8be346a..cf659362706dff 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -41,6 +41,7 @@ class TestList : public Command { printf("Test_TC_ACL_2_1\n"); printf("Test_TC_ACL_2_2\n"); printf("Test_TC_ACL_2_3\n"); + printf("Test_TC_ACE_1_5\n"); printf("Test_TC_BOOL_1_1\n"); printf("Test_TC_BOOL_2_1\n"); printf("Test_TC_BRBINFO_1_1\n"); @@ -3946,6 +3947,541 @@ class Test_TC_ACL_2_3 : public TestCommandBridge { } }; +class Test_TC_ACE_1_5 : public TestCommandBridge { +public: + // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced + Test_TC_ACE_1_5() + : TestCommandBridge("Test_TC_ACE_1_5") + , mTestIndex(0) + { + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("cluster", &mCluster); + AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); + AddArgument("payload", &mPayload); + AddArgument("timeout", 0, UINT16_MAX, &mTimeout); + } + // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) + + ~Test_TC_ACE_1_5() {} + + // Allow yaml to access the current commissioner node id. + // Default to 0 (undefined node id) so we know if this isn't + // set correctly. + // Reset on every step in case it changed. + chip::NodeId commissionerNodeId = mCommissionerNodeId.ValueOr(0); + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + + if (0 == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Start: Test_TC_ACE_1_5\n"); + } + + if (mTestCount == mTestIndex) { + ChipLogProgress(chipTool, " **** Test Complete: Test_TC_ACE_1_5\n"); + SetCommandExitStatus(CHIP_NO_ERROR); + return; + } + + Wait(); + + // Ensure we increment mTestIndex before we start running the relevant + // command. That way if we lose the timeslice after we send the message + // but before our function call returns, we won't end up with an + // incorrect mTestIndex value observed when we get the response. + switch (mTestIndex++) { + case 0: + ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved for TH1\n"); + err = TestWaitForTheCommissionedDeviceToBeRetrievedForTh1_0(); + break; + case 1: + ChipLogProgress(chipTool, " ***** Test Step 1 : TH1 reads the fabric index\n"); + err = TestTh1ReadsTheFabricIndex_1(); + break; + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : Open Commissioning Window from alpha\n"); + err = TestOpenCommissioningWindowFromAlpha_2(); + break; + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : Commission from TH2\n"); + err = TestCommissionFromTh2_3(); + break; + case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : Wait for the commissioned device to be retrieved for TH2\n"); + err = TestWaitForTheCommissionedDeviceToBeRetrievedForTh2_4(); + break; + case 5: + ChipLogProgress(chipTool, " ***** Test Step 5 : TH2 reads the fabric index\n"); + err = TestTh2ReadsTheFabricIndex_5(); + break; + case 6: + ChipLogProgress(chipTool, " ***** Test Step 6 : TH1 writes ACL giving view privilge for descriptor cluster\n"); + err = TestTh1WritesAclGivingViewPrivilgeForDescriptorCluster_6(); + break; + case 7: + ChipLogProgress(chipTool, " ***** Test Step 7 : TH2 writes ACL giving view privilge for basic cluster\n"); + err = TestTh2WritesAclGivingViewPrivilgeForBasicCluster_7(); + break; + case 8: + ChipLogProgress(chipTool, " ***** Test Step 8 : TH1 reads descriptor cluster - expect SUCCESS\n"); + err = TestTh1ReadsDescriptorClusterExpectSuccess_8(); + break; + case 9: + ChipLogProgress(chipTool, " ***** Test Step 9 : TH1 reads basic cluster - expect UNSUPPORTED_ACCESS\n"); + err = TestTh1ReadsBasicClusterExpectUnsupportedAccess_9(); + break; + case 10: + ChipLogProgress(chipTool, " ***** Test Step 10 : TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS\n"); + err = TestTh2ReadsDescriptorClusterExpectUnsupportedAccess_10(); + break; + case 11: + ChipLogProgress(chipTool, " ***** Test Step 11 : TH2 reads basic cluster - expect SUCCESS\n"); + err = TestTh2ReadsBasicClusterExpectSuccess_11(); + break; + case 12: + ChipLogProgress(chipTool, " ***** Test Step 12 : TH1 resets ACL to default\n"); + err = TestTh1ResetsAclToDefault_12(); + break; + case 13: + ChipLogProgress(chipTool, " ***** Test Step 13 : TH1 sends RemoveFabric command for TH2\n"); + err = TestTh1SendsRemoveFabricCommandForTh2_13(); + break; + } + + if (CHIP_NO_ERROR != err) { + ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); + SetCommandExitStatus(err); + } + } + + void OnStatusUpdate(const chip::app::StatusIB & status) override + { + switch (mTestIndex - 1) { + case 0: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 1: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 2: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 8: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 9: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + break; + case 10: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + case 13: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + break; + } + + // Go on to the next test. + ContinueOnChipMainThread(CHIP_NO_ERROR); + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mTimeout.ValueOr(kTimeoutInSeconds)); + } + +private: + std::atomic_uint16_t mTestIndex; + const uint16_t mTestCount = 14; + + chip::Optional mNodeId; + chip::Optional mCluster; + chip::Optional mEndpoint; + chip::Optional mPayload; + chip::Optional mTimeout; + + CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrievedForTh1_0() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee("alpha", value); + } + NSNumber * _Nonnull th1FabricIndex; + + CHIP_ERROR TestTh1ReadsTheFabricIndex_1() + { + + MTRBaseDevice * device = GetDevice("alpha"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterOperationalCredentials alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeCurrentFabricIndexWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH1 reads the fabric index Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + th1FabricIndex = value; + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestOpenCommissioningWindowFromAlpha_2() + { + + MTRBaseDevice * device = GetDevice("alpha"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterAdministratorCommissioning alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams alloc] init]; + params.commissioningTimeout = [NSNumber numberWithUnsignedShort:180U]; + [cluster openBasicCommissioningWindowWithParams:params + completion:^(NSError * _Nullable err) { + NSLog(@"Open Commissioning Window from alpha Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestCommissionFromTh2_3() + { + + chip::app::Clusters::CommissionerCommands::Commands::PairWithCode::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + value.payload = mPayload.HasValue() ? mPayload.Value() : chip::Span("MT:-24J0AFN00KA0648G00", 22); + return PairWithCode("beta", value); + } + + CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrievedForTh2_4() + { + + chip::app::Clusters::DelayCommands::Commands::WaitForCommissionee::Type value; + value.nodeId = mNodeId.HasValue() ? mNodeId.Value() : 305414945ULL; + return WaitForCommissionee("beta", value); + } + NSNumber * _Nonnull th2FabricIndex; + + CHIP_ERROR TestTh2ReadsTheFabricIndex_5() + { + + MTRBaseDevice * device = GetDevice("beta"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterOperationalCredentials alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeCurrentFabricIndexWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH2 reads the fabric index Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + { + th2FabricIndex = value; + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestTh1WritesAclGivingViewPrivilgeForDescriptorCluster_6() + { + + MTRBaseDevice * device = GetDevice("alpha"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterAccessControl alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id aclArgument; + { + NSMutableArray * temp_0 = [[NSMutableArray alloc] init]; + temp_0[0] = [[MTRAccessControlClusterAccessControlEntryStruct alloc] init]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).privilege = [NSNumber numberWithUnsignedChar:5U]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).authMode = [NSNumber numberWithUnsignedChar:2U]; + { + NSMutableArray * temp_3 = [[NSMutableArray alloc] init]; + temp_3[0] = [NSNumber numberWithUnsignedLongLong:112233ULL]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).subjects = temp_3; + } + { + NSMutableArray * temp_3 = [[NSMutableArray alloc] init]; + temp_3[0] = [[MTRAccessControlClusterTarget alloc] init]; + ((MTRAccessControlClusterTarget *) temp_3[0]).cluster = [NSNumber numberWithUnsignedInt:31UL]; + ((MTRAccessControlClusterTarget *) temp_3[0]).endpoint = [NSNumber numberWithUnsignedShort:0U]; + ((MTRAccessControlClusterTarget *) temp_3[0]).deviceType = nil; + + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).targets = temp_3; + } + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).fabricIndex = [th1FabricIndex copy]; + + temp_0[1] = [[MTRAccessControlClusterAccessControlEntryStruct alloc] init]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[1]).privilege = [NSNumber numberWithUnsignedChar:1U]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[1]).authMode = [NSNumber numberWithUnsignedChar:2U]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[1]).subjects = nil; + { + NSMutableArray * temp_3 = [[NSMutableArray alloc] init]; + temp_3[0] = [[MTRAccessControlClusterTarget alloc] init]; + ((MTRAccessControlClusterTarget *) temp_3[0]).cluster = [NSNumber numberWithUnsignedInt:29UL]; + ((MTRAccessControlClusterTarget *) temp_3[0]).endpoint = [NSNumber numberWithUnsignedShort:0U]; + ((MTRAccessControlClusterTarget *) temp_3[0]).deviceType = nil; + + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[1]).targets = temp_3; + } + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[1]).fabricIndex = [th1FabricIndex copy]; + + aclArgument = temp_0; + } + [cluster writeAttributeACLWithValue:aclArgument + completion:^(NSError * _Nullable err) { + NSLog(@"TH1 writes ACL giving view privilge for descriptor cluster Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestTh2WritesAclGivingViewPrivilgeForBasicCluster_7() + { + + MTRBaseDevice * device = GetDevice("beta"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterAccessControl alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id aclArgument; + { + NSMutableArray * temp_0 = [[NSMutableArray alloc] init]; + temp_0[0] = [[MTRAccessControlClusterAccessControlEntryStruct alloc] init]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).privilege = [NSNumber numberWithUnsignedChar:5U]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).authMode = [NSNumber numberWithUnsignedChar:2U]; + { + NSMutableArray * temp_3 = [[NSMutableArray alloc] init]; + temp_3[0] = [NSNumber numberWithUnsignedLongLong:112233ULL]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).subjects = temp_3; + } + { + NSMutableArray * temp_3 = [[NSMutableArray alloc] init]; + temp_3[0] = [[MTRAccessControlClusterTarget alloc] init]; + ((MTRAccessControlClusterTarget *) temp_3[0]).cluster = [NSNumber numberWithUnsignedInt:31UL]; + ((MTRAccessControlClusterTarget *) temp_3[0]).endpoint = [NSNumber numberWithUnsignedShort:0U]; + ((MTRAccessControlClusterTarget *) temp_3[0]).deviceType = nil; + + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).targets = temp_3; + } + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).fabricIndex = [th2FabricIndex copy]; + + temp_0[1] = [[MTRAccessControlClusterAccessControlEntryStruct alloc] init]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[1]).privilege = [NSNumber numberWithUnsignedChar:1U]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[1]).authMode = [NSNumber numberWithUnsignedChar:2U]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[1]).subjects = nil; + { + NSMutableArray * temp_3 = [[NSMutableArray alloc] init]; + temp_3[0] = [[MTRAccessControlClusterTarget alloc] init]; + ((MTRAccessControlClusterTarget *) temp_3[0]).cluster = [NSNumber numberWithUnsignedInt:40UL]; + ((MTRAccessControlClusterTarget *) temp_3[0]).endpoint = [NSNumber numberWithUnsignedShort:0U]; + ((MTRAccessControlClusterTarget *) temp_3[0]).deviceType = nil; + + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[1]).targets = temp_3; + } + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[1]).fabricIndex = [th2FabricIndex copy]; + + aclArgument = temp_0; + } + [cluster writeAttributeACLWithValue:aclArgument + completion:^(NSError * _Nullable err) { + NSLog(@"TH2 writes ACL giving view privilge for basic cluster Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestTh1ReadsDescriptorClusterExpectSuccess_8() + { + + MTRBaseDevice * device = GetDevice("alpha"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeDeviceTypeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH1 reads descriptor cluster - expect SUCCESS Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestTh1ReadsBasicClusterExpectUnsupportedAccess_9() + { + + MTRBaseDevice * device = GetDevice("alpha"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeVendorIDWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH1 reads basic cluster - expect UNSUPPORTED_ACCESS Error: %@", err); + + VerifyOrReturn(CheckValue("status", + err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] ? err.code : EMBER_ZCL_STATUS_FAILURE) : 0, + EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestTh2ReadsDescriptorClusterExpectUnsupportedAccess_10() + { + + MTRBaseDevice * device = GetDevice("beta"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterDescriptor alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeDeviceTypeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS Error: %@", err); + + VerifyOrReturn(CheckValue("status", + err ? ([err.domain isEqualToString:MTRInteractionErrorDomain] ? err.code : EMBER_ZCL_STATUS_FAILURE) : 0, + EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS)); + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestTh2ReadsBasicClusterExpectSuccess_11() + { + + MTRBaseDevice * device = GetDevice("beta"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeVendorIDWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"TH2 reads basic cluster - expect SUCCESS Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestTh1ResetsAclToDefault_12() + { + + MTRBaseDevice * device = GetDevice("alpha"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterAccessControl alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + id aclArgument; + { + NSMutableArray * temp_0 = [[NSMutableArray alloc] init]; + temp_0[0] = [[MTRAccessControlClusterAccessControlEntryStruct alloc] init]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).privilege = [NSNumber numberWithUnsignedChar:5U]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).authMode = [NSNumber numberWithUnsignedChar:2U]; + { + NSMutableArray * temp_3 = [[NSMutableArray alloc] init]; + temp_3[0] = [NSNumber numberWithUnsignedLongLong:112233ULL]; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).subjects = temp_3; + } + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).targets = nil; + ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).fabricIndex = [NSNumber numberWithUnsignedChar:1U]; + + aclArgument = temp_0; + } + [cluster writeAttributeACLWithValue:aclArgument + completion:^(NSError * _Nullable err) { + NSLog(@"TH1 resets ACL to default Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestTh1SendsRemoveFabricCommandForTh2_13() + { + + MTRBaseDevice * device = GetDevice("alpha"); + commissionerNodeId = mCommissionerNodeId.ValueOr(0); + __auto_type * cluster = [[MTRBaseClusterOperationalCredentials alloc] initWithDevice:device + endpointID:@(0) + queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + __auto_type * params = [[MTROperationalCredentialsClusterRemoveFabricParams alloc] init]; + params.fabricIndex = [th2FabricIndex copy]; + [cluster removeFabricWithParams:params + completion:^( + MTROperationalCredentialsClusterNOCResponseParams * _Nullable values, NSError * _Nullable err) { + NSLog(@"TH1 sends RemoveFabric command for TH2 Error: %@", err); + + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } +}; + class Test_TC_BOOL_1_1 : public TestCommandBridge { public: // NOLINTBEGIN(clang-analyzer-nullability.NullPassedToNonnull): Test constructor nullability not enforced @@ -134792,6 +135328,7 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), + make_unique(), make_unique(), make_unique(), make_unique(), From 9df20bcfc98084dafb1320fa904eae9d30f86a3d Mon Sep 17 00:00:00 2001 From: C Freeman Date: Thu, 19 Jan 2023 09:08:33 -0500 Subject: [PATCH 2/7] Update src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml Co-authored-by: Boris Zbarsky --- src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml index d73b471ba3ae35..fed8cb9dad36b9 100644 --- a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml @@ -76,7 +76,7 @@ tests: response: saveAs: th2FabricIndex - - label: "TH1 writes ACL giving view privilge for descriptor cluster" + - label: "TH1 writes ACL giving view privilege for descriptor cluster" command: "writeAttribute" attribute: "ACL" arguments: From abb843e5a2a59dd1d071eb9c68d7028ccc37f909 Mon Sep 17 00:00:00 2001 From: Cecille Freeman Date: Fri, 20 Jan 2023 13:45:40 -0500 Subject: [PATCH 3/7] Fix commissioner node id --- src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml | 6 +++--- zzz_generated/chip-tool/zap-generated/test/Commands.h | 6 +++--- .../darwin-framework-tool/zap-generated/test/Commands.h | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml index fed8cb9dad36b9..3816d2324a66b5 100644 --- a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml @@ -86,7 +86,7 @@ tests: FabricIndex: th1FabricIndex, Privilege: 5, # administer AuthMode: 2, # case - Subjects: [ 112233 ], + Subjects: [ commissionerNodeId ], Targets: [ { Cluster: 0x001f, Endpoint: 0, DeviceType: null } @@ -115,7 +115,7 @@ tests: FabricIndex: th2FabricIndex, Privilege: 5, # administer AuthMode: 2, # case - Subjects: [ 112233 ], + Subjects: [ commissionerNodeId ], Targets: [ { Cluster: 0x001f, Endpoint: 0, DeviceType: null } @@ -169,7 +169,7 @@ tests: FabricIndex: 1, Privilege: 5, # administer AuthMode: 2, # case - Subjects: [ 112233 ], + Subjects: [ commissionerNodeId ], Targets: null } ] diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index 172e4b67f734e5..25c176d601f6eb 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -6284,7 +6284,7 @@ class Test_TC_ACE_1_5Suite : public TestCommand { auto * listHolder_3 = new ListHolder(1); listFreer.add(listHolder_3); - listHolder_3->mList[0] = 112233ULL; + listHolder_3->mList[0] = commissionerNodeId; listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); } listHolder_0->mList[0].targets.SetNonNull(); @@ -6353,7 +6353,7 @@ class Test_TC_ACE_1_5Suite : public TestCommand { auto * listHolder_3 = new ListHolder(1); listFreer.add(listHolder_3); - listHolder_3->mList[0] = 112233ULL; + listHolder_3->mList[0] = commissionerNodeId; listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); } listHolder_0->mList[0].targets.SetNonNull(); @@ -6442,7 +6442,7 @@ class Test_TC_ACE_1_5Suite : public TestCommand { auto * listHolder_3 = new ListHolder(1); listFreer.add(listHolder_3); - listHolder_3->mList[0] = 112233ULL; + listHolder_3->mList[0] = commissionerNodeId; listHolder_0->mList[0].subjects.Value() = chip::app::DataModel::List(listHolder_3->mList, 1); } listHolder_0->mList[0].targets.SetNull(); diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index cf659362706dff..add8d1312f1164 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -4240,7 +4240,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).authMode = [NSNumber numberWithUnsignedChar:2U]; { NSMutableArray * temp_3 = [[NSMutableArray alloc] init]; - temp_3[0] = [NSNumber numberWithUnsignedLongLong:112233ULL]; + temp_3[0] = [NSNumber numberWithUnsignedLongLong:commissionerNodeId]; ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).subjects = temp_3; } { @@ -4299,7 +4299,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).authMode = [NSNumber numberWithUnsignedChar:2U]; { NSMutableArray * temp_3 = [[NSMutableArray alloc] init]; - temp_3[0] = [NSNumber numberWithUnsignedLongLong:112233ULL]; + temp_3[0] = [NSNumber numberWithUnsignedLongLong:commissionerNodeId]; ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).subjects = temp_3; } { @@ -4436,7 +4436,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).authMode = [NSNumber numberWithUnsignedChar:2U]; { NSMutableArray * temp_3 = [[NSMutableArray alloc] init]; - temp_3[0] = [NSNumber numberWithUnsignedLongLong:112233ULL]; + temp_3[0] = [NSNumber numberWithUnsignedLongLong:commissionerNodeId]; ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).subjects = temp_3; } ((MTRAccessControlClusterAccessControlEntryStruct *) temp_0[0]).targets = nil; From a6b20c467ba77fc874eb625b1910c3f917b3dc98 Mon Sep 17 00:00:00 2001 From: Cecille Freeman Date: Fri, 20 Jan 2023 13:49:35 -0500 Subject: [PATCH 4/7] Zap for boris' change. --- zzz_generated/chip-tool/zap-generated/test/Commands.h | 2 +- .../darwin-framework-tool/zap-generated/test/Commands.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index 25c176d601f6eb..1838b006fc10ac 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -6266,7 +6266,7 @@ class Test_TC_ACE_1_5Suite : public TestCommand OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); } case 6: { - LogStep(6, "TH1 writes ACL giving view privilge for descriptor cluster"); + LogStep(6, "TH1 writes ACL giving view privilege for descriptor cluster"); ListFreer listFreer; chip::app::DataModel::List value; diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index add8d1312f1164..7540d06ef86777 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -4018,8 +4018,8 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { err = TestTh2ReadsTheFabricIndex_5(); break; case 6: - ChipLogProgress(chipTool, " ***** Test Step 6 : TH1 writes ACL giving view privilge for descriptor cluster\n"); - err = TestTh1WritesAclGivingViewPrivilgeForDescriptorCluster_6(); + ChipLogProgress(chipTool, " ***** Test Step 6 : TH1 writes ACL giving view privilege for descriptor cluster\n"); + err = TestTh1WritesAclGivingViewPrivilegeForDescriptorCluster_6(); break; case 7: ChipLogProgress(chipTool, " ***** Test Step 7 : TH2 writes ACL giving view privilge for basic cluster\n"); @@ -4224,7 +4224,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { return CHIP_NO_ERROR; } - CHIP_ERROR TestTh1WritesAclGivingViewPrivilgeForDescriptorCluster_6() + CHIP_ERROR TestTh1WritesAclGivingViewPrivilegeForDescriptorCluster_6() { MTRBaseDevice * device = GetDevice("alpha"); @@ -4273,7 +4273,7 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { } [cluster writeAttributeACLWithValue:aclArgument completion:^(NSError * _Nullable err) { - NSLog(@"TH1 writes ACL giving view privilge for descriptor cluster Error: %@", err); + NSLog(@"TH1 writes ACL giving view privilege for descriptor cluster Error: %@", err); VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); From 2f85c303c6d3e275a7cdbc468ea4db2affbc005d Mon Sep 17 00:00:00 2001 From: Cecille Freeman Date: Tue, 24 Jan 2023 17:14:26 -0500 Subject: [PATCH 5/7] Name changes are fun, but make zap mad. --- src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml index 3816d2324a66b5..5c08a8a09fbc9c 100644 --- a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml @@ -40,7 +40,7 @@ tests: saveAs: th1FabricIndex - label: "Open Commissioning Window from alpha" - cluster: "AdministratorCommissioning" + cluster: "Administrator Commissioning" command: "OpenBasicCommissioningWindow" timedInteractionTimeoutMs: 10000 arguments: From 904f217657a04592ab080354b6f799d4949d0812 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Wed, 25 Jan 2023 20:39:12 +0000 Subject: [PATCH 6/7] Restyled by whitespace --- src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml index 5c08a8a09fbc9c..f97fb0cda729bf 100644 --- a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml @@ -180,4 +180,4 @@ tests: arguments: values: - name: "FabricIndex" - value: th2FabricIndex \ No newline at end of file + value: th2FabricIndex From 8f13fb876f7d834317a4c743403872a108d09474 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Wed, 25 Jan 2023 20:39:20 +0000 Subject: [PATCH 7/7] Restyled by prettier-yaml --- .../suites/certification/Test_TC_ACE_1_5.yaml | 45 +++++++------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml index f97fb0cda729bf..f013471c0f6386 100644 --- a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml @@ -80,17 +80,14 @@ tests: command: "writeAttribute" attribute: "ACL" arguments: - value: - [ + value: [ { FabricIndex: th1FabricIndex, Privilege: 5, # administer AuthMode: 2, # case - Subjects: [ commissionerNodeId ], + Subjects: [commissionerNodeId], Targets: - [ - { Cluster: 0x001f, Endpoint: 0, DeviceType: null } - ] + [{ Cluster: 0x001f, Endpoint: 0, DeviceType: null }], }, { FabricIndex: th1FabricIndex, @@ -98,28 +95,23 @@ tests: AuthMode: 2, # case Subjects: null, Targets: - [ - { Cluster: 0x001d, Endpoint: 0, DeviceType: null } - ] + [{ Cluster: 0x001d, Endpoint: 0, DeviceType: null }], }, - ] + ] - label: "TH2 writes ACL giving view privilge for basic cluster" identity: beta command: "writeAttribute" attribute: "ACL" arguments: - value: - [ + value: [ { FabricIndex: th2FabricIndex, Privilege: 5, # administer AuthMode: 2, # case - Subjects: [ commissionerNodeId ], + Subjects: [commissionerNodeId], Targets: - [ - { Cluster: 0x001f, Endpoint: 0, DeviceType: null } - ] + [{ Cluster: 0x001f, Endpoint: 0, DeviceType: null }], }, { FabricIndex: th2FabricIndex, @@ -127,11 +119,9 @@ tests: AuthMode: 2, # case Subjects: null, Targets: - [ - { Cluster: 0x0028, Endpoint: 0, DeviceType: null } - ] + [{ Cluster: 0x0028, Endpoint: 0, DeviceType: null }], }, - ] + ] - label: "TH1 reads descriptor cluster - expect SUCCESS" command: "readAttribute" @@ -143,7 +133,7 @@ tests: cluster: "Basic Information" attribute: "VendorID" response: - error: UNSUPPORTED_ACCESS + error: UNSUPPORTED_ACCESS - label: "TH2 reads descriptor cluster - expect UNSUPPORTED_ACCESS" identity: "beta" @@ -151,7 +141,7 @@ tests: cluster: "Descriptor" attribute: "DeviceTypeList" response: - error: UNSUPPORTED_ACCESS + error: UNSUPPORTED_ACCESS - label: "TH2 reads basic cluster - expect SUCCESS" identity: "beta" @@ -163,16 +153,15 @@ tests: command: "writeAttribute" attribute: "ACL" arguments: - value: - [ + value: [ { FabricIndex: 1, Privilege: 5, # administer AuthMode: 2, # case - Subjects: [ commissionerNodeId ], - Targets: null - } - ] + Subjects: [commissionerNodeId], + Targets: null, + }, + ] - label: "TH1 sends RemoveFabric command for TH2" cluster: "Operational Credentials"