Refactor pkgmgr-info
[platform/core/appfw/pkgmgr-info.git] / test / unit_tests / test_cert_db_handlers.cc
index 13748cd..8fc35ed 100644 (file)
  */
 
 #include <gmock/gmock.h>
-
 #include <gtest/gtest.h>
 
 #include <cstdio>
+#include <fstream>
 
 #include "cert_set_db_handler.hh"
 #include "cert_get_db_handler.hh"
 #include "create_db_handler.hh"
 #include "db_type.hh"
-#include "mock/file_mock.h"
 #include "parcel_utils.hh"
-
 #include "pkgmgr-info.h"
 #include "pkgmgrinfo_basic.h"
+#include "server/pkgmgrinfo_internal.h"
 
 #define TEST_CERT_DB "test.pkgmgr_cert.db"
 
@@ -40,7 +39,8 @@ class CreateCertDBHandlerMock : public psd::CreateDBHandler {
       : psd::CreateDBHandler(uid, pid) {}
 
   MOCK_METHOD0(Connect, bool());
-  MOCK_METHOD0(GetConnection, std::vector<std::pair<sqlite3*, uid_t>>());
+  MOCK_METHOD0(GetConnection, const std::vector<std::pair<tizen_base::Database,
+      uid_t>>&());
 };
 
 class CertSetDBHandlerMock : public psd::CertSetDBHandler {
@@ -48,7 +48,8 @@ class CertSetDBHandlerMock : public psd::CertSetDBHandler {
   CertSetDBHandlerMock(uid_t uid, int pid) : psd::CertSetDBHandler(uid, pid) {}
 
   MOCK_METHOD0(Connect, bool());
-  MOCK_METHOD0(GetConnection, std::vector<std::pair<sqlite3*, uid_t>>());
+  MOCK_METHOD0(GetConnection, const std::vector<std::pair<tizen_base::Database,
+      uid_t>>&());
 };
 
 class CertGetDBHandlerMock : public psd::CertGetDBHandler {
@@ -56,50 +57,46 @@ class CertGetDBHandlerMock : public psd::CertGetDBHandler {
   CertGetDBHandlerMock(uid_t uid, int pid) : psd::CertGetDBHandler(uid, pid) {}
 
   MOCK_METHOD0(Connect, bool());
-  MOCK_METHOD0(GetConnection, std::vector<std::pair<sqlite3*, uid_t>>());
+  MOCK_METHOD0(GetConnection, const std::vector<std::pair<tizen_base::Database,
+      uid_t>>&());
 };
 
 class CertDBHandlerTest : public ::testing::Test {
  public:
   virtual void SetUp() {
-    sqlite3 *db;
-    ASSERT_EQ(sqlite3_open_v2(TEST_CERT_DB, &db,
-        SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL), SQLITE_OK);
-
-    SetDBHandles(
-        std::vector<std::pair<sqlite3*, uid_t>> { std::make_pair(db, 0) });
+    tizen_base::Database db(TEST_CERT_DB, SQLITE_OPEN_READWRITE |
+        SQLITE_OPEN_CREATE);
+    db_handles_.emplace_back(std::move(db), 0);
     CreateCertDBHandlerMock create_db_handler(0, 0);
 
     EXPECT_CALL(create_db_handler, Connect())
         .Times(2).WillRepeatedly(testing::Return(true));
     EXPECT_CALL(create_db_handler, GetConnection())
-        .Times(2).WillRepeatedly(testing::Return(GetDBHandles()));
+        .Times(2).WillRepeatedly(testing::ReturnRef(db_handles_));
 
-    fopen_mock_setup(true);
+    MakeVersionFile();
+    pkgmgr_server::internal::SetEnableUnitTest(true);
     ASSERT_EQ(create_db_handler.Execute(), 0);
-    fopen_mock_setup(false);
+    pkgmgr_server::internal::SetEnableUnitTest(false);
   }
 
   virtual void TearDown() {
-    for (auto& handle : db_handles_)
-      sqlite3_close_v2(handle.first);
-
+    db_handles_.clear();
     ASSERT_EQ(remove(TEST_CERT_DB), 0);
     std::string journal_path(TEST_CERT_DB);
     journal_path += "-journal";
     ASSERT_EQ(remove(journal_path.c_str()), 0);
   }
 
-  const std::vector<std::pair<sqlite3*, uid_t>>& GetDBHandles() {
-    return db_handles_;
-  }
-
  private:
-  void SetDBHandles(std::vector<std::pair<sqlite3*, uid_t>> db_handles) {
-    db_handles_ = std::move(db_handles);
+  void MakeVersionFile() {
+    std::remove("./pkg_db_version.txt");
+    std::ofstream ofs("./pkg_db_version.txt");
+    ofs << "30005";
   }
 
-  std::vector<std::pair<sqlite3*, uid_t>> db_handles_;
+ protected:
+  std::vector<std::pair<tizen_base::Database, uid_t>> db_handles_;
 };
 
 TEST_F(CertDBHandlerTest, CertDBHandlerTest) {
@@ -111,13 +108,13 @@ TEST_F(CertDBHandlerTest, CertDBHandlerTest) {
 
   EXPECT_CALL(cert_set_db_handler, Connect()).WillOnce(testing::Return(true));
   EXPECT_CALL(cert_set_db_handler, GetConnection())
-      .WillOnce(testing::Return(GetDBHandles()));
+      .WillOnce(testing::ReturnRef(db_handles_));
   ASSERT_EQ(cert_set_db_handler.Execute(), 0);
 
   CertGetDBHandlerMock cert_get_db_handler(0, 0);
   EXPECT_CALL(cert_get_db_handler, Connect()).WillOnce(testing::Return(true));
   EXPECT_CALL(cert_get_db_handler, GetConnection())
-      .WillOnce(testing::Return(GetDBHandles()));
+      .WillOnce(testing::ReturnRef(db_handles_));
   cert_get_db_handler.SetPkgID("test_pkgid");
   ASSERT_EQ(cert_get_db_handler.Execute(), PMINFO_R_OK);