blob: 1ea3c8834897e50ea663dee751e80a2c3a26636c [file] [log] [blame]
/*
*
* Copyright (c) 2020-2022 Project CHIP Authors
* Copyright (c) 2016-2017 Nest Labs, Inc.
* All rights reserved.
*
* 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.
*/
/**
* @file
* This file implements a process to effect a functional test for
* the CHIP Core library error string support interfaces.
*
*/
#ifndef __STDC_FORMAT_MACROS
#define __STDC_FORMAT_MACROS
#endif
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS
#endif
#include <inttypes.h>
#include <stdint.h>
#include <string.h>
#include <lib/core/CHIPError.h>
#include <lib/support/ErrorStr.h>
#include <lib/support/UnitTestRegistration.h>
#include <nlunit-test.h>
using namespace chip;
// Test input data.
// clang-format off
static const CHIP_ERROR kTestElements[] =
{
CHIP_ERROR_SENDING_BLOCKED,
CHIP_ERROR_CONNECTION_ABORTED,
CHIP_ERROR_INCORRECT_STATE,
CHIP_ERROR_MESSAGE_TOO_LONG,
CHIP_ERROR_UNSUPPORTED_EXCHANGE_VERSION,
CHIP_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS,
CHIP_ERROR_NO_UNSOLICITED_MESSAGE_HANDLER,
CHIP_ERROR_NO_CONNECTION_HANDLER,
CHIP_ERROR_TOO_MANY_PEER_NODES,
CHIP_ERROR_SENTINEL,
CHIP_ERROR_NO_MEMORY,
CHIP_ERROR_NO_MESSAGE_HANDLER,
CHIP_ERROR_MESSAGE_INCOMPLETE,
CHIP_ERROR_DATA_NOT_ALIGNED,
CHIP_ERROR_UNKNOWN_KEY_TYPE,
CHIP_ERROR_KEY_NOT_FOUND,
CHIP_ERROR_WRONG_ENCRYPTION_TYPE,
CHIP_ERROR_TOO_MANY_KEYS,
CHIP_ERROR_INTEGRITY_CHECK_FAILED,
CHIP_ERROR_INVALID_SIGNATURE,
CHIP_ERROR_UNSUPPORTED_MESSAGE_VERSION,
CHIP_ERROR_UNSUPPORTED_ENCRYPTION_TYPE,
CHIP_ERROR_UNSUPPORTED_SIGNATURE_TYPE,
CHIP_ERROR_INVALID_MESSAGE_LENGTH,
CHIP_ERROR_BUFFER_TOO_SMALL,
CHIP_ERROR_DUPLICATE_KEY_ID,
CHIP_ERROR_WRONG_KEY_TYPE,
CHIP_ERROR_WELL_UNINITIALIZED,
CHIP_ERROR_WELL_EMPTY,
CHIP_ERROR_INVALID_STRING_LENGTH,
CHIP_ERROR_INVALID_LIST_LENGTH,
CHIP_ERROR_INVALID_INTEGRITY_TYPE,
CHIP_END_OF_TLV,
CHIP_ERROR_TLV_UNDERRUN,
CHIP_ERROR_INVALID_TLV_ELEMENT,
CHIP_ERROR_INVALID_TLV_TAG,
CHIP_ERROR_UNKNOWN_IMPLICIT_TLV_TAG,
CHIP_ERROR_WRONG_TLV_TYPE,
CHIP_ERROR_TLV_CONTAINER_OPEN,
CHIP_ERROR_INVALID_TRANSFER_MODE,
CHIP_ERROR_INVALID_PROFILE_ID,
CHIP_ERROR_INVALID_MESSAGE_TYPE,
CHIP_ERROR_UNEXPECTED_TLV_ELEMENT,
CHIP_ERROR_STATUS_REPORT_RECEIVED,
CHIP_ERROR_NOT_IMPLEMENTED,
CHIP_ERROR_INVALID_ADDRESS,
CHIP_ERROR_INVALID_ARGUMENT,
CHIP_ERROR_INVALID_PATH_LIST,
CHIP_ERROR_INVALID_DATA_LIST,
CHIP_ERROR_TIMEOUT,
CHIP_ERROR_INVALID_DEVICE_DESCRIPTOR,
CHIP_ERROR_UNSUPPORTED_DEVICE_DESCRIPTOR_VERSION,
CHIP_END_OF_INPUT,
CHIP_ERROR_RATE_LIMIT_EXCEEDED,
CHIP_ERROR_SECURITY_MANAGER_BUSY,
CHIP_ERROR_INVALID_PASE_PARAMETER,
CHIP_ERROR_PASE_SUPPORTS_ONLY_CONFIG1,
CHIP_ERROR_KEY_CONFIRMATION_FAILED,
CHIP_ERROR_INVALID_USE_OF_SESSION_KEY,
CHIP_ERROR_CONNECTION_CLOSED_UNEXPECTEDLY,
CHIP_ERROR_MISSING_TLV_ELEMENT,
CHIP_ERROR_RANDOM_DATA_UNAVAILABLE,
CHIP_ERROR_UNSUPPORTED_HOST_PORT_ELEMENT,
CHIP_ERROR_INVALID_HOST_SUFFIX_INDEX,
CHIP_ERROR_HOST_PORT_LIST_EMPTY,
CHIP_ERROR_UNSUPPORTED_AUTH_MODE,
CHIP_ERROR_INVALID_SERVICE_EP,
CHIP_ERROR_INVALID_DIRECTORY_ENTRY_TYPE,
CHIP_ERROR_FORCED_RESET,
CHIP_ERROR_NO_ENDPOINT,
CHIP_ERROR_INVALID_DESTINATION_NODE_ID,
CHIP_ERROR_NOT_CONNECTED,
CHIP_ERROR_NO_SW_UPDATE_AVAILABLE,
CHIP_ERROR_CA_CERT_NOT_FOUND,
CHIP_ERROR_CERT_PATH_LEN_CONSTRAINT_EXCEEDED,
CHIP_ERROR_CERT_PATH_TOO_LONG,
CHIP_ERROR_CERT_USAGE_NOT_ALLOWED,
CHIP_ERROR_CERT_EXPIRED,
CHIP_ERROR_CERT_NOT_VALID_YET,
CHIP_ERROR_UNSUPPORTED_CERT_FORMAT,
CHIP_ERROR_UNSUPPORTED_ELLIPTIC_CURVE,
CHIP_CERT_NOT_USED,
CHIP_ERROR_CERT_NOT_FOUND,
CHIP_ERROR_INVALID_CASE_PARAMETER,
CHIP_ERROR_UNSUPPORTED_CASE_CONFIGURATION,
CHIP_ERROR_CERT_LOAD_FAILED,
CHIP_ERROR_CERT_NOT_TRUSTED,
CHIP_ERROR_INVALID_ACCESS_TOKEN,
CHIP_ERROR_WRONG_CERT_DN,
CHIP_ERROR_INVALID_PROVISIONING_BUNDLE,
CHIP_ERROR_PROVISIONING_BUNDLE_DECRYPTION_ERROR,
CHIP_ERROR_WRONG_NODE_ID,
CHIP_ERROR_CONN_ACCEPTED_ON_WRONG_PORT,
CHIP_ERROR_CALLBACK_REPLACED,
CHIP_ERROR_NO_CASE_AUTH_DELEGATE,
CHIP_ERROR_DEVICE_LOCATE_TIMEOUT,
CHIP_ERROR_DEVICE_CONNECT_TIMEOUT,
CHIP_ERROR_DEVICE_AUTH_TIMEOUT,
CHIP_ERROR_MESSAGE_NOT_ACKNOWLEDGED,
CHIP_ERROR_RETRANS_TABLE_FULL,
CHIP_ERROR_INVALID_ACK_MESSAGE_COUNTER,
CHIP_ERROR_SEND_THROTTLED,
CHIP_ERROR_WRONG_MSG_VERSION_FOR_EXCHANGE,
CHIP_ERROR_TRANSACTION_CANCELED,
CHIP_ERROR_LISTENER_ALREADY_STARTED,
CHIP_ERROR_LISTENER_ALREADY_STOPPED,
CHIP_ERROR_INVALID_SUBSCRIPTION,
CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
CHIP_ERROR_PASE_RECONFIGURE_REQUIRED,
CHIP_ERROR_INVALID_PASE_CONFIGURATION,
CHIP_ERROR_NO_COMMON_PASE_CONFIGURATIONS,
CHIP_ERROR_UNSOLICITED_MSG_NO_ORIGINATOR,
CHIP_ERROR_INVALID_FABRIC_INDEX,
CHIP_ERROR_TOO_MANY_CONNECTIONS,
CHIP_ERROR_SHUT_DOWN,
CHIP_ERROR_CANCELLED,
CHIP_ERROR_DRBG_ENTROPY_SOURCE_FAILED,
CHIP_ERROR_TLV_TAG_NOT_FOUND,
CHIP_ERROR_MISSING_SECURE_SESSION,
CHIP_ERROR_INVALID_ADMIN_SUBJECT,
CHIP_ERROR_INSUFFICIENT_PRIVILEGE,
CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_REPORT_IB,
CHIP_ERROR_IM_MALFORMED_EVENT_STATUS_IB,
CHIP_ERROR_IM_MALFORMED_STATUS_RESPONSE_MESSAGE,
CHIP_ERROR_MESSAGE_COUNTER_EXHAUSTED,
CHIP_ERROR_FABRIC_EXISTS,
CHIP_ERROR_KEY_NOT_FOUND_FROM_PEER,
CHIP_ERROR_WRONG_ENCRYPTION_TYPE_FROM_PEER,
CHIP_ERROR_UNKNOWN_KEY_TYPE_FROM_PEER,
CHIP_ERROR_INVALID_USE_OF_SESSION_KEY_FROM_PEER,
CHIP_ERROR_UNSUPPORTED_ENCRYPTION_TYPE_FROM_PEER,
CHIP_ERROR_INTERNAL_KEY_ERROR_FROM_PEER,
CHIP_ERROR_INVALID_KEY_ID,
CHIP_ERROR_INVALID_TIME,
CHIP_ERROR_LOCKING_FAILURE,
CHIP_ERROR_UNSUPPORTED_PASSCODE_CONFIG,
CHIP_ERROR_PASSCODE_AUTHENTICATION_FAILED,
CHIP_ERROR_PASSCODE_FINGERPRINT_FAILED,
CHIP_ERROR_SERIALIZATION_ELEMENT_NULL,
CHIP_ERROR_WRONG_CERT_SIGNATURE_ALGORITHM,
CHIP_ERROR_WRONG_CHIP_SIGNATURE_ALGORITHM,
CHIP_ERROR_SCHEMA_MISMATCH,
CHIP_ERROR_INVALID_INTEGER_VALUE,
CHIP_ERROR_CASE_RECONFIG_REQUIRED,
CHIP_ERROR_TOO_MANY_CASE_RECONFIGURATIONS,
CHIP_ERROR_BAD_REQUEST,
CHIP_ERROR_INVALID_MESSAGE_FLAG,
CHIP_ERROR_KEY_EXPORT_RECONFIGURE_REQUIRED,
CHIP_ERROR_INVALID_KEY_EXPORT_CONFIGURATION,
CHIP_ERROR_NO_COMMON_KEY_EXPORT_CONFIGURATIONS,
CHIP_ERROR_NO_KEY_EXPORT_DELEGATE,
CHIP_ERROR_UNAUTHORIZED_KEY_EXPORT_REQUEST,
CHIP_ERROR_UNAUTHORIZED_KEY_EXPORT_RESPONSE,
CHIP_ERROR_EXPORTED_KEY_AUTHENTICATION_FAILED,
CHIP_ERROR_TOO_MANY_SHARED_SESSION_END_NODES,
CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_DATA_IB,
CHIP_ERROR_WRONG_CERT_TYPE,
CHIP_ERROR_DEFAULT_EVENT_HANDLER_NOT_CALLED,
CHIP_ERROR_PERSISTED_STORAGE_FAILED,
CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND,
CHIP_ERROR_IM_FABRIC_DELETED,
CHIP_ERROR_PROFILE_STRING_CONTEXT_NOT_REGISTERED,
CHIP_ERROR_INCOMPATIBLE_SCHEMA_VERSION,
CHIP_ERROR_ACCESS_DENIED,
CHIP_ERROR_UNKNOWN_RESOURCE_ID,
CHIP_ERROR_VERSION_MISMATCH,
CHIP_ERROR_UNSUPPORTED_THREAD_NETWORK_CREATE,
CHIP_ERROR_INCONSISTENT_CONDITIONALITY,
CHIP_ERROR_LOCAL_DATA_INCONSISTENT,
CHIP_EVENT_ID_FOUND,
CHIP_ERROR_INTERNAL,
CHIP_ERROR_OPEN_FAILED,
CHIP_ERROR_READ_FAILED,
CHIP_ERROR_WRITE_FAILED,
CHIP_ERROR_DECODE_FAILED,
CHIP_ERROR_SESSION_KEY_SUSPENDED,
CHIP_ERROR_UNSUPPORTED_WIRELESS_REGULATORY_DOMAIN,
CHIP_ERROR_UNSUPPORTED_WIRELESS_OPERATING_LOCATION,
CHIP_ERROR_MDNS_COLLISION,
CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB,
CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB,
CHIP_ERROR_IM_MALFORMED_COMMAND_PATH_IB,
CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_STATUS_IB,
CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_IB,
CHIP_ERROR_IM_MALFORMED_EVENT_DATA_IB,
CHIP_ERROR_IM_MALFORMED_STATUS_IB,
CHIP_ERROR_PEER_NODE_NOT_FOUND,
CHIP_ERROR_HSM,
CHIP_ERROR_IM_STATUS_CODE_RECEIVED,
CHIP_ERROR_IM_MALFORMED_COMMAND_STATUS_IB,
CHIP_ERROR_IM_MALFORMED_INVOKE_RESPONSE_IB,
CHIP_ERROR_IM_MALFORMED_INVOKE_REQUEST_MESSAGE,
CHIP_ERROR_IM_MALFORMED_INVOKE_RESPONSE_MESSAGE,
CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_REPORT_MESSAGE,
CHIP_ERROR_IM_MALFORMED_WRITE_REQUEST_MESSAGE,
CHIP_ERROR_IM_MALFORMED_EVENT_FILTER_IB,
CHIP_ERROR_IM_MALFORMED_READ_REQUEST_MESSAGE,
CHIP_ERROR_IM_MALFORMED_SUBSCRIBE_REQUEST_MESSAGE,
CHIP_ERROR_IM_MALFORMED_SUBSCRIBE_RESPONSE_MESSAGE,
CHIP_ERROR_IM_MALFORMED_EVENT_REPORT_IB,
CHIP_ERROR_IM_MALFORMED_CLUSTER_PATH_IB,
CHIP_ERROR_IM_MALFORMED_DATA_VERSION_FILTER_IB,
CHIP_ERROR_NOT_FOUND,
CHIP_ERROR_IM_MALFORMED_TIMED_REQUEST_MESSAGE,
CHIP_ERROR_INVALID_FILE_IDENTIFIER,
CHIP_ERROR_BUSY,
CHIP_ERROR_MAX_RETRY_EXCEEDED,
CHIP_ERROR_PROVIDER_LIST_EXHAUSTED,
CHIP_ERROR_ANOTHER_COMMISSIONING_IN_PROGRESS,
CHIP_ERROR_INVALID_SCHEME_PREFIX,
CHIP_ERROR_MISSING_URI_SEPARATOR,
CHIP_ERROR_IM_MALFORMED_STATUS_RESPONSE_MESSAGE,
CHIP_ERROR_IM_MALFORMED_TIMED_REQUEST_MESSAGE,
CHIP_ERROR_INVALID_FILE_IDENTIFIER,
CHIP_ERROR_BUSY,
CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_REPORT_IB,
CHIP_ERROR_IM_MALFORMED_EVENT_STATUS_IB,
};
// clang-format on
static void CheckCoreErrorStr(nlTestSuite * inSuite, void * inContext)
{
// Register the layer error formatter
RegisterCHIPLayerErrorFormatter();
// For each defined error...
for (const auto & err : kTestElements)
{
const char * errStr = ErrorStr(err);
char expectedText[9];
// Assert that the error string contains the error number in hex.
snprintf(expectedText, sizeof(expectedText), "%08" PRIX32, static_cast<uint32_t>(err.AsInteger()));
NL_TEST_ASSERT(inSuite, (strstr(errStr, expectedText) != nullptr));
#if !CHIP_CONFIG_SHORT_ERROR_STR
// Assert that the error string contains a description, which is signaled
// by a presence of a colon proceeding the description.
NL_TEST_ASSERT(inSuite, (strchr(errStr, ':') != nullptr));
#endif // !CHIP_CONFIG_SHORT_ERROR_STR
}
}
/**
* Test Suite. It lists all the test functions.
*/
// clang-format off
static const nlTest sTests[] =
{
NL_TEST_DEF("CoreErrorStr", CheckCoreErrorStr),
NL_TEST_SENTINEL()
};
// clang-format on
int TestCHIPErrorStr()
{
// clang-format off
nlTestSuite theSuite =
{
"Core-Error-Strings",
&sTests[0],
nullptr,
nullptr
};
// clang-format on
// Run test suit againt one context.
nlTestRunner(&theSuite, nullptr);
return nlTestRunnerStats(&theSuite);
}
CHIP_REGISTER_TEST_SUITE(TestCHIPErrorStr)