Change policyd-testbench to gtest
authorSangwan Kwon <sangwan.kwon@samsung.com>
Tue, 17 Sep 2019 09:53:46 +0000 (18:53 +0900)
committer권상완/Security 2Lab(SR)/Engineer/삼성전자 <sangwan.kwon@samsung.com>
Thu, 10 Oct 2019 06:26:21 +0000 (15:26 +0900)
Signed-off-by: Sangwan Kwon <sangwan.kwon@samsung.com>
CMake/Macro.cmake
packaging/osquery.spec
src/CMakeLists.txt
src/policyd/CMakeLists.txt
src/policyd/pil/CMakeLists.txt
src/policyd/pil/tests/policy_tests.cpp [new file with mode: 0644]
src/policyd/server/CMakeLists.txt
src/policyd/tools/cli/CMakeLists.txt
src/policyd/ui/CMakeLists.txt

index e67c9f099dc4bfd3b3ac515deefd8bb9d026b12d..4c9f0209bf0fad67d96510bde9b9a45de64d1c4e 100644 (file)
@@ -46,6 +46,18 @@ MACRO(ADD_APIX_LINK)
        SET(${TARGET_APIX_LIB}_DEPS ${${TARGET_APIX_LIB}_DEPS} PARENT_SCOPE)
 ENDMACRO(ADD_APIX_LINK)
 
+## policyd #####################
+MACRO(ADD_POLICYD_LIBRARY TARGET)
+       ADD_LIBRARY(${TARGET} OBJECT ${ARGN})
+       LIST(APPEND ${TARGET_POLICYD_LIB}_SRCS $<TARGET_OBJECTS:${TARGET}>)
+       SET(${TARGET_POLICYD_LIB}_SRCS ${${TARGET_POLICYD_LIB}_SRCS} PARENT_SCOPE)
+ENDMACRO(ADD_POLICYD_LIBRARY)
+
+MACRO(ADD_POLICYD_TEST)
+       LIST(APPEND ${TARGET_POLICYD_LIB}_TESTS ${ARGN})
+       SET(${TARGET_POLICYD_LIB}_TESTS ${${TARGET_POLICYD_LIB}_TESTS} PARENT_SCOPE)
+ENDMACRO(ADD_POLICYD_TEST)
+
 ## common #############################
 MACRO(TARGET_LINK_WHOLE TARGET LIBRARY)
        TARGET_LINK_LIBRARIES(${TARGET} "-Wl,-whole-archive")
index 226d3553474fe4f3b37b1079e661430981aa1b56..797df79dab4b058efa71c58022aa44863aa1db73 100644 (file)
@@ -160,13 +160,10 @@ managing device policies.
 %attr(700,root,root) %{_bindir}/dpm-admin-cli
 %attr(755,root,root) %{_bindir}/dpm-syspopup
 %attr(755,root,root) %{_bindir}/dpm-storage-builder
-%attr(755,root,root) %{_bindir}/device-policy-manager
 %attr(755,root,root) %{_bindir}/device-policy-syspopup
-%attr(755,root,root) %{_libdir}/libdpm-pil.so.%{version}
 %attr(-,%{user_name},%{group_name}) %{dpm_base}
 %attr(-,%{user_name},%{group_name}) %{dpm_event}
 %attr(-,%{user_name},%{group_name}) %{dpm_plugins}
-%{_libdir}/libdpm-pil.so.0
 %{_unitdir}/device-policy-manager.service
 %{_unitdir}/device-policy-manager.socket
 %{_unitdir}/sockets.target.wants/device-policy-manager.socket
@@ -194,9 +191,7 @@ developing the device policy module.
 %files policyd-devel
 #%manifest device-policy-client.manifest
 %defattr(644,root,root,755)
-%{_libdir}/libdpm-pil.so
 %{_includedir}/dpm
-%{_includedir}/dpm/pil
 %{_libdir}/pkgconfig/dpm-pil.pc
 
 ## DPM Syspopup Package ######################################################
@@ -230,7 +225,7 @@ BuildRequires: pkgconfig(klay)
 Testcases for device policy manager
 
 %files policyd-test
-%{_bindir}/dpm-test
+%{_bindir}/policyd-test
 
 ## DPM Plugins - ############################################################
 %package policyd-plugins
