#include <ckm/ckm-control.h>
#include <ckm/ckm-manager.h>
#include <ckmc/ckmc-manager.h>
-#include <scoped-app-context.h>
+#include <scoped_app_launcher.h>
+#include <scoped_installer.h>
#include <fstream>
#include <ios>
#include <unistd.h>
namespace
{
-const uid_t USER_ID = 5070;
-const gid_t GROUP_ID = 5070;
+uid_t USER_ID;
const char* APP_PASS = "user-pass";
+std::unique_ptr<AppInstallHelper> APP1;
+std::unique_ptr<AppInstallHelper> APP2;
+
+class AppInstallationFixture: public DPL::Test::TestGroup
+{
+public:
+ void Init() override
+ {
+ m_user = std::make_unique<TestUser>(
+ TestUser::createTemporary("ckm_test_user", GUM_USERTYPE_NORMAL, false));
+ USER_ID = m_user->getUid();
+
+ APP1 = std::make_unique<AppInstallHelper>("accessor_app1", m_user->getUid());
+ m_installer = std::make_unique<ScopedInstaller>(*APP1);
+
+ APP2 = std::make_unique<AppInstallHelper>("accessor_app2", m_user->getUid());
+ m_installer2 = std::make_unique<ScopedInstaller>(*APP2);
+ }
+
+ void Finish() override
+ {
+ m_installer2.reset();
+ m_installer.reset();
+ m_user.reset();
+ }
+
+private:
+ std::unique_ptr<ScopedInstaller> m_installer;
+ std::unique_ptr<ScopedInstaller> m_installer2;
+ std::unique_ptr<TestUser> m_user;
+};
+
const char *XML_1_okay = "XML_1_okay.xml";
std::string XML_1_EXPECTED_KEY_1_RSA = aliasWithLabel(ckmc_owner_id_system, "test-key1");
std::string XML_1_EXPECTED_KEY_1_PASSWD = "123";
} // namespace
-RUNNER_TEST_GROUP_INIT(T60_INITIAL_VALUES);
+RUNNER_TEST_GROUP_INIT_ENV(T60_INITIAL_VALUES, AppInstallationFixture);
RUNNER_TEST(T6001_init)
{
test_not_exists(f);
}
-RUNNER_TEST(T6010_PARSE_XML_FILE_AT_STARTUP)
+RUNNER_CHILD_TEST(T6010_PARSE_XML_FILE_AT_STARTUP)
{
// [test1]
// check items existence as system service
// [test2]
- // check items existence as TEST_LABEL
+ // check items existence as app1
// [test3]
- // check items existence as TEST_LABEL_2
+ // check items existence as app2
// [test1]
- {
- check_key_allowed(XML_1_EXPECTED_KEY_1_RSA.c_str(),
- XML_1_EXPECTED_KEY_1_PASSWD.c_str(),
- CKMC_KEY_RSA_PUBLIC);
- check_key(XML_1_EXPECTED_KEY_2_RSA.c_str(), CKMC_ERROR_NOT_EXPORTABLE);
- check_key_allowed(XML_1_EXPECTED_KEY_3_AES.c_str(), CKMC_KEY_AES);
- check_cert_allowed(XML_1_EXPECTED_CERT_1.c_str());
- check_read_allowed(XML_1_EXPECTED_DATA_1, XML_1_EXPECTED_DATA_1_DATA);
- }
+ check_key_allowed(XML_1_EXPECTED_KEY_1_RSA.c_str(),
+ XML_1_EXPECTED_KEY_1_PASSWD.c_str(),
+ CKMC_KEY_RSA_PUBLIC);
+ check_key(XML_1_EXPECTED_KEY_2_RSA.c_str(), CKMC_ERROR_NOT_EXPORTABLE);
+ check_key_allowed(XML_1_EXPECTED_KEY_3_AES.c_str(), CKMC_KEY_AES);
+ check_cert_allowed(XML_1_EXPECTED_CERT_1.c_str());
+ check_read_allowed(XML_1_EXPECTED_DATA_1, XML_1_EXPECTED_DATA_1_DATA);
- // [test2]
- {
- ScopedDBUnlock unlock(USER_ID, APP_PASS);
- ScopedAppContext ctx(TEST_LABEL, USER_ID, GROUP_ID);
+ ScopedDBUnlock unlock(USER_ID, APP_PASS);
+ // [test2]
+ ScopedAppLauncher(*APP1, [&]{
check_key_allowed(XML_1_EXPECTED_KEY_1_RSA.c_str(), XML_1_EXPECTED_KEY_1_PASSWD.c_str());
check_key_not_visible(XML_1_EXPECTED_KEY_2_RSA.c_str());
check_key_allowed(XML_1_EXPECTED_KEY_3_AES.c_str(), CKMC_KEY_AES);
check_cert_not_visible(XML_1_EXPECTED_CERT_1.c_str());
check_read_allowed(XML_1_EXPECTED_DATA_1, XML_1_EXPECTED_DATA_1_DATA);
- }
+ });
// [test3]
- {
- ScopedDBUnlock unlock(USER_ID, APP_PASS);
- ScopedAppContext ctx(TEST_LABEL_2, USER_ID, GROUP_ID);
-
+ ScopedAppLauncher(*APP2, [&]{
check_key_not_visible(XML_1_EXPECTED_KEY_1_RSA.c_str(),
XML_1_EXPECTED_KEY_1_PASSWD.c_str());
check_key(XML_1_EXPECTED_KEY_2_RSA.c_str(), CKMC_ERROR_NOT_EXPORTABLE);
check_key_allowed(XML_1_EXPECTED_KEY_3_AES.c_str(), CKMC_KEY_AES);
check_cert_allowed(XML_1_EXPECTED_CERT_1.c_str());
check_read_allowed(XML_1_EXPECTED_DATA_1, XML_1_EXPECTED_DATA_1_DATA);
- }
+ });
}
RUNNER_TEST(T6020_PARSE_TWO_XML_FILES_AT_STARTUP)
8lLQwmLiBLx0Yr/RXKf6gJUCAwEAAQ==
-----END PUBLIC KEY-----
</PEM>
- <Permission accessor="test_label"/>
+ <Permission accessor="accessor_app1_pkg_id"/>
</Key>
<Key name="test-key2" type="RSA_PRV">
<DER>
4D6vkEFsGfjkcmSMK83PHhrSE1CmZ/rquPjo7MY8fylkeVfefQoKhTUkr6Nz/DVaGTbTostgRog+
Vx676FQrM4EzjSSqgA==
</DER>
- <Permission accessor="test_label_2"/>
+ <Permission accessor="accessor_app2_pkg_id"/>
</Key>
<Cert exportable="true" name="test-cert1">
<DER>
7+XYvhodLRsVqMn7nf7taidDKLO2T4bhujztnTYOhhaXKgPy7AtZ28N2wvX96VyAPB/vrchGmyBK
kOg11TpPdNDkhb1J4ZCh2gupDg==
</DER>
- <Permission accessor="test_label_2"/>
+ <Permission accessor="accessor_app2_pkg_id"/>
</Cert>
<Data name="test-data1" exportable="true">
<ASCII>My secret data</ASCII>
- <Permission accessor="test_label"/>
- <Permission accessor="test_label_2"/>
+ <Permission accessor="accessor_app1_pkg_id"/>
+ <Permission accessor="accessor_app2_pkg_id"/>
</Data>
<Key name="test-aes1" type="AES" exportable="true">
<Base64>
QUJDREVGR0hJSktMTU5PUFJTVFVWV1hZWjAxMjM0NTY=
</Base64>
- <Permission accessor="test_label"/>
- <Permission accessor="test_label_2"/>
+ <Permission accessor="accessor_app1_pkg_id"/>
+ <Permission accessor="accessor_app2_pkg_id"/>
</Key>
</InitialValues>
8lLQwmLiBLx0Yr/RXKf6gJUCAwEAAQ==
-----END PUBLIC KEY-----
</PEM>
- <Permission accessor="test_label"/>
+ <Permission accessor="accessor_app1_pkg_id"/>
</Key>
<Key name="test2-key2" type="RSA_PRV">
<DER>
4D6vkEFsGfjkcmSMK83PHhrSE1CmZ/rquPjo7MY8fylkeVfefQoKhTUkr6Nz/DVaGTbTostgRog+
Vx676FQrM4EzjSSqgA==
</DER>
- <Permission accessor="test_label_2"/>
+ <Permission accessor="accessor_app2_pkg_id"/>
</Key>
<Cert exportable="true" name="test2-cert1">
<DER>
7+XYvhodLRsVqMn7nf7taidDKLO2T4bhujztnTYOhhaXKgPy7AtZ28N2wvX96VyAPB/vrchGmyBK
kOg11TpPdNDkhb1J4ZCh2gupDg==
</DER>
- <Permission accessor="test_label_2"/>
+ <Permission accessor="accessor_app2_pkg_id"/>
</Cert>
<Data name="test2-data1" exportable="true">
<ASCII>My secret data</ASCII>
- <Permission accessor="test_label"/>
- <Permission accessor="test_label_2"/>
+ <Permission accessor="accessor_app1_pkg_id"/>
+ <Permission accessor="accessor_app2_pkg_id"/>
</Data>
<Key name="test2-aes1" type="AES" exportable="true">
<Base64>
QUJDREVGR0hJSktMTU5PUFJTVFVWV1hZWjAxMjM0NTY=
</Base64>
- <Permission accessor="test_label"/>
- <Permission accessor="test_label_2"/>
+ <Permission accessor="accessor_app1_pkg_id"/>
+ <Permission accessor="accessor_app2_pkg_id"/>
</Key>
</InitialValues>