3 * Copyright (c) 2020 Project CHIP Authors
4 * Copyright (c) 2016-2017 Nest Labs, Inc.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 * This file implements a process to effect a functional test for
23 * the CHIP Core library error string support interfaces.
27 #ifndef __STDC_FORMAT_MACROS
28 #define __STDC_FORMAT_MACROS
31 #ifndef __STDC_LIMIT_MACROS
32 #define __STDC_LIMIT_MACROS
39 #include <core/CHIPError.h>
40 #include <support/ErrorStr.h>
41 #include <support/UnitTestRegistration.h>
43 #include <nlunit-test.h>
50 static int32_t sContext[] =
52 CHIP_ERROR_TOO_MANY_CONNECTIONS,
53 CHIP_ERROR_SENDING_BLOCKED,
54 CHIP_ERROR_CONNECTION_ABORTED,
55 CHIP_ERROR_INCORRECT_STATE,
56 CHIP_ERROR_MESSAGE_TOO_LONG,
57 CHIP_ERROR_UNSUPPORTED_EXCHANGE_VERSION,
58 CHIP_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS,
59 CHIP_ERROR_NO_UNSOLICITED_MESSAGE_HANDLER,
60 CHIP_ERROR_NO_CONNECTION_HANDLER,
61 CHIP_ERROR_TOO_MANY_PEER_NODES,
63 CHIP_ERROR_NO_MESSAGE_HANDLER,
64 CHIP_ERROR_MESSAGE_INCOMPLETE,
65 CHIP_ERROR_DATA_NOT_ALIGNED,
66 CHIP_ERROR_UNKNOWN_KEY_TYPE,
67 CHIP_ERROR_KEY_NOT_FOUND,
68 CHIP_ERROR_WRONG_ENCRYPTION_TYPE,
69 CHIP_ERROR_TOO_MANY_KEYS,
70 CHIP_ERROR_INTEGRITY_CHECK_FAILED,
71 CHIP_ERROR_INVALID_SIGNATURE,
72 CHIP_ERROR_UNSUPPORTED_MESSAGE_VERSION,
73 CHIP_ERROR_UNSUPPORTED_ENCRYPTION_TYPE,
74 CHIP_ERROR_UNSUPPORTED_SIGNATURE_TYPE,
75 CHIP_ERROR_INVALID_MESSAGE_LENGTH,
76 CHIP_ERROR_BUFFER_TOO_SMALL,
77 CHIP_ERROR_DUPLICATE_KEY_ID,
78 CHIP_ERROR_WRONG_KEY_TYPE,
79 CHIP_ERROR_WELL_UNINITIALIZED,
80 CHIP_ERROR_WELL_EMPTY,
81 CHIP_ERROR_INVALID_STRING_LENGTH,
82 CHIP_ERROR_INVALID_LIST_LENGTH,
83 CHIP_ERROR_INVALID_INTEGRITY_TYPE,
85 CHIP_ERROR_TLV_UNDERRUN,
86 CHIP_ERROR_INVALID_TLV_ELEMENT,
87 CHIP_ERROR_INVALID_TLV_TAG,
88 CHIP_ERROR_UNKNOWN_IMPLICIT_TLV_TAG,
89 CHIP_ERROR_WRONG_TLV_TYPE,
90 CHIP_ERROR_TLV_CONTAINER_OPEN,
91 CHIP_ERROR_INVALID_TRANSFER_MODE,
92 CHIP_ERROR_INVALID_PROFILE_ID,
93 CHIP_ERROR_INVALID_MESSAGE_TYPE,
94 CHIP_ERROR_UNEXPECTED_TLV_ELEMENT,
95 CHIP_ERROR_STATUS_REPORT_RECEIVED,
96 CHIP_ERROR_NOT_IMPLEMENTED,
97 CHIP_ERROR_INVALID_ADDRESS,
98 CHIP_ERROR_INVALID_ARGUMENT,
99 CHIP_ERROR_INVALID_PATH_LIST,
100 CHIP_ERROR_INVALID_DATA_LIST,
102 CHIP_ERROR_INVALID_DEVICE_DESCRIPTOR,
103 CHIP_ERROR_UNSUPPORTED_DEVICE_DESCRIPTOR_VERSION,
105 CHIP_ERROR_RATE_LIMIT_EXCEEDED,
106 CHIP_ERROR_SECURITY_MANAGER_BUSY,
107 CHIP_ERROR_INVALID_PASE_PARAMETER,
108 CHIP_ERROR_PASE_SUPPORTS_ONLY_CONFIG1,
109 CHIP_ERROR_KEY_CONFIRMATION_FAILED,
110 CHIP_ERROR_INVALID_USE_OF_SESSION_KEY,
111 CHIP_ERROR_CONNECTION_CLOSED_UNEXPECTEDLY,
112 CHIP_ERROR_MISSING_TLV_ELEMENT,
113 CHIP_ERROR_RANDOM_DATA_UNAVAILABLE,
114 CHIP_ERROR_UNSUPPORTED_HOST_PORT_ELEMENT,
115 CHIP_ERROR_INVALID_HOST_SUFFIX_INDEX,
116 CHIP_ERROR_HOST_PORT_LIST_EMPTY,
117 CHIP_ERROR_UNSUPPORTED_AUTH_MODE,
118 CHIP_ERROR_INVALID_SERVICE_EP,
119 CHIP_ERROR_INVALID_DIRECTORY_ENTRY_TYPE,
120 CHIP_ERROR_FORCED_RESET,
121 CHIP_ERROR_NO_ENDPOINT,
122 CHIP_ERROR_INVALID_DESTINATION_NODE_ID,
123 CHIP_ERROR_NOT_CONNECTED,
124 CHIP_ERROR_NO_SW_UPDATE_AVAILABLE,
125 CHIP_ERROR_CA_CERT_NOT_FOUND,
126 CHIP_ERROR_CERT_PATH_LEN_CONSTRAINT_EXCEEDED,
127 CHIP_ERROR_CERT_PATH_TOO_LONG,
128 CHIP_ERROR_CERT_USAGE_NOT_ALLOWED,
129 CHIP_ERROR_CERT_EXPIRED,
130 CHIP_ERROR_CERT_NOT_VALID_YET,
131 CHIP_ERROR_UNSUPPORTED_CERT_FORMAT,
132 CHIP_ERROR_UNSUPPORTED_ELLIPTIC_CURVE,
134 CHIP_ERROR_CERT_NOT_FOUND,
135 CHIP_ERROR_INVALID_CASE_PARAMETER,
136 CHIP_ERROR_UNSUPPORTED_CASE_CONFIGURATION,
137 CHIP_ERROR_CERT_LOAD_FAILED,
138 CHIP_ERROR_CERT_NOT_TRUSTED,
139 CHIP_ERROR_INVALID_ACCESS_TOKEN,
140 CHIP_ERROR_WRONG_CERT_SUBJECT,
141 CHIP_ERROR_WRONG_CERTIFICATE_SUBJECT,
142 CHIP_ERROR_INVALID_PROVISIONING_BUNDLE,
143 CHIP_ERROR_PROVISIONING_BUNDLE_DECRYPTION_ERROR,
144 CHIP_ERROR_WRONG_NODE_ID,
145 CHIP_ERROR_CONN_ACCEPTED_ON_WRONG_PORT,
146 CHIP_ERROR_CALLBACK_REPLACED,
147 CHIP_ERROR_NO_CASE_AUTH_DELEGATE,
148 CHIP_ERROR_DEVICE_LOCATE_TIMEOUT,
149 CHIP_ERROR_DEVICE_CONNECT_TIMEOUT,
150 CHIP_ERROR_DEVICE_AUTH_TIMEOUT,
151 CHIP_ERROR_MESSAGE_NOT_ACKNOWLEDGED,
152 CHIP_ERROR_RETRANS_TABLE_FULL,
153 CHIP_ERROR_INVALID_ACK_ID,
154 CHIP_ERROR_SEND_THROTTLED,
155 CHIP_ERROR_WRONG_MSG_VERSION_FOR_EXCHANGE,
156 CHIP_ERROR_TRANSACTION_CANCELED,
157 CHIP_ERROR_LISTENER_ALREADY_STARTED,
158 CHIP_ERROR_LISTENER_ALREADY_STOPPED,
159 CHIP_ERROR_UNKNOWN_TOPIC,
160 CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
161 CHIP_ERROR_PASE_RECONFIGURE_REQUIRED,
162 CHIP_ERROR_INVALID_PASE_CONFIGURATION,
163 CHIP_ERROR_NO_COMMON_PASE_CONFIGURATIONS,
164 CHIP_ERROR_UNSOLICITED_MSG_NO_ORIGINATOR,
165 CHIP_ERROR_INVALID_FABRIC_ID,
166 CHIP_ERROR_DRBG_ENTROPY_SOURCE_FAILED,
167 CHIP_ERROR_TLV_TAG_NOT_FOUND,
168 CHIP_ERROR_INVALID_TOKENPAIRINGBUNDLE,
169 CHIP_ERROR_UNSUPPORTED_TOKENPAIRINGBUNDLE_VERSION,
170 CHIP_ERROR_NO_TAKE_AUTH_DELEGATE,
171 CHIP_ERROR_TAKE_RECONFIGURE_REQUIRED,
172 CHIP_ERROR_TAKE_REAUTH_POSSIBLE,
173 CHIP_ERROR_INVALID_TAKE_PARAMETER,
174 CHIP_ERROR_UNSUPPORTED_TAKE_CONFIGURATION,
175 CHIP_ERROR_TAKE_TOKEN_IDENTIFICATION_FAILED,
176 CHIP_ERROR_KEY_NOT_FOUND_FROM_PEER,
177 CHIP_ERROR_WRONG_ENCRYPTION_TYPE_FROM_PEER,
178 CHIP_ERROR_UNKNOWN_KEY_TYPE_FROM_PEER,
179 CHIP_ERROR_INVALID_USE_OF_SESSION_KEY_FROM_PEER,
180 CHIP_ERROR_UNSUPPORTED_ENCRYPTION_TYPE_FROM_PEER,
181 CHIP_ERROR_INTERNAL_KEY_ERROR_FROM_PEER,
182 CHIP_ERROR_INVALID_KEY_ID,
183 CHIP_ERROR_INVALID_TIME,
184 CHIP_ERROR_LOCKING_FAILURE,
185 CHIP_ERROR_UNSUPPORTED_PASSCODE_CONFIG,
186 CHIP_ERROR_PASSCODE_AUTHENTICATION_FAILED,
187 CHIP_ERROR_PASSCODE_FINGERPRINT_FAILED,
188 CHIP_ERROR_SERIALIZATION_ELEMENT_NULL,
189 CHIP_ERROR_WRONG_CERT_SIGNATURE_ALGORITHM,
190 CHIP_ERROR_WRONG_CHIP_SIGNATURE_ALGORITHM,
191 CHIP_ERROR_SCHEMA_MISMATCH,
192 CHIP_ERROR_INVALID_INTEGER_VALUE,
193 CHIP_ERROR_CASE_RECONFIG_REQUIRED,
194 CHIP_ERROR_TOO_MANY_CASE_RECONFIGURATIONS,
195 CHIP_ERROR_BAD_REQUEST,
196 CHIP_ERROR_INVALID_MESSAGE_FLAG,
197 CHIP_ERROR_KEY_EXPORT_RECONFIGURE_REQUIRED,
198 CHIP_ERROR_INVALID_KEY_EXPORT_CONFIGURATION,
199 CHIP_ERROR_NO_COMMON_KEY_EXPORT_CONFIGURATIONS,
200 CHIP_ERROR_NO_KEY_EXPORT_DELEGATE,
201 CHIP_ERROR_UNAUTHORIZED_KEY_EXPORT_REQUEST,
202 CHIP_ERROR_UNAUTHORIZED_KEY_EXPORT_RESPONSE,
203 CHIP_ERROR_EXPORTED_KEY_AUTHENTICATION_FAILED,
204 CHIP_ERROR_TOO_MANY_SHARED_SESSION_END_NODES,
205 CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_DATA_ELEMENT,
206 CHIP_ERROR_WRONG_CERT_TYPE,
207 CHIP_ERROR_DEFAULT_EVENT_HANDLER_NOT_CALLED,
208 CHIP_ERROR_PERSISTED_STORAGE_FAILED,
209 CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND,
210 CHIP_ERROR_PROFILE_STRING_CONTEXT_ALREADY_REGISTERED,
211 CHIP_ERROR_PROFILE_STRING_CONTEXT_NOT_REGISTERED,
212 CHIP_ERROR_INCOMPATIBLE_SCHEMA_VERSION,
213 CHIP_ERROR_MISMATCH_UPDATE_REQUIRED_VERSION,
214 CHIP_ERROR_ACCESS_DENIED,
215 CHIP_ERROR_UNKNOWN_RESOURCE_ID,
216 CHIP_ERROR_VERSION_MISMATCH,
217 CHIP_ERROR_UNSUPPORTED_THREAD_NETWORK_CREATE,
218 CHIP_ERROR_INCONSISTENT_CONDITIONALITY,
219 CHIP_ERROR_LOCAL_DATA_INCONSISTENT,
221 CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH,
222 CHIP_ERROR_IM_MALFORMED_EVENT_PATH,
223 CHIP_ERROR_IM_MALFORMED_COMMAND_PATH,
224 CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_STATUS_ELEMENT,
225 CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT,
226 CHIP_ERROR_IM_MALFORMED_EVENT_DATA_ELEMENT,
227 CHIP_ERROR_IM_MALFORMED_STATUS_CODE,
228 CHIP_ERROR_PEER_NODE_NOT_FOUND,
232 static void CheckCoreErrorStr(nlTestSuite * inSuite, void * inContext)
234 // Register the layer error formatter
236 RegisterCHIPLayerErrorFormatter();
238 // For each defined error...
239 for (int err : sContext)
241 const char * errStr = ErrorStr(err);
242 char expectedText[9];
244 // Assert that the error string contains the error number in hex.
245 snprintf(expectedText, sizeof(expectedText), "%08" PRIX32, err);
246 NL_TEST_ASSERT(inSuite, (strstr(errStr, expectedText) != nullptr));
248 #if !CHIP_CONFIG_SHORT_ERROR_STR
249 // Assert that the error string contains a description, which is signaled
250 // by a presence of a colon proceeding the description.
251 NL_TEST_ASSERT(inSuite, (strchr(errStr, ':') != nullptr));
252 #endif // !CHIP_CONFIG_SHORT_ERROR_STR
257 * Test Suite. It lists all the test functions.
261 static const nlTest sTests[] =
263 NL_TEST_DEF("CoreErrorStr", CheckCoreErrorStr),
269 int TestCHIPErrorStr(void)
272 nlTestSuite theSuite =
274 "Core-Error-Strings",
281 // Run test suit againt one context.
282 nlTestRunner(&theSuite, &sContext);
284 return nlTestRunnerStats(&theSuite);
287 CHIP_REGISTER_TEST_SUITE(TestCHIPErrorStr)