index 8700563ca8eb917ded8c38a9e37920c393ed9dac..41fa308ba9e974ddd98253f543960deea5e8730a 100644 (file)
@@ -19,5 +19,6 @@ ADD_SUBDIRECTORY(osquery)
 ADD_SUBDIRECTORY(apix)
 
 IF(DEFINED GBS_BUILD)
+       SET(TARGET_POLICYD_LIB policyd)
        ADD_SUBDIRECTORY(policyd)
 ENDIF(DEFINED GBS_BUILD)
index d2e093a2fa998a6016b85e3b45d4b1213e7b1db7..a9b322fa6016d3abe238e6d765e62065d1efcddd 100644 (file)
 # limitations under the License.
 #
 
-ADD_DEFINITIONS(-DUG_WAYLAND)
+SET(TARGET_POLICYD_TEST policyd-test)
 
-INCLUDE_DIRECTORIES(SYSTEM .)
+SET(${TARGET_POLICYD_LIB}_SRCS "")
+SET(${TARGET_POLICYD_LIB}_TESTS "")
 
-ADD_SUBDIRECTORY(conf)
+SET(DEPENDENCY appsvc
+                          aul
+                          bundle
+                          capi-base-common
+                          capi-system-info
+                          capi-system-system-settings
+                          cynara-client
+                          cynara-session
+                          deviced
+                          gio-2.0
+                          glib-2.0
+                          klay
+                          libtzplatform-config
+                          notification
+                          pkgmgr
+                          pkgmgr-info
+                          security-privilege-manager
+                          sqlite3
+                          syspopup-caller
+                          vconf)
+
+PKG_CHECK_MODULES(POLICYD_DEPS REQUIRED ${DEPENDENCY})
+
+INCLUDE_DIRECTORIES(SYSTEM . ${POLICYD_DEPS_INCLUDE_DIRS})
+
+ADD_DEFINITIONS(-DDATA_PATH="${DATA_INSTALL_DIR}"
+                               -DRUN_PATH="${RUN_INSTALL_DIR}"
+                               -DDB_PATH="${DB_INSTALL_DIR}"
+                               -DPLUGIN_INSTALL_DIR="${PLUGIN_INSTALL_DIR}"
+                               -DEVENT_CONFIGURE_DIR="${EVENT_CONFIGURE_DIR}")
 
 ADD_SUBDIRECTORY(client)
+ADD_SUBDIRECTORY(conf)
 ADD_SUBDIRECTORY(pil)
 ADD_SUBDIRECTORY(server)
+ADD_SUBDIRECTORY(tools)
+
+ADD_DEFINITIONS(-DUG_WAYLAND)
 ADD_SUBDIRECTORY(ui)
 
-ADD_SUBDIRECTORY(tests)
-ADD_SUBDIRECTORY(tools)
+ADD_LIBRARY(${TARGET_POLICYD_LIB} STATIC ${${TARGET_POLICYD_LIB}_SRCS})
+
+TARGET_LINK_LIBRARIES(${TARGET_POLICYD_LIB} ${POLICYD_DEPS_LIBRARIES} pthread dl)
+
+SET_TARGET_PROPERTIES(${TARGET_POLICYD_LIB} PROPERTIES COMPILE_FLAGS "-fPIE")
+SET_TARGET_PROPERTIES(${TARGET_POLICYD_LIB} PROPERTIES LINK_FLAGS "-pie")
+
+ADD_EXECUTABLE(${TARGET_POLICYD_TEST} ../apix/main/tests.cpp
+                                                                         ${${TARGET_POLICYD_LIB}_TESTS})
+
+TARGET_LINK_LIBRARIES(${TARGET_POLICYD_TEST} ${TARGET_POLICYD_LIB}
+                                                                                        gtest)
+ADD_TEST(${TARGET_POLICYD_TEST} ${TARGET_POLICYD_TEST})
+INSTALL(TARGETS ${TARGET_POLICYD_TEST}
+               DESTINATION ${CMAKE_INSTALL_BINDIR}
+               PERMISSIONS OWNER_READ
+                                       OWNER_WRITE
+                                       OWNER_EXECUTE
+                                       GROUP_READ
+                                       GROUP_EXECUTE
+                                       WORLD_READ
+                                       WORLD_EXECUTE)
index 4cf1a88d16e3731cafade0b49299d405150b2270..c0e3d7a251c4116adc62e1f2aa7334f7302db322 100644 (file)
 # limitations under the License.
 #
 
-SET(PIL_TARGET "dpm-pil")
-
-SET(LIB_VERSION "${VERSION}")
-SET(LIB_SOVERSION "0")
-
-SET(PIL app-bundle.cpp
-               launchpad.cpp
-               logger.cpp
-               packman.cpp
-               policy-event.cpp
-               policy-client.cpp
-               policy-admin.cpp
-               policy-storage.cpp)
-
-SET(PAPIS app-bundle.h
-                 launchpad.h
-                 logger.h
-                 packman.h
-                 policy-event.h
-                 policy-admin.h
-                 policy-client.h
-                 policy-model.h
-                 policy-storage.h
-                 status.h
-                 observer.h)
-
-SET(DEPENDENCY klay
-                          glib-2.0
-                          gio-2.0
-                          sqlite3
-                          bundle
-                          aul
-                          appsvc
-                          pkgmgr
-                          pkgmgr-info
-                          vconf
-                          syspopup-caller
-                          deviced
-                          libtzplatform-config
-                          security-privilege-manager
-                          capi-system-info
-                          capi-base-common
-                          capi-system-system-settings
-                          notification
-                          cynara-client
-                          cynara-session)
-
-PKG_CHECK_MODULES(PIL_DEPS REQUIRED ${DEPENDENCY})
-
-INCLUDE_DIRECTORIES(SYSTEM "${PIL_DEPS_INCLUDE_DIRS}")
-
-SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack")
-
-ADD_LIBRARY(${PIL_TARGET} SHARED ${PIL})
-
-SET_TARGET_PROPERTIES(${PIL_TARGET} PROPERTIES COMPILE_FLAGS "-fvisibility=default")
-SET_TARGET_PROPERTIES(${PIL_TARGET} PROPERTIES SOVERSION ${LIB_SOVERSION})
-SET_TARGET_PROPERTIES(${PIL_TARGET} PROPERTIES VERSION   ${LIB_VERSION})
-
-TARGET_COMPILE_DEFINITIONS(${PIL_TARGET} PRIVATE
-       EVENT_CONFIGURE_DIR="${EVENT_CONFIGURE_DIR}"
-)
-
-TARGET_LINK_LIBRARIES(${PIL_TARGET} ${PIL_DEPS_LIBRARIES} pthread sqlite3)
-INSTALL(FILES ${PAPIS} DESTINATION ${INCLUDE_INSTALL_DIR}/dpm/pil)
-INSTALL(TARGETS ${PIL_TARGET} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
+ADD_POLICYD_LIBRARY(pil app-bundle.cpp
+                                               launchpad.cpp
+                                               logger.cpp
+                                               packman.cpp
+                                               policy-event.cpp
+                                               policy-client.cpp
+                                               policy-admin.cpp
+                                               policy-storage.cpp)
+
+FILE(GLOB PIL_TESTS "tests/*.cpp")
+ADD_POLICYD_TEST(${PIL_TESTS})
diff --git a/src/policyd/pil/tests/policy_tests.cpp b/src/policyd/pil/tests/policy_tests.cpp
new file mode 100644 (file)
index 0000000..f5af517
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ *  Copyright (c) 2019 Samsung Electronics Co., Ltd 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
+ */
+
+#include <gtest/gtest.h>
+
+#include "../global-policy.h"
+#include "../domain-policy.h"
+#include "../policy-storage.h"
+#include "../policy-event.h"
+
+/// TODO(Sangwan): Refactor policy-model
+/// => Let client know only global-policy or domain-policy
+
+class PolicyModelTests : public testing::Test {};
+
+class TestGlobalPolicy : public GlobalPolicy {
+public:
+       TestGlobalPolicy() : GlobalPolicy("test_policy")
+       {
+               PolicyEventNotifier::create("test_policy");
+       }
+
+       bool apply(const DataSetInt&, uid_t)
+       {
+               PolicyEventNotifier::emit("test_policy", "allowed");
+               return true;
+       }
+};
+
+TEST_F(PolicyModelTests, global_policy) {
+       AbstractPolicyProvider provider;
+       provider.policies.emplace_back(std::make_shared<TestGlobalPolicy>());
+
+       EXPECT_EQ(provider.policies.size(), 1);
+}
index 7d179be6e72bec855275f3080bee8b296e20501a..8762a41399c0406ca8c0a4c5cb07280b15dc13b6 100644 (file)
 # limitations under the License.
 #
 
-SET(TARGET device-policy-manager)
-SET(TARGET_SERVER_LIB dpm-server)
+ADD_POLICYD_LIBRARY(server server.cpp
+                                                  sql-backend.cpp
+                                                  plugin.cpp)
 
-SET(SERVER_SRC server.cpp
-                          sql-backend.cpp
-                          plugin.cpp)
-
-SET(SERVER_DEP klay
-                          glib-2.0
-                          gio-2.0
-                          sqlite3
-                          bundle
-                          aul
-                          appsvc
-                          pkgmgr
-                          pkgmgr-info
-                          vconf
-                          syspopup-caller
-                          deviced
-                          libtzplatform-config
-                          cynara-client
-                          cynara-session)
-
-PKG_CHECK_MODULES(SERVER_DEPS REQUIRED ${SERVER_DEP})
-
-INCLUDE_DIRECTORIES(${SERVER_DEPS_INCLUDE_DIRS})
-
-ADD_LIBRARY(${TARGET_SERVER_LIB} STATIC ${SERVER_SRC})
-TARGET_LINK_LIBRARIES(${TARGET_SERVER_LIB} ${SERVER_DEPS_LIBRARIES} -ldl)
-
-TARGET_COMPILE_DEFINITIONS(${TARGET_SERVER_LIB} PRIVATE
-       DATA_PATH="${DATA_INSTALL_DIR}"
-       RUN_PATH="${RUN_INSTALL_DIR}"
-       DB_PATH="${DB_INSTALL_DIR}"
-       PLUGIN_INSTALL_DIR="${PLUGIN_INSTALL_DIR}")
-
-ADD_EXECUTABLE(${TARGET} main.cpp)
-TARGET_LINK_LIBRARIES(${TARGET} dl pthread sqlite3 dpm-pil ${TARGET_SERVER_LIB})
-
-SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_FLAGS "-fPIE")
-SET_TARGET_PROPERTIES(${TARGET} PROPERTIES LINK_FLAGS "-pie")
-
-INSTALL(TARGETS ${TARGET} DESTINATION bin)
+FILE(GLOB SERVER_TESTS "tests/*.cpp")
+ADD_POLICYD_TEST(${SERVER_TESTS})
index 09df8ee9fe946c39e655400ab5bacaa60b9fc731..c9663bdfe85c2c9a19a039d355d468db0570b8e3 100644 (file)
@@ -26,7 +26,7 @@ ADD_EXECUTABLE(${DPM_ADMIN_CLI_TARGET} ${DPM_ADMIN_CLI_SOURCES})
 INCLUDE_DIRECTORIES(SYSTEM ${CMAKE_SOURCE_DIR}/src
                            ${DPM_ADMIN_CLI_TARGET_DEP_INCLUDE_DIRS})
 
-TARGET_LINK_LIBRARIES(${DPM_ADMIN_CLI_TARGET} dpm-pil)
+TARGET_LINK_LIBRARIES(${DPM_ADMIN_CLI_TARGET} policyd)
 
 SET_TARGET_PROPERTIES(${DPM_ADMIN_CLI_TARGET} PROPERTIES COMPILE_FLAGS "-fPIE")
 SET_TARGET_PROPERTIES(${DPM_ADMIN_CLI_TARGET} PROPERTIES LINK_FLAGS "-pie")
index 53643a3c04494e3f987a5eb3bd6dd240d3ebd8f5..3e3bcbfd3a04280ce4a01a1a78e84304dd063c85 100644 (file)
@@ -41,7 +41,7 @@ PKG_CHECK_MODULES(SERVER_DEPS REQUIRED ${SERVER_DEP})
 INCLUDE_DIRECTORIES(${SERVER_DEPS_INCLUDE_DIRS})
 
 ADD_EXECUTABLE(${TARGET_SYSPOPUP} ${SYSPOPUP})
-TARGET_LINK_LIBRARIES(${TARGET_SYSPOPUP} ${SERVER_DEPS_LIBRARIES} dpm-pil)
+TARGET_LINK_LIBRARIES(${TARGET_SYSPOPUP} ${SERVER_DEPS_LIBRARIES} policyd)
 
 SET_TARGET_PROPERTIES(${TARGET_SYSPOPUP} PROPERTIES COMPILE_FLAGS "-fPIE")
 SET_TARGET_PROPERTIES(${TARGET_SYSPOPUP} PROPERTIES LINK_FLAGS "-pie")