Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / src / lib / core / tests / TestCHIPErrorStr.cpp
1 /*
2  *
3  *    Copyright (c) 2020 Project CHIP Authors
4  *    Copyright (c) 2016-2017 Nest Labs, Inc.
5  *    All rights reserved.
6  *
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
10  *
11  *        http://www.apache.org/licenses/LICENSE-2.0
12  *
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.
18  */
19
20 /**
21  *    @file
22  *      This file implements a process to effect a functional test for
23  *      the CHIP Core library error string support interfaces.
24  *
25  */
26
27 #ifndef __STDC_FORMAT_MACROS
28 #define __STDC_FORMAT_MACROS
29 #endif
30
31 #ifndef __STDC_LIMIT_MACROS
32 #define __STDC_LIMIT_MACROS
33 #endif
34
35 #include <inttypes.h>
36 #include <stdint.h>
37 #include <string.h>
38
39 #include <core/CHIPError.h>
40 #include <support/ErrorStr.h>
41 #include <support/UnitTestRegistration.h>
42
43 #include <nlunit-test.h>
44
45 using namespace chip;
46
47 // Test input data.
48
49 // clang-format off
50 static int32_t sContext[] =
51 {
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,
62     CHIP_ERROR_NO_MEMORY,
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,
84     CHIP_END_OF_TLV,
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,
101     CHIP_ERROR_TIMEOUT,
102     CHIP_ERROR_INVALID_DEVICE_DESCRIPTOR,
103     CHIP_ERROR_UNSUPPORTED_DEVICE_DESCRIPTOR_VERSION,
104     CHIP_END_OF_INPUT,
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,
133     CHIP_CERT_NOT_USED,
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,
220     CHIP_EVENT_ID_FOUND,
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,
229 };
230 // clang-format on
231
232 static void CheckCoreErrorStr(nlTestSuite * inSuite, void * inContext)
233 {
234     // Register the layer error formatter
235
236     RegisterCHIPLayerErrorFormatter();
237
238     // For each defined error...
239     for (int err : sContext)
240     {
241         const char * errStr = ErrorStr(err);
242         char expectedText[9];
243
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));
247
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
253     }
254 }
255
256 /**
257  *   Test Suite. It lists all the test functions.
258  */
259
260 // clang-format off
261 static const nlTest sTests[] =
262 {
263     NL_TEST_DEF("CoreErrorStr", CheckCoreErrorStr),
264
265     NL_TEST_SENTINEL()
266 };
267 // clang-format on
268
269 int TestCHIPErrorStr(void)
270 {
271     // clang-format off
272     nlTestSuite theSuite =
273         {
274         "Core-Error-Strings",
275         &sTests[0],
276         nullptr,
277         nullptr
278     };
279     // clang-format on
280
281     // Run test suit againt one context.
282     nlTestRunner(&theSuite, &sContext);
283
284     return nlTestRunnerStats(&theSuite);
285 }
286
287 CHIP_REGISTER_TEST_SUITE(TestCHIPErrorStr)