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")
%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
%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 ######################################################
Testcases for device policy manager
%files policyd-test
-%{_bindir}/dpm-test
+%{_bindir}/policyd-test
## DPM Plugins - ############################################################
%package policyd-plugins
ADD_SUBDIRECTORY(apix)
IF(DEFINED GBS_BUILD)
+ SET(TARGET_POLICYD_LIB policyd)
ADD_SUBDIRECTORY(policyd)
ENDIF(DEFINED GBS_BUILD)
# 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)
# 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})
--- /dev/null
+/*
+ * 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);
+}
# 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})
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")
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")