Skip to content
Snippets Groups Projects
Verified Commit c7b84d36 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

DRAFT: setup tests with conan

parent 076b79ca
No related branches found
No related tags found
No related merge requests found
Pipeline #9841 failed
......@@ -18,15 +18,51 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
# append all the test cases here (file name without the ".cpp" suffix)
#######################################################################
### append test cases here (file name without the ".cpp" suffix)
#######################################################################
set(test_cases
test_connection
)
#find_package(caosdb REQUIRED)
#message(STATUS "Found libcaosdb: ${caosdb_DIR}")
#######################################################
### Linting with clang-tidy and include-what-you-use
#######################################################
option(LINTING "clang-tidy and iwye" ON)
if(LINTING)
find_program(iwyu
NAMES include-what-you-use iwyu
PATHS ${CMAKE_SOURCE_DIR}/tools/include-what-you-use/${iwyu_os}/bin)
if(NOT iwyu)
message(WARNING "include-what-you-use: Not found")
else()
message(STATUS "include-what-you-use: ${iwyu}")
set(_CMAKE_CXX_INCLUDE_WHAT_YOU_USE ${iwyu}
"-Xiwyu" "--no_fwd_decls"
"-Xiwyu" "--cxx17ns")
endif()
find_program(clang_tidy NAMES clang-tidy clang-tidy-11)
if(NOT clang_tidy)
message(WARNING "clang-tidy: Not found")
else()
message(STATUS "clang-tidy: ${clang_tidy}")
set(_CMAKE_CXX_CLANG_TIDY "${clang_tidy}"
"--header-filter=caosdb/.*[^\(\.pb\.h\)]$"
"--warnings-as-errors=*"
"--fix")
set(_CMAKE_CXX_CLANG_TIDY_CHECKS
"--checks=*,-fuchsia-*,-llvm-include-order,-llvmlibc-*,-cert-err58-cpp,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,-modernize-use-trailing-return-type,-google-readability-avoid-underscore-in-googletest-name,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-cppcoreguidelines-avoid-goto,-hicpp-avoid-goto")
endif()
else()
message(STATUS "LINTING is OFF")
endif()
###################################################
### Set up tests using GoogleTest (GTest)
###################################################
#include(FetchGTest)
# add special cmake functions for gtest
include(GoogleTest REQUIRED)
......@@ -41,7 +77,10 @@ foreach (i RANGE "${len_test_cases}")
${CONAN_LIBS_OPENSSL} ${CONAN_LIBS_C-ARES} ${CONAN_LIBS_BZIP2}
${CONAN_LIBS_PROTOBUF} ${CONAN_LIBS_ZLIB})
target_include_directories(${test_case_name} PUBLIC ${CONAN_INCLUDE_DIRS})
set_target_properties(${test_case_name} PROPERTIES CXX_CLANG_TIDY "")
set_target_properties(${test_case_name}
PROPERTIES
CXX_CLANG_TIDY "${_CMAKE_CXX_CLANG_TIDY};${_CMAKE_CXX_CLANG_TIDY_CHECKS}"
CXX_INCLUDE_WHAT_YOU_USE "${_CMAKE_CXX_INCLUDE_WHAT_YOU_USE}")
gtest_discover_tests(${test_case_name}
PROPERTIES
LABELS "caosdb-cpplib-int-tests")
......
......@@ -19,67 +19,60 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#include "caosdb/connection.h"
#include "caosdb/authentication.h"
#include <gtest/gtest-message.h>
#include <gtest/gtest-test-part.h>
#include <memory>
#include "gtest/gtest_pred_impl.h"
#include "caosdb/utils.h"
using caosdb::connection::InsecureCaosDBConnectionConfig;
using caosdb::connection::SslCaosDBConnectionConfig;
using caosdb::connection::PemFileCACertProvider;
using caosdb::connection::CaosDBConnection;
#include <gtest/gtest-message.h> // for Message
#include <gtest/gtest-test-part.h> // for SuiteApiResolver, TestPartResult
#include <memory> // for make_shared, allocator, shared_ptr
#include <string> // for string
#include "caosdb/authentication.h" // for PlainPasswordAuthenticator
#include "caosdb/connection.h" // for InsecureCaosDBConnectionConfig
#include "caosdb/exceptions.h" // for AuthenticationError, ConnectionError
#include "caosdb/info.h" // for VersionInfo
#include "caosdb/utils.h" // for get_env_var
#include "gtest/gtest_pred_impl.h" // for Test, TEST, EXPECT_EQ, EXPECT_THROW
namespace caosdb::connection {
using caosdb::exceptions::AuthenticationError;
using caosdb::exceptions::ConnectionError;
using caosdb::authentication::PlainPasswordAuthenticator;
using caosdb::info::v1alpha1::VersionInfo;
TEST(test_connection, config_somehost_25323) {
auto port = 25323;
auto host = "somehost";
auto config = std::make_unique<InsecureCaosDBConnectionConfig>(host, port);
const auto *pHost = "somehost";
auto config = std::make_unique<InsecureCaosDBConnectionConfig>(pHost, port);
ASSERT_EQ(host, config->getHost());
ASSERT_EQ(port, config->getPort());
EXPECT_EQ(pHost, config->getHost());
EXPECT_EQ(port, config->getPort());
}
TEST(test_connection, connect_somehost_42347_fails) {
auto port = 42347;
auto host = "somehost";
auto config = std::make_shared<InsecureCaosDBConnectionConfig>(host, port);
const auto *pHost = "somehost";
auto config = std::make_shared<InsecureCaosDBConnectionConfig>(pHost, port);
CaosDBConnection connection(config);
// TODO ConnectionError
ASSERT_THROW(connection.getVersionInfo(), std::runtime_error);
EXPECT_THROW(connection.getVersionInfo(), ConnectionError);
}
TEST(test_connection, connection_insecure_authentication_error) {
auto port = 8080;
const auto host = caosdb::utils::get_env_var("CAOSDB_SERVER_HOST", "localhost");
auto major = 0;
auto minor = 5;
auto config = std::make_shared<InsecureCaosDBConnectionConfig>(host, port);
auto connection = CaosDBConnection(config);
// TODO AuthenticationError
ASSERT_THROW(connection.getVersionInfo(), std::runtime_error);
EXPECT_THROW(connection.getVersionInfo(), AuthenticationError);
}
TEST(test_connection, connection_ssl_authentication_error) {
auto port = 8443;
const auto host = caosdb::utils::get_env_var("CAOSDB_SERVER_HOST", "localhost");
const auto path = caosdb::utils::get_env_var("CAOSDB_SERVER_CA_PEM", std::string());
auto major = 0;
auto minor = 5;
auto ssloptions = std::make_shared<PemFileCACertProvider>(path);
auto config = std::make_shared<SslCaosDBConnectionConfig>(host, port, ssloptions);
auto connection = CaosDBConnection(config);
// TODO AuthenticationError
ASSERT_THROW(connection.getVersionInfo(), std::runtime_error);
EXPECT_THROW(connection.getVersionInfo(), AuthenticationError);
}
TEST(test_connection, connection_ssl_authentication_success) {
......@@ -98,6 +91,8 @@ TEST(test_connection, connection_ssl_authentication_success) {
auto connection = CaosDBConnection(config);
auto v_info = connection.getVersionInfo();
ASSERT_EQ(major, v_info.major());
ASSERT_EQ(minor, v_info.minor());
EXPECT_EQ(major, v_info->GetMajor());
EXPECT_EQ(minor, v_info->GetMinor());
}
} //namespace caosdb::connection
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment