#include <dlfcn.h>
#include <gio/gio.h>
#include <gmock/gmock.h>
+#include <tzplatform_config.h>
+#include <pkgmgr-info.h>
#include "inc/app2ext_interface.h"
+namespace {
+
static GVariant* __last_parameters;
static gchar* __last_method_name;
return gv;
}
-namespace {
+extern "C" const char* tzplatform_getenv(enum tzplatform_variable id) {
+ return ".";
+ //return "/home/abuild/rpmbuild/BUILD/app2sd-0.7.17/unit-tests";
+// getcwd(__cwd, sizeof(__cwd));
+
+ //return const_cast<char*>(__cwd);
+}
+
+extern "C" int pkgmgrinfo_pkginfo_get_usr_pkginfo(const char* pkgid, pkgmgrinfo_pkginfo_h handle) {
+ return 0;
+}
+
+extern "C" int pkgmgrinfo_pkginfo_get_installed_storage(pkgmgrinfo_pkginfo_h h, pkgmgrinfo_installed_storage* storage) {
+ return 0;
+}
+
+extern "C" int pkgmgrinfo_pkginfo_destroy_pkginfo(pkgmgrinfo_pkginfo_h h) {
+ return 0;
+}
+
const ::testing::Environment* env = nullptr;
class App2extInterfaceTest : public ::testing::Test {
EXPECT_TRUE(ret != nullptr);
}
+TEST_F(App2extInterfaceTest, Install) {
+ // wrong
+ app2ext_handle* handle = app2ext_init(APP2EXT_SD_CARD);
+ int ret = handle->interface.client_pre_install(nullptr, nullptr, 0);
+ EXPECT_THAT(ret, testing::Eq(APP2EXT_ERROR_INVALID_ARGUMENTS));
+ ret = handle->interface.client_post_install(nullptr, APP2EXT_STATUS_FAILED);
+ EXPECT_THAT(ret, testing::Eq(APP2EXT_ERROR_INVALID_ARGUMENTS));
+
+ // normal
+ GList* dir_list = nullptr;
+ app2ext_dir_details* d1 = new app2ext_dir_details();
+ app2ext_dir_details* d2 = new app2ext_dir_details();
+ app2ext_dir_details* d3 = new app2ext_dir_details();
+ d1->name = g_strdup("d1");
+ d1->type = APP2EXT_DIR_RO;
+ d2->name = g_strdup("d2");
+ d2->type = APP2EXT_DIR_RO;
+ d3->name = g_strdup("d3");
+ d3->type = APP2EXT_DIR_RO;
+
+ dir_list = g_list_append(dir_list, d1);
+ dir_list = g_list_append(dir_list, d2);
+ dir_list = g_list_append(dir_list, d3);
+ ret = handle->interface.client_pre_install("not.exists.package", dir_list,
+ 1/*megabyte*/);
+ EXPECT_THAT(ret, testing::Eq(0));
+ EXPECT_THAT(__last_method_name, testing::StrEq("PreAppInstall"));
+ g_list_free(dir_list);
+ g_free(d1->name);
+ g_free(d2->name);
+ g_free(d3->name);
+ delete d1;
+ delete d2;
+ delete d3;
+
+ ret = handle->interface.client_post_install("not.exists.package",
+ APP2EXT_STATUS_SUCCESS);
+ EXPECT_THAT(ret, testing::Eq(0));
+ EXPECT_THAT(__last_method_name, testing::StrEq("PostAppInstall"));
+ char* pkgid;
+ int status;
+ g_variant_get(__last_parameters, "(sii)", &pkgid, &status, nullptr);
+ EXPECT_THAT(pkgid, testing::StrEq("not.exists.package"));
+ EXPECT_THAT(status, testing::Eq(APP2EXT_STATUS_SUCCESS));
+ g_free(pkgid);
+ app2ext_deinit(handle);
+}
+
+TEST_F(App2extInterfaceTest, Upgrade) {
+ // wrong
+ app2ext_handle* handle = app2ext_init(APP2EXT_SD_CARD);
+ int ret = handle->interface.client_pre_upgrade(nullptr, nullptr, 0);
+ EXPECT_THAT(ret, testing::Eq(APP2EXT_ERROR_INVALID_ARGUMENTS));
+ ret = handle->interface.client_post_upgrade(nullptr, APP2EXT_STATUS_FAILED);
+ EXPECT_THAT(ret, testing::Eq(APP2EXT_ERROR_INVALID_ARGUMENTS));
+
+ // normal
+ GList* dir_list = nullptr;
+ app2ext_dir_details* d1 = new app2ext_dir_details();
+ app2ext_dir_details* d2 = new app2ext_dir_details();
+ app2ext_dir_details* d3 = new app2ext_dir_details();
+ d1->name = g_strdup("d1");
+ d1->type = APP2EXT_DIR_RO;
+ d2->name = g_strdup("d2");
+ d2->type = APP2EXT_DIR_RO;
+ d3->name = g_strdup("d3");
+ d3->type = APP2EXT_DIR_RO;
+
+ dir_list = g_list_append(dir_list, d1);
+ dir_list = g_list_append(dir_list, d2);
+ dir_list = g_list_append(dir_list, d3);
+ ret = handle->interface.client_pre_upgrade("not.exists.package", dir_list,
+ 1/*megabyte*/);
+ EXPECT_THAT(ret, testing::Eq(0));
+ EXPECT_THAT(__last_method_name, testing::StrEq("PreAppUpgrade"));
+ g_list_free(dir_list);
+ g_free(d1->name);
+ g_free(d2->name);
+ g_free(d3->name);
+ delete d1;
+ delete d2;
+ delete d3;
+
+ ret = handle->interface.client_post_upgrade("not.exists.package",
+ APP2EXT_STATUS_SUCCESS);
+ EXPECT_THAT(ret, testing::Eq(0));
+ EXPECT_THAT(__last_method_name, testing::StrEq("PostAppUpgrade"));
+ char* pkgid;
+ int status;
+ g_variant_get(__last_parameters, "(sii)", &pkgid, &status, nullptr);
+ EXPECT_THAT(pkgid, testing::StrEq("not.exists.package"));
+ EXPECT_THAT(status, testing::Eq(APP2EXT_STATUS_SUCCESS));
+ g_free(pkgid);
+ app2ext_deinit(handle);
+}
+
+TEST_F(App2extInterfaceTest, Uninstall) {
+ // wrong
+ app2ext_handle* handle = app2ext_init(APP2EXT_SD_CARD);
+ int ret = handle->interface.client_pre_uninstall(nullptr);
+ EXPECT_THAT(ret, testing::Eq(APP2EXT_ERROR_INVALID_ARGUMENTS));
+ ret = handle->interface.client_post_uninstall(nullptr);
+ EXPECT_THAT(ret, testing::Eq(APP2EXT_ERROR_INVALID_ARGUMENTS));
+
+ //normal
+ ret = handle->interface.client_pre_uninstall("not.exists.package");
+ EXPECT_THAT(ret, testing::Eq(0));
+ EXPECT_THAT(__last_method_name, testing::StrEq("PreAppUninstall"));
+ char* pkgid;
+ g_variant_get(__last_parameters, "(si)", &pkgid, nullptr);
+ EXPECT_THAT(pkgid, testing::StrEq("not.exists.package"));
+ g_free(pkgid);
+
+ ret = handle->interface.client_post_uninstall("not.exists.package");
+ EXPECT_THAT(ret, testing::Eq(0));
+ EXPECT_THAT(__last_method_name, testing::StrEq("PostAppUninstall"));
+ g_variant_get(__last_parameters, "(si)", &pkgid, nullptr);
+ EXPECT_THAT(pkgid, testing::StrEq("not.exists.package"));
+ g_free(pkgid);
+
+ app2ext_deinit(handle);
+}
+
+TEST_F(App2extInterfaceTest, Move) {
+ // wrong
+ app2ext_handle* handle = app2ext_init(APP2EXT_SD_CARD);
+ int ret = handle->interface.client_pre_move(nullptr, nullptr, APP2EXT_MOVE_TO_EXT);
+ EXPECT_THAT(ret, testing::Eq(APP2EXT_ERROR_INVALID_ARGUMENTS));
+ ret = handle->interface.client_post_move(nullptr, APP2EXT_MOVE_TO_EXT);
+ EXPECT_THAT(ret, testing::Eq(APP2EXT_ERROR_INVALID_ARGUMENTS));
+
+ //normal
+ GList* dir_list = nullptr;
+ app2ext_dir_details* d1 = new app2ext_dir_details();
+ d1->name = g_strdup("d1");
+ d1->type = APP2EXT_DIR_RO;
+
+ dir_list = g_list_append(dir_list, d1);
+ ret = handle->interface.client_pre_move("not.exists.package", dir_list, APP2EXT_MOVE_TO_EXT);
+ EXPECT_THAT(ret, testing::Eq(0));
+ EXPECT_THAT(__last_method_name, testing::StrEq("PreMoveInstalledApp"));
+ g_list_free(dir_list);
+ g_free(d1->name);
+ delete d1;
+
+ ret = handle->interface.client_post_move("not.exists.package", APP2EXT_MOVE_TO_EXT);
+ EXPECT_THAT(ret, testing::Eq(0));
+ EXPECT_THAT(__last_method_name, testing::StrEq("PostMoveInstalledApp"));
}
+} // namespace
+
namespace app2sd {
extern "C" void* dlopen(const char* path, int flag) {