ADD unit tests for client ssh functions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index bff0d9e..5df4eea 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,16 +1,46 @@
 cmake_minimum_required(VERSION 2.6)
 
-# list of all the tests
+# list of all the tests in each directory
 set(tests test_io test_fd_comm test_init_destroy_client test_init_destroy_server test_time test_client_thread)
+set(client_tests )
 
+# add -Wl,--wrap flags
+set(test test_client_ssh)
+set(${test}_mock_funcs connect ssh_connect ssh_userauth_none ssh_userauth_kbdint ssh_is_connected ssh_channel_open_session ssh_channel_request_subsystem ssh_channel_is_closed ssh_channel_write ssh_channel_poll_timeout ssh_userauth_password nc_handshake_io nc_ctx_check_and_fill)
+set(${test}_wrap_link_flags "-Wl")
+foreach(mock_func IN LISTS ${test}_mock_funcs)
+    set(${test}_wrap_link_flags "${${test}_wrap_link_flags},--wrap=${mock_func}")
+endforeach()
+
+#append tests depending on SSH/TLS
 if (ENABLE_SSH OR ENABLE_TLS)
     list(APPEND tests test_server_thread)
+    if (ENABLE_SSH)
+        list(APPEND client_tests test_client_ssh)
+    endif()
+
+    if (ENABLE_TLS)
+
+    endif()
 endif()
 
+foreach(src IN LISTS libsrc)
+    list(APPEND test_srcs "../${src}")
+endforeach()
+add_library(testobj OBJECT ${test_srcs})
+
 foreach(test_name IN LISTS tests)
-    add_executable(${test_name} ${test_name}.c)
+    add_executable(${test_name} $<TARGET_OBJECTS:testobj> ${test_name}.c)
     target_link_libraries(${test_name} ${CMOCKA_LIBRARIES} ${LIBYANG_LIBRARIES} netconf2)
-    add_test(${test_name} ${test_name})
+    set_target_properties(${test_name} PROPERTIES LINK_FLAGS "${${test_name}_wrap_link_flags}")
+    add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+endforeach()
+
+foreach(test_name IN LISTS client_tests)
+    add_executable(${test_name} $<TARGET_OBJECTS:testobj> ./client/${test_name}.c)
+    target_link_libraries(${test_name} ${CMOCKA_LIBRARIES} ${LIBYANG_LIBRARIES} netconf2)
+    set_target_properties(${test_name} PROPERTIES LINK_FLAGS "${${test_name}_wrap_link_flags}")
+    add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
 endforeach()
 
 if (ENABLE_VALGRIND_TESTS)
@@ -19,6 +49,10 @@
         foreach (test_name IN LISTS tests)
             add_test(${test_name}_valgrind valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 --suppressions=${PROJECT_SOURCE_DIR}/tests/ld.supp ${CMAKE_BINARY_DIR}/tests/${test_name})
         endforeach()
+
+        foreach (test_name IN LISTS client_tests)
+            add_test(${test_name}_valgrind valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 --suppressions=${PROJECT_SOURCE_DIR}/tests/ld.supp ${CMAKE_BINARY_DIR}/tests/${test_name})
+        endforeach()
     else (valgrind_FOUND)
         Message("-- valgrind executable not found! Disabling memory leaks tests")
     endif()