Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
packagemanagerfactory_test.cc
1 #include <gtest/gtest.h>
2 
3 #include <boost/filesystem.hpp>
4 #include <memory>
5 
6 #include "config/config.h"
7 #include "package_manager/packagemanagerfactory.h"
8 #include "package_manager/packagemanagerinterface.h"
9 #include "storage/invstorage.h"
10 #include "utilities/utils.h"
11 
12 boost::filesystem::path sysroot;
13 
14 /* Support OSTree as a package manager. */
15 TEST(PackageManagerFactory, Ostree) {
16  Config config;
17  config.pacman.type = PackageManager::kOstree;
18  config.pacman.sysroot = sysroot;
20  config.storage.path = dir.Path();
21  std::shared_ptr<INvStorage> storage = INvStorage::newStorage(config.storage);
22 #ifdef BUILD_OSTREE
23  std::shared_ptr<PackageManagerInterface> pacman =
24  PackageManagerFactory::makePackageManager(config.pacman, config.bootloader, storage, nullptr);
25  EXPECT_TRUE(pacman);
26 #else
27  EXPECT_THROW(std::shared_ptr<PackageManagerInterface> pacman =
28  PackageManagerFactory::makePackageManager(config.pacman, config.bootloader, storage, nullptr),
29  std::runtime_error);
30 #endif
31 }
32 
33 TEST(PackageManagerFactory, Debian) {
34  Config config;
35  config.pacman.type = PackageManager::kDebian;
37  config.storage.path = dir.Path();
38  std::shared_ptr<INvStorage> storage = INvStorage::newStorage(config.storage);
39 #ifdef BUILD_DEB
40  std::shared_ptr<PackageManagerInterface> pacman =
41  PackageManagerFactory::makePackageManager(config.pacman, config.bootloader, storage, nullptr);
42  EXPECT_TRUE(pacman);
43 #else
44  EXPECT_THROW(std::shared_ptr<PackageManagerInterface> pacman =
45  PackageManagerFactory::makePackageManager(config.pacman, config.bootloader, storage, nullptr),
46  std::runtime_error);
47 #endif
48 }
49 
50 TEST(PackageManagerFactory, None) {
51  Config config;
53  config.storage.path = dir.Path();
54  std::shared_ptr<INvStorage> storage = INvStorage::newStorage(config.storage);
55  config.pacman.type = PackageManager::kNone;
56  std::shared_ptr<PackageManagerInterface> pacman =
57  PackageManagerFactory::makePackageManager(config.pacman, config.bootloader, storage, nullptr);
58  EXPECT_TRUE(pacman);
59 }
60 
61 TEST(PackageManagerFactory, Bad) {
62  Config config;
64  config.storage.path = dir.Path();
65  config.pacman.type = (PackageManager)-1;
66  std::shared_ptr<INvStorage> storage = INvStorage::newStorage(config.storage);
67  std::shared_ptr<PackageManagerInterface> pacman =
68  PackageManagerFactory::makePackageManager(config.pacman, config.bootloader, storage, nullptr);
69  EXPECT_FALSE(pacman);
70 }
71 
72 #ifndef __NO_MAIN__
73 int main(int argc, char **argv) {
74  ::testing::InitGoogleTest(&argc, argv);
75 
76  if (argc != 2) {
77  std::cerr << "Error: " << argv[0] << " requires the path to an OSTree sysroot as an input argument.\n";
78  return EXIT_FAILURE;
79  }
80  sysroot = argv[1];
81  return RUN_ALL_TESTS();
82 }
83 #endif
Config
Configuration object for an aktualizr instance running on a primary ECU.
Definition: config.h:73
PackageManagerFactory
Definition: packagemanagerfactory.h:8
TemporaryDirectory
Definition: utils.h:82