struct AppDefinedPrivilegeFixture : public PrivilegeDBFixture {
void checkAppDefinedPrivileges(const std::string &app, uid_t uid,
const AppDefinedPrivilegesVector &expected);
- void checkClientLicense(const std::string &app, uid_t uid,
+ void checkClientLicense(const std::string &app, const std::string &pkg, uid_t uid,
const std::vector<std::string> &privileges,
const std::vector<std::pair<bool, std::string>> &expected);
};
}
}
-void AppDefinedPrivilegeFixture::checkClientLicense(const std::string &app, uid_t uid,
+void AppDefinedPrivilegeFixture::checkClientLicense(const std::string &app, const std::string &pkg, uid_t uid,
const std::vector<std::string> &privileges,
const std::vector<std::pair<bool, std::string>> &expected)
{
std::string license;
BOOST_REQUIRE(expected[i].first == testPrivDb->GetLicenseForClientPrivilegeAndApp(app, uid, privileges[i], license));
BOOST_REQUIRE(license == expected[i].second);
+ BOOST_REQUIRE(expected[i].first == testPrivDb->GetLicenseForClientPrivilegeAndPkg(pkg, uid, privileges[i], license));
+ BOOST_REQUIRE(license == expected[i].second);
}
}
checkAppDefinedPrivileges(app(1), uid(1), {});
// second application defines privileges
- BOOST_REQUIRE_NO_THROW(testPrivDb->AddAppDefinedPrivilege(app(2), uid(2), privileges[0]));
- BOOST_REQUIRE_NO_THROW(testPrivDb->AddAppDefinedPrivilege(app(2), uid(2), privileges[1]));
+ BOOST_REQUIRE_NO_THROW(testPrivDb->AddAppDefinedPrivileges(app(2), uid(2), privileges));
checkAppDefinedPrivileges(app(2), uid(2), privileges);
// install second application for different user and add privileges
addAppSuccess(app(2), pkg(2), uid(3), tizenVer(1), author(2), Hybrid);
- BOOST_REQUIRE_NO_THROW(testPrivDb->AddAppDefinedPrivilege(app(2), uid(3), privileges[0]));
- BOOST_REQUIRE_NO_THROW(testPrivDb->AddAppDefinedPrivilege(app(2), uid(3), privileges[1]));
+ BOOST_REQUIRE_NO_THROW(testPrivDb->AddAppDefinedPrivileges(app(2), uid(3), privileges));
checkAppDefinedPrivileges(app(2), uid(3), privileges);
// uninstall second application and check privileges
"/opt/data/client_appB/res/second_app_client_license"));
// non-existing application
- checkClientLicense(app(1), uid(1), {privilegesA[0].first}, {{false, ""}});
+ checkClientLicense(app(1), pkg(1), uid(1), {privilegesA[0].first}, {{false, ""}});
// add application
addAppSuccess(app(1), pkg(1), uid(1), tizenVer(1), author(1), Hybrid);
// privileges/licenses not used
- checkClientLicense(app(1), uid(1), {privilegesA[0].first}, {{false, ""}});
+ checkClientLicense(app(1), pkg(1), uid(1), {privilegesA[0].first}, {{false, ""}});
// add privilege/license to non-existing application
BOOST_REQUIRE_THROW(testPrivDb->AddClientPrivilege(app(2), uid(1), privilegesA[0].first, privilegesA[0].second),
BOOST_REQUIRE_NO_THROW(testPrivDb->GetLicenseForClientPrivilegeAndApp(app(1), uid(1), privilegesA[1].first, license));
BOOST_REQUIRE(license.empty());
+ // check non-existing privilege in pkg
+ BOOST_REQUIRE_NO_THROW(testPrivDb->GetLicenseForClientPrivilegeAndPkg(pkg(1), uid(1), privilegesA[1].first, license));
+ BOOST_REQUIRE(license.empty());
+
// first application use second privilege/license
BOOST_REQUIRE_NO_THROW(testPrivDb->AddClientPrivilege(app(1), uid(1), privilegesA[1].first, privilegesA[1].second));
// check existing privilege license
- checkClientLicense(app(1), uid(1), {privilegesA[0].first, privilegesA[1].first},
+ checkClientLicense(app(1), pkg(1), uid(1), {privilegesA[0].first, privilegesA[1].first},
{{true, privilegesA[0].second}, {true, privilegesA[1].second}});
// add second application
addAppSuccess(app(2), pkg(2), uid(2), tizenVer(1), author(2), Hybrid);
// privileges/licenses not used
- checkClientLicense(app(2), uid(2), {privilegesA[0].first}, {{false, ""}});
+ checkClientLicense(app(2), pkg(2), uid(2), {privilegesA[0].first}, {{false, ""}});
// second application use first privilege/license
BOOST_REQUIRE_NO_THROW(testPrivDb->AddClientPrivilege(app(2), uid(2), privilegesB[0].first, privilegesB[0].second));
BOOST_REQUIRE_NO_THROW(testPrivDb->GetLicenseForClientPrivilegeAndApp(app(2), uid(2), privilegesB[1].first, license));
BOOST_REQUIRE(license.empty());
+ // check non-existing privilege in pkg
+ BOOST_REQUIRE_NO_THROW(testPrivDb->GetLicenseForClientPrivilegeAndPkg(pkg(2), uid(2), privilegesB[1].first, license));
+ BOOST_REQUIRE(license.empty());
+
// second application use second privilege/license
BOOST_REQUIRE_NO_THROW(testPrivDb->AddClientPrivilege(app(2), uid(2), privilegesB[1].first, privilegesB[1].second));
// check existing privilege/license
- checkClientLicense(app(2), uid(2), {privilegesB[0].first, privilegesB[1].first},
+ checkClientLicense(app(2), pkg(2), uid(2), {privilegesB[0].first, privilegesB[1].first},
{{true, privilegesB[0].second}, {true, privilegesB[1].second}});
// remove first application privileges/licenses
BOOST_REQUIRE_NO_THROW(testPrivDb->RemoveClientPrivileges(app(1), uid(1)));
- checkClientLicense(app(1), uid(1), {privilegesA[0].first, privilegesA[1].first},
+ checkClientLicense(app(1), pkg(1), uid(1), {privilegesA[0].first, privilegesA[1].first},
{{false, ""}, {false, ""}});
// install second application for different user and add privileges
addAppSuccess(app(2), pkg(2), uid(3), tizenVer(1), author(2), Hybrid);
BOOST_REQUIRE_NO_THROW(testPrivDb->AddClientPrivilege(app(2), uid(3), privilegesB[0].first, privilegesB[0].second));
BOOST_REQUIRE_NO_THROW(testPrivDb->AddClientPrivilege(app(2), uid(3), privilegesB[1].first, privilegesB[1].second));
- checkClientLicense(app(2), uid(3), {privilegesB[0].first, privilegesB[1].first},
+ checkClientLicense(app(2), pkg(2), uid(3), {privilegesB[0].first, privilegesB[1].first},
{{true, privilegesB[0].second}, {true, privilegesB[1].second}});
// uninstall second application and check privileges/licenses
removeAppSuccess(app(2), uid(2));
- checkClientLicense(app(2), uid(2), {privilegesB[0].first, privilegesB[1].first},
+ checkClientLicense(app(2), pkg(2), uid(2), {privilegesB[0].first, privilegesB[1].first},
{{false, ""}, {false, ""}});
removeAppSuccess(app(2), uid(3));
- checkClientLicense(app(2), uid(3), {privilegesB[0].first, privilegesB[1].first},
+ checkClientLicense(app(2), pkg(2), uid(3), {privilegesB[0].first, privilegesB[1].first},
{{false, ""}, {false, ""}});
}
{
void checkGetAllPackages(std::vector<std::string> expectedPackages);
void checkGetAuthorIdByName(const std::string &authorName, int expectedAuthorId);
+ void checkGetAppPkgInfo(const std::string &app, const std::string &expectedPackage,
+ bool expectedIsHybrid, bool expectedIsSharedRO);
void checkGetPkgApps(const std::string &package, std::vector<std::string> expectedApps);
void checkGetPkgAuthorId(const std::string &pkgName, int expectedAuthorId);
void checkGetUserApps(const uid_t uid, std::vector<std::string> expectedApps);
+ void checkGetUserAppsFromPkg(uid_t uid, const std::string &pkgName,
+ std::vector<std::string> expectedApps);
void checkGetUserPkgs(const uid_t uid, std::vector<std::string> expectedPkgs);
void checkIsPackageHybrid(const std::string &pkgName, bool expectedIsHybrid);
};
<< expectedAuthorId);
};
+void PrivilegeDBGettersFixture::checkGetAppPkgInfo(const std::string &app,
+ const std::string &expectedPackage, bool expectedIsHybrid, bool expectedIsSharedRO)
+{
+ std::string package;
+ bool isHybrid, isSharedRO;
+ BOOST_REQUIRE_NO_THROW(getPrivDb()->GetAppPkgInfo(app, package, isHybrid, isSharedRO));
+ BOOST_CHECK_MESSAGE(expectedPackage == package, "GetAppPkgInfo for app: " << app <<
+ " returned wrong package: " << package << " expected: " << expectedPackage);
+ BOOST_CHECK_MESSAGE(expectedIsHybrid == isHybrid, "GetAppPkgInfo for app: " << app <<
+ " returned wrong isHybrid: " << isHybrid << " expected: " << expectedIsHybrid);
+ BOOST_CHECK_MESSAGE(expectedIsSharedRO == isSharedRO, "GetAppPkgInfo for app: " << app <<
+ " returned wrong isSharedRO: " << isSharedRO << " expected: " << expectedIsSharedRO);
+}
+
void PrivilegeDBGettersFixture::checkGetPkgApps(const std::string &package,
std::vector<std::string> expectedApps)
{
expectedApps.begin(), expectedApps.end());
};
+void PrivilegeDBGettersFixture::checkGetUserAppsFromPkg(uid_t uid, const std::string &pkgName,
+ std::vector<std::string> expectedApps)
+{
+ std::vector<std::string> apps;
+ BOOST_REQUIRE_NO_THROW(getPrivDb()->GetUserAppsFromPkg(uid, pkgName, apps));
+ std::sort(apps.begin(), apps.end());
+ std::sort(expectedApps.begin(), expectedApps.end());
+ BOOST_CHECK_EQUAL_COLLECTIONS(apps.begin(), apps.end(),
+ expectedApps.begin(), expectedApps.end());
+}
+
void PrivilegeDBGettersFixture::checkGetUserPkgs(const uid_t uid,
std::vector<std::string> expectedPkgs)
{
<< app(4) << " to be: " << tizenVer(3) << " got: " << version4);
}
+POSITIVE_TEST_CASE(T336_get_app_pkg_info)
+{
+ addAppSuccess(app(1), pkg(1), uid(1), tizenVer(1), author(1), NotHybrid);
+ addAppSuccess(app(2), pkg(2), uid(1), tizenVer(1), author(2), Hybrid);
+ addAppSuccess(app(3), pkg(3), uid(1), tizenVer(1), author(3), NotHybrid);
+
+ BOOST_REQUIRE_NO_THROW(getPrivDb()->SetSharedROPackage(pkg(3), true));
+
+ checkGetAppPkgInfo(app(1), pkg(1), false, false);
+ checkGetAppPkgInfo(app(2), pkg(2), true, false);
+ checkGetAppPkgInfo(app(3), pkg(3), false, true);
+}
+
POSITIVE_TEST_CASE(T340_get_app_package_finds_nothing)
{
std::string package;
checkGetUserApps(uid(4), {app(2), app(3), app(5)});
}
+POSITIVE_TEST_CASE(T351_get_user_apps_from_pkg)
+{
+ addAppSuccess(app(1), pkg(1), uid(1), tizenVer(1), author(1), NotHybrid);
+ addAppSuccess(app(2), pkg(1), uid(1), tizenVer(1), author(1), NotHybrid);
+ addAppSuccess(app(3), pkg(2), uid(2), tizenVer(1), author(1), NotHybrid);
+ addAppSuccess(app(4), pkg(2), uid(2), tizenVer(1), author(1), NotHybrid);
+
+ checkGetUserAppsFromPkg(uid(1), pkg(1), {app(1), app(2)});
+ checkGetUserAppsFromPkg(uid(1), pkg(2), {});
+ checkGetUserAppsFromPkg(uid(2), pkg(1), {});
+ checkGetUserAppsFromPkg(uid(2), pkg(2), {app(3), app(4)});
+}
+
POSITIVE_TEST_CASE(T355_get_user_packages)
{
addAppSuccess(app(1), pkg(1), uid(2), tizenVer(1), author(1), NotHybrid);
checkIsPackageHybrid(pkg(3), Hybrid);
}
+POSITIVE_TEST_CASE(T390_is_user_pkg_installed)
+{
+ addAppSuccess(app(1), pkg(1), uid(1), tizenVer(1), author(1), NotHybrid);
+ addAppSuccess(app(2), pkg(1), uid(1), tizenVer(1), author(1), NotHybrid);
+ addAppSuccess(app(3), pkg(2), uid(2), tizenVer(1), author(1), NotHybrid);
+ addAppSuccess(app(4), pkg(2), uid(2), tizenVer(1), author(1), NotHybrid);
+
+ BOOST_CHECK(getPrivDb()->IsUserPkgInstalled(pkg(1), uid(1)));
+ BOOST_CHECK(!getPrivDb()->IsUserPkgInstalled(pkg(2), uid(1)));
+ BOOST_CHECK(!getPrivDb()->IsUserPkgInstalled(pkg(1), uid(2)));
+ BOOST_CHECK(getPrivDb()->IsUserPkgInstalled(pkg(2), uid(2)));
+}
+
BOOST_AUTO_TEST_SUITE_END()