From: Zofia Abramowska Date: Thu, 19 Oct 2017 15:43:21 +0000 (+0200) Subject: Move scoped installer to commons X-Git-Tag: security-manager_5.5_testing~11^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b7fefb10ea66efa11b53e7f162a4e6133a520c60;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git Move scoped installer to commons Change-Id: Ica11bbb06be6eeecf2377e142b2fb89ef8b82222 --- diff --git a/src/common/scoped_installer.h b/src/common/scoped_installer.h new file mode 100644 index 00000000..4a0ff06b --- /dev/null +++ b/src/common/scoped_installer.h @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2016-2017 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. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +class ScopedInstaller { +public: + ScopedInstaller(const AppInstallHelper &app, bool requestUid = true) + : m_appId(app.getAppId()), + m_uid(app.getUID()), + m_installType(app.getInstallType()), + m_shouldUninstall(true), + m_requestUid(requestUid), + m_creatorPid(getpid()) + { + SecurityManagerTest::InstallRequest instReq; + instReq.setAppId(app.getAppId()); + instReq.setPkgId(app.getPkgId()); + if (app.getIsHybrid()) + instReq.setHybrid(); + if (app.getInstallType() != SM_APP_INSTALL_NONE) + instReq.setInstallType(app.getInstallType()); + if (requestUid) + instReq.setUid(app.getUID()); + if (!app.getVersion().empty()) + instReq.setAppTizenVersion(app.getVersion()); + if (!app.getAuthor().empty()) + instReq.setAuthorId(app.getAuthor()); + for (const auto& typePaths : app.getDirsMap()) + for (const auto& path : typePaths.second) + instReq.addPath(path, typePaths.first); + for (const auto& typePaths : app.getFilesMap()) + for (const auto& path : typePaths.second) + instReq.addPath(path, typePaths.first); + for (const auto &priv : app.getPrivileges()) + instReq.addPrivilege(priv); + for (const auto &priv : app.getAppDefinedPrivileges()) + instReq.addAppDefinedPrivilege(priv); + + SecurityManagerTest::Api::install(instReq); + } + + ScopedInstaller(const ScopedInstaller &) = delete; + ScopedInstaller(ScopedInstaller &&other) + : m_appId(std::move(other.m_appId)), + m_uid(other.m_uid), + m_installType(other.m_installType), + m_shouldUninstall(other.m_shouldUninstall), + m_requestUid(other.m_requestUid), + m_creatorPid(other.m_creatorPid) + { + other.m_uid = 0; + other.m_shouldUninstall = false; + other.m_creatorPid = -1; + } + + ScopedInstaller& operator=(const ScopedInstaller &) = delete; + + virtual ~ScopedInstaller() { + if (m_creatorPid == getpid()) + { + SafeCleanup::run([this]{ uninstallApp(); }); + } + } + + void uninstallApp() { + if (!m_shouldUninstall) + return; + SecurityManagerTest::InstallRequest uninstReq; + uninstReq.setAppId(m_appId); + if (m_requestUid) + uninstReq.setUid(m_uid); + if (m_installType != SM_APP_INSTALL_NONE) + uninstReq.setInstallType(m_installType); + SecurityManagerTest::Api::uninstall(uninstReq); + m_shouldUninstall = false; + } + +protected: + std::string m_appId; + uid_t m_uid; + app_install_type m_installType; + bool m_shouldUninstall; + bool m_requestUid; + pid_t m_creatorPid; +}; diff --git a/src/security-manager-tests/common/scoped_installer.h b/src/security-manager-tests/common/scoped_installer.h deleted file mode 100644 index 4a0ff06b..00000000 --- a/src/security-manager-tests/common/scoped_installer.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2016-2017 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. - */ - -#pragma once - -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -class ScopedInstaller { -public: - ScopedInstaller(const AppInstallHelper &app, bool requestUid = true) - : m_appId(app.getAppId()), - m_uid(app.getUID()), - m_installType(app.getInstallType()), - m_shouldUninstall(true), - m_requestUid(requestUid), - m_creatorPid(getpid()) - { - SecurityManagerTest::InstallRequest instReq; - instReq.setAppId(app.getAppId()); - instReq.setPkgId(app.getPkgId()); - if (app.getIsHybrid()) - instReq.setHybrid(); - if (app.getInstallType() != SM_APP_INSTALL_NONE) - instReq.setInstallType(app.getInstallType()); - if (requestUid) - instReq.setUid(app.getUID()); - if (!app.getVersion().empty()) - instReq.setAppTizenVersion(app.getVersion()); - if (!app.getAuthor().empty()) - instReq.setAuthorId(app.getAuthor()); - for (const auto& typePaths : app.getDirsMap()) - for (const auto& path : typePaths.second) - instReq.addPath(path, typePaths.first); - for (const auto& typePaths : app.getFilesMap()) - for (const auto& path : typePaths.second) - instReq.addPath(path, typePaths.first); - for (const auto &priv : app.getPrivileges()) - instReq.addPrivilege(priv); - for (const auto &priv : app.getAppDefinedPrivileges()) - instReq.addAppDefinedPrivilege(priv); - - SecurityManagerTest::Api::install(instReq); - } - - ScopedInstaller(const ScopedInstaller &) = delete; - ScopedInstaller(ScopedInstaller &&other) - : m_appId(std::move(other.m_appId)), - m_uid(other.m_uid), - m_installType(other.m_installType), - m_shouldUninstall(other.m_shouldUninstall), - m_requestUid(other.m_requestUid), - m_creatorPid(other.m_creatorPid) - { - other.m_uid = 0; - other.m_shouldUninstall = false; - other.m_creatorPid = -1; - } - - ScopedInstaller& operator=(const ScopedInstaller &) = delete; - - virtual ~ScopedInstaller() { - if (m_creatorPid == getpid()) - { - SafeCleanup::run([this]{ uninstallApp(); }); - } - } - - void uninstallApp() { - if (!m_shouldUninstall) - return; - SecurityManagerTest::InstallRequest uninstReq; - uninstReq.setAppId(m_appId); - if (m_requestUid) - uninstReq.setUid(m_uid); - if (m_installType != SM_APP_INSTALL_NONE) - uninstReq.setInstallType(m_installType); - SecurityManagerTest::Api::uninstall(uninstReq); - m_shouldUninstall = false; - } - -protected: - std::string m_appId; - uid_t m_uid; - app_install_type m_installType; - bool m_shouldUninstall; - bool m_requestUid; - pid_t m_creatorPid; -};