@@ -59,6 +59,8 @@ constexpr NodeId kTestNodeId = 0xFFFF'1234'ABCD'4321;
59
59
60
60
constexpr EndpointId kEndpointIdThatIsMissing = kMockEndpointMin - 1 ;
61
61
62
+ constexpr AttributeId kReadOnlyAttributeId = 0x5001 ;
63
+
62
64
static_assert (kEndpointIdThatIsMissing != kInvalidEndpointId );
63
65
static_assert (kEndpointIdThatIsMissing != kMockEndpoint1 );
64
66
static_assert (kEndpointIdThatIsMissing != kMockEndpoint2 );
@@ -190,6 +192,11 @@ const MockNodeConfig gTestNodeConfig({
190
192
}),
191
193
MockClusterConfig (MockClusterId (3 ), {
192
194
ClusterRevision::Id, FeatureMap::Id,
195
+ MockAttributeConfig (
196
+ kReadOnlyAttributeId ,
197
+ ZCL_INT32U_ATTRIBUTE_TYPE,
198
+ ATTRIBUTE_MASK_NULLABLE // NOTE: explicltly NOT ATTRIBUTE_MASK_WRITABLE
199
+ )
193
200
}),
194
201
MockClusterConfig (MockClusterId (4 ), {
195
202
ClusterRevision::Id,
@@ -809,9 +816,22 @@ TEST(TestCodegenModelViaMocks, GetAttributeInfo)
809
816
ASSERT_TRUE (info.has_value ());
810
817
EXPECT_FALSE (info->flags .Has (AttributeQualityFlags::kListAttribute )); // NOLINT(bugprone-unchecked-optional-access)
811
818
819
+ // Mocks always set everything as R/W with administrative privileges
820
+ EXPECT_EQ (info->readPrivilege , chip::Access::Privilege::kAdminister ); // NOLINT(bugprone-unchecked-optional-access)
821
+ EXPECT_EQ (info->writePrivilege , chip::Access::Privilege::kAdminister ); // NOLINT(bugprone-unchecked-optional-access)
822
+
812
823
info = model.GetAttributeInfo (ConcreteAttributePath (kMockEndpoint2 , MockClusterId (2 ), MockAttributeId (2 )));
813
824
ASSERT_TRUE (info.has_value ());
814
- EXPECT_TRUE (info->flags .Has (AttributeQualityFlags::kListAttribute )); // NOLINT(bugprone-unchecked-optional-access)
825
+ EXPECT_TRUE (info->flags .Has (AttributeQualityFlags::kListAttribute )); // NOLINT(bugprone-unchecked-optional-access)
826
+ EXPECT_EQ (info->readPrivilege , chip::Access::Privilege::kAdminister ); // NOLINT(bugprone-unchecked-optional-access)
827
+ EXPECT_EQ (info->writePrivilege , chip::Access::Privilege::kAdminister ); // NOLINT(bugprone-unchecked-optional-access)
828
+
829
+ // test a read-only attribute, which will not have a write privilege
830
+ info = model.GetAttributeInfo (ConcreteAttributePath (kMockEndpoint3 , MockClusterId (3 ), kReadOnlyAttributeId ));
831
+ ASSERT_TRUE (info.has_value ());
832
+ EXPECT_FALSE (info->flags .Has (AttributeQualityFlags::kListAttribute )); // NOLINT(bugprone-unchecked-optional-access)
833
+ EXPECT_EQ (info->readPrivilege , chip::Access::Privilege::kAdminister ); // NOLINT(bugprone-unchecked-optional-access)
834
+ EXPECT_FALSE (info->writePrivilege .has_value ()); // NOLINT(bugprone-unchecked-optional-access)
815
835
}
816
836
817
837
// global attributes are EXPLICITLY not supported
0 commit comments