Add test to get type from xml file 23/295723/2
authorilho kim <ilho159.kim@samsung.com>
Thu, 13 Jul 2023 01:59:02 +0000 (10:59 +0900)
committerilho kim <ilho159.kim@samsung.com>
Thu, 13 Jul 2023 02:24:51 +0000 (11:24 +0900)
Change-Id: If6f489b91d497978d7d4354f8e02355b724ca9e0
Signed-off-by: ilho kim <ilho159.kim@samsung.com>
test/unit_tests/mock/pkgmgr_info_mock.cc
test/unit_tests/mock/pkgmgr_info_mock.h
test/unit_tests/test_samples/test-resource-pkg.xml [new file with mode: 0644]
test/unit_tests/test_unified_installer_factory.cc

index 28afa21c32db3f4cc53a71ada01afa09df046984..6547df9584e915669aea1a312340126978d425dd 100644 (file)
@@ -32,3 +32,7 @@ extern "C" int pkgmgrinfo_pkginfo_get_type(pkgmgrinfo_pkginfo_h handle,
   return MOCK_HOOK_P2(PkgmgrInfoMock, pkgmgrinfo_pkginfo_get_type, handle,
       type);
 }
+
+extern "C" const char* getUserManifestPath(uid_t uid, bool readonly) {
+  return MOCK_HOOK_P2(PkgmgrInfoMock, getUserManifestPath, uid, readonly);
+}
index 147bdf1e12bcccc83ab5fe40fd2571b4dc0bc397..98d078ba6bd271b03cccf8a93a855586707a45ba 100644 (file)
@@ -30,6 +30,7 @@ class PkgmgrInfoMock : public virtual ModuleMock {
       int(const char*, uid_t, pkgmgrinfo_pkginfo_h*));
   MOCK_METHOD2(pkgmgrinfo_pkginfo_get_type,
       int(pkgmgrinfo_pkginfo_h, char**));
+  MOCK_METHOD2(getUserManifestPath, const char*(uid_t, bool));
 };
 
 #endif  // TEST_UNIT_TESTS_MOCK_PKGMGR_INFO_MOCK_H_
diff --git a/test/unit_tests/test_samples/test-resource-pkg.xml b/test/unit_tests/test_samples/test-resource-pkg.xml
new file mode 100644 (file)
index 0000000..123ae83
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="7.0" package="test.resource.pkg" version="2.0.0" res-type="test.resource" res-version="1.0.0" type="rpk">
+</manifest>
\ No newline at end of file
index d7b9d7211a8fcf10ce84b4944038a3ef636a4076..61b341113690ea09e34ff5614eb9a4458c10fa7f 100644 (file)
@@ -205,6 +205,59 @@ TEST_F(UnifiedInstallerFactoryTest, CreateInstaller_GetPkgTypeFromFilename) {
   }
 }
 
+TEST_F(UnifiedInstallerFactoryTest, CreateInstaller_GetPkgTypeFromXml) {
+  std::vector<std::string> arguments =
+      {"unified-backend", "-y", "test_samples/test-resource-pkg"};
+  std::vector<char*> argv;
+  for (const auto& arg : arguments)
+    argv.push_back(const_cast<char*>(
+            reinterpret_cast<const char*>(arg.data())));
+  argv.push_back(nullptr);
+
+  pkgmgrinfo_pkginfo_h handle1 = calloc(1, sizeof(manifest_x));
+  pkgmgrinfo_pkginfo_h handle2 = calloc(1, sizeof(manifest_x));
+  if (handle1 == nullptr || handle2 == nullptr) {
+    EXPECT_TRUE(false) << "Out of memory";
+  }
+
+  EXPECT_CALL(GetMock<PkgmgrInfoMock>(),
+      pkgmgrinfo_pkginfo_get_usr_all_pkginfo(
+          StrEq("test_samples/test-resource-pkg"), _, _)).
+          WillOnce(DoAll(
+                  SetArgPointee<2>(
+                      reinterpret_cast<pkgmgrinfo_pkginfo_h>(handle1)),
+                  Return(PMINFO_R_OK)));
+
+  EXPECT_CALL(GetMock<PkgmgrInfoMock>(),
+      getUserManifestPath(_, _)).
+          WillRepeatedly(DoAll(Return(".")));
+
+  TestPkgmgrInstaller installer;
+  EXPECT_CALL(GetMock<GumMock>(),
+      gum_user_get_sync(_, _)).
+          WillRepeatedly(Invoke(__gum_user_get_sync_fake));
+
+  auto pkgmgr = common_installer::PkgMgrInterface::Create(
+      argv.size() - 1,
+      argv.data(),
+      &installer,
+      nullptr);
+  if (!pkgmgr) {
+    ASSERT_TRUE(false);
+  }
+
+  EXPECT_EQ(pkgmgr->GetRequestInfoCount(), 1);
+
+  std::unique_ptr<common_installer::UnifiedInstallerFactory>factory(
+      new common_installer::UnifiedInstallerFactory());
+
+  for (int idx = 0; idx < 1; idx++) {
+    std::unique_ptr<common_installer::AppInstaller> app_installer =
+        factory->CreateInstaller(pkgmgr, idx);
+    EXPECT_NE(app_installer, nullptr);
+  }
+}
+
 TEST_F(UnifiedInstallerFactoryTest, CreateInstaller_WrongRecoveryFile) {
   std::vector<std::string> arguments =
       {"unified-backend", "-b", "test_samples/kkk-recovery-123456",
@@ -235,6 +288,9 @@ TEST_F(UnifiedInstallerFactoryTest, CreateInstaller_WrongRecoveryFile) {
                   SetArgPointee<2>(
                       reinterpret_cast<pkgmgrinfo_pkginfo_h>(handle2)),
                   Return(PMINFO_R_OK)));
+  EXPECT_CALL(GetMock<PkgmgrInfoMock>(),
+      getUserManifestPath(_, _)).
+          WillRepeatedly(DoAll(Return(".")));
 
   TestPkgmgrInstaller installer;
   EXPECT_CALL(GetMock<GumMock>(),