#include "cert-svc/ccert.h"
#include "cert-svc/cerror.h"
+#include "test_common.h"
#include "test_constant.h"
#include "test_macros.h"
#include "vcore/Client.h"
static const std::string gNamePrexif = "gname_sever_";
static const std::string commonNamePrefix = "TEST_sever_";
+static const std::string systemGname = "002c0b4f.0";
+static const std::string largeString = createLargeString(VCORE_MAX_RECV_DATA_SIZE + 100);
+void getCertListFromStores(int reqType, CertStoreType storeTypes, int isRootApp, int expected)
+{
+ int result;
+ char *certListBuffer = NULL;
+ size_t bufferLen = 0;
+ size_t certCount = 0;
+
+ result = getCertificateListFromStore(
+ reqType,
+ storeTypes,
+ isRootApp,
+ &certListBuffer,
+ &bufferLen,
+ &certCount);
+
+ BOOST_CHECK_EQUAL(result, expected);
+
+ if (expected == CERTSVC_SUCCESS) {
+ BOOST_CHECK(certListBuffer);
+ if (storeTypes & ALL_STORE) {
+ BOOST_CHECK(bufferLen > 0);
+ BOOST_CHECK(certCount > 0);
+ } else {
+ BOOST_CHECK_EQUAL(bufferLen, 0);
+ BOOST_CHECK_EQUAL(certCount, 0);
+ }
+ } else {
+ BOOST_CHECK(!certListBuffer);
+ BOOST_CHECK_EQUAL(bufferLen, 0);
+ BOOST_CHECK_EQUAL(certCount, 0);
+ }
+
+ free(certListBuffer);
+}
+
+void loadCertFromStores(CertStoreType storeType, const std::string &groupName, int expected)
+{
+ int result;
+ char *certBlockBuffer = NULL;
+ size_t bufferLen = 0;
+ size_t certBlockCount = 0;
+
+ result = loadCertificatesFromStore(
+ storeType,
+ groupName.c_str(),
+ &certBlockBuffer,
+ &bufferLen,
+ &certBlockCount);
+
+ BOOST_CHECK_EQUAL(result, expected);
+
+ if (expected == CERTSVC_SUCCESS) {
+ BOOST_CHECK(certBlockBuffer);
+ BOOST_CHECK(bufferLen > 0);
+ BOOST_CHECK(certBlockCount > 0);
+ } else {
+ BOOST_CHECK(!certBlockBuffer);
+ BOOST_CHECK_EQUAL(bufferLen, 0);
+ BOOST_CHECK_EQUAL(certBlockCount, 0);
+ }
+
+ free(certBlockBuffer);
+}
BOOST_AUTO_TEST_SUITE(CERT_SERVER_LOGIC_TEST)
deinitialize_db();
}
+POSITIVE_TEST_CASE(T_get_certificate_list_from_stores)
+{
+ int result;
+
+ result = initialize_db();
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+
+ getCertListFromStores(
+ CERTSVC_GET_USER_CERTIFICATE_LIST,
+ StoreType::IndividualStore,
+ DISABLED,
+ CERTSVC_SUCCESS);
+
+ getCertListFromStores(
+ CERTSVC_GET_ROOT_CERTIFICATE_LIST,
+ ALL_STORE,
+ DISABLED,
+ CERTSVC_SUCCESS);
+
+ getCertListFromStores(
+ CERTSVC_GET_CERTIFICATE_LIST,
+ ALL_STORE,
+ DISABLED,
+ CERTSVC_SUCCESS);
+
+ getCertListFromStores(
+ CERTSVC_GET_CERTIFICATE_LIST,
+ ALL_STORE,
+ ENABLED,
+ CERTSVC_SUCCESS);
+
+ deinitialize_db();
+}
+
+NEGATIVE_TEST_CASE(T_negative_get_certificate_list_from_stores)
+{
+ int result;
+
+ result = initialize_db();
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+
+ getCertListFromStores(
+ CERTSVC_GET_USER_CERTIFICATE_LIST,
+ SYSTEM_STORE,
+ DISABLED,
+ CERTSVC_WRONG_ARGUMENT);
+
+ getCertListFromStores(
+ CERTSVC_GET_USER_CERTIFICATE_LIST,
+ StoreType::InvalidStore,
+ DISABLED,
+ CERTSVC_SUCCESS);
+
+ getCertListFromStores(
+ CERTSVC_GET_USER_CERTIFICATE_LIST,
+ NONE_STORE,
+ DISABLED,
+ CERTSVC_SUCCESS);
+
+ deinitialize_db();
+}
+
+POSITIVE_TEST_CASE(T_load_certificate_from_store)
+{
+ int result;
+
+ result = initialize_db();
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+
+ for (auto storeType: storeTypeMap)
+ {
+ const std::string gnameEndUser =
+ gNamePrexif + storeType.first + std::to_string(P12_END_USER);
+
+ loadCertFromStores(storeType.second, gnameEndUser, CERTSVC_SUCCESS);
+ }
+
+ deinitialize_db();
+}
+
+NEGATIVE_TEST_CASE(T_negative_load_certificate_from_store)
+{
+ int result;
+
+ result = initialize_db();
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+
+ loadCertFromStores(NONE_STORE, gNamePrexif, CERTSVC_FAIL);
+ loadCertFromStores(WIFI_STORE, std::string(), CERTSVC_FAIL);
+ loadCertFromStores(WIFI_STORE, gNamePrexif, CERTSVC_FAIL);
+ loadCertFromStores(SYSTEM_STORE, systemGname, CERTSVC_FAIL);
+
+ deinitialize_db();
+}
+
+NEGATIVE_TEST_CASE(T_negative_load_certificate_from_store_large_group_name)
+{
+ int result;
+ char *certBlockBuffer = NULL;
+ size_t bufferLen = 0;
+ size_t certBlockCount = 0;
+
+ result = initialize_db();
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+
+ result = installCertificateToStore(
+ WIFI_STORE,
+ largeString.c_str(),
+ "commonNameTest",
+ "gnamePKeyTest",
+ largeString.c_str(),
+ PemCertInfo::CertPEM.c_str(),
+ PEM_CRT);
+
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+
+ result = loadCertificatesFromStore(
+ WIFI_STORE,
+ largeString.c_str(),
+ &certBlockBuffer,
+ &bufferLen,
+ &certBlockCount);
+
+ BOOST_CHECK_EQUAL(result, CERTSVC_FAIL);
+ BOOST_CHECK(!certBlockBuffer);
+ BOOST_CHECK(bufferLen > 0);
+ BOOST_CHECK(certBlockCount > 0);
+
+ result = deleteCertificateFromStore(WIFI_STORE, largeString.c_str());
+ BOOST_CHECK_EQUAL(result, CERTSVC_SUCCESS);
+
+ deinitialize_db();
+}
+
BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file