Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
debianmanager_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 TEST(PackageManagerFactory, Debian_Install_Good) {
13  Config config;
14  config.pacman.type = PackageManager::kDebian;
16  config.storage.path = dir.Path();
17 
18  std::shared_ptr<INvStorage> storage = INvStorage::newStorage(config.storage);
19  std::shared_ptr<PackageManagerInterface> pacman =
20  PackageManagerFactory::makePackageManager(config.pacman, config.bootloader, storage, nullptr);
21  EXPECT_TRUE(pacman);
22  Json::Value target_json;
23  target_json["hashes"]["sha256"] = "hash";
24  target_json["length"] = 2;
25  target_json["custom"]["ecuIdentifiers"]["primary_serial"]["hardwareId"] = "primary_hwid";
26  Uptane::Target target("good.deb", target_json);
27 
28  storage->storeEcuSerials({{Uptane::EcuSerial("primary_serial"), Uptane::HardwareIdentifier("primary_hwid")}});
29 
30  Json::Value target_json_test;
31  target_json_test["hashes"]["sha256"] = "hash_old";
32  target_json_test["length"] = 2;
33  Uptane::Target target_test("test.deb", target_json_test);
34  storage->savePrimaryInstalledVersion(target_test, InstalledVersionUpdateMode::kCurrent);
35  std::unique_ptr<StorageTargetWHandle> fhandle = storage->allocateTargetFile(false, target);
36  std::stringstream("ab") >> *fhandle;
37  fhandle->wcommit();
38 
39  EXPECT_EQ(pacman->install(target).result_code.num_code, data::ResultCode::Numeric::kOk);
40  EXPECT_TRUE(pacman->getCurrent().MatchTarget(target));
41 }
42 
43 TEST(PackageManagerFactory, Debian_Install_Bad) {
44  Config config;
45  config.pacman.type = PackageManager::kDebian;
47  config.storage.path = dir.Path();
48  std::shared_ptr<INvStorage> storage = INvStorage::newStorage(config.storage);
49  std::shared_ptr<PackageManagerInterface> pacman =
50  PackageManagerFactory::makePackageManager(config.pacman, config.bootloader, storage, nullptr);
51  EXPECT_TRUE(pacman);
52  Json::Value target_json;
53  target_json["hashes"]["sha256"] = "hash";
54  target_json["length"] = 2;
55  target_json["custom"]["ecuIdentifiers"]["primary_serial"]["hardwareId"] = "primary_hwid";
56  Uptane::Target target("bad.deb", target_json);
57 
58  std::unique_ptr<StorageTargetWHandle> fhandle = storage->allocateTargetFile(false, target);
59  std::stringstream("ab") >> *fhandle;
60  fhandle->wcommit();
61 
62  auto result = pacman->install(target);
63  EXPECT_EQ(result.result_code.num_code, data::ResultCode::Numeric::kInstallFailed);
64  EXPECT_EQ(result.description, "Error installing");
65 }
66 
67 #ifndef __NO_MAIN__
68 int main(int argc, char **argv) {
69  ::testing::InitGoogleTest(&argc, argv);
70 
71  return RUN_ALL_TESTS();
72 }
73 #endif
Uptane::HardwareIdentifier
Definition: tuf.h:143
Config
Configuration object for an aktualizr instance running on a primary ECU.
Definition: config.h:73
Uptane::EcuSerial
Definition: tuf.h:174
PackageManagerFactory
Definition: packagemanagerfactory.h:8
TemporaryDirectory
Definition: utils.h:82
result
Results of libaktualizr API calls.
Definition: results.h:13
Uptane::Target
Definition: tuf.h:238
data::ResultCode::Numeric::kInstallFailed
Package installation failed.