Add client test 78/238878/2
authorDaehyeon Jung <darrenh.jung@samsung.com>
Mon, 20 Jul 2020 04:49:36 +0000 (13:49 +0900)
committerDaehyeon Jung <darrenh.jung@samsung.com>
Fri, 24 Jul 2020 01:48:38 +0000 (10:48 +0900)
Change-Id: I9dad81e677e60e9955f983f6c9b698a1e37d74ba

unit-tests/lib/test_lib.cc

index 85923ed..e61489c 100644 (file)
 #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;
 
@@ -57,7 +61,26 @@ extern "C" GVariant* g_dbus_proxy_call_sync(GDBusProxy* proxy,
   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 {
@@ -151,8 +174,158 @@ TEST_F(App2extInterfaceTest, Get) {
   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) {