1 #include <gtest/gtest.h>
7 #include <boost/filesystem.hpp>
8 #include <boost/polymorphic_pointer_cast.hpp>
10 #include "libaktualizr/packagemanagerfactory.h"
11 #include "libaktualizr/packagemanagerinterface.h"
13 #include "http/httpclient.h"
14 #include "logging/logging.h"
15 #include "package_manager/ostreemanager.h"
16 #include "primary/reportqueue.h"
17 #include "primary/sotauptaneclient.h"
18 #include "storage/invstorage.h"
19 #include "uptane/uptanerepository.h"
20 #include "uptane_test_common.h"
21 #include "utilities/utils.h"
23 boost::filesystem::path credentials;
24 boost::filesystem::path sysroot;
26 TEST(UptaneCI, ProvisionAndPutManifest) {
30 Config config(
"tests/config/minimal.toml");
31 config.provision.provision_path = credentials;
32 config.provision.mode = ProvisionMode::kSharedCredReuse;
33 config.storage.path = temp_dir.Path();
34 config.pacman.type = PACKAGE_MANAGER_NONE;
35 config.postUpdateValues();
37 auto storage = INvStorage::newStorage(config.storage);
38 auto sota_client = std_::make_unique<UptaneTestCommon::TestUptaneClient>(config, storage);
39 EXPECT_NO_THROW(sota_client->initialize());
40 EXPECT_TRUE(sota_client->putManifestSimple());
43 TEST(UptaneCI, CheckKeys) {
45 Config config(
"tests/config/minimal.toml");
46 config.provision.provision_path = credentials;
47 config.provision.mode = ProvisionMode::kSharedCredReuse;
48 config.storage.path = temp_dir.Path();
49 config.pacman.type = PACKAGE_MANAGER_OSTREE;
50 config.pacman.sysroot = sysroot;
51 config.postUpdateValues();
52 boost::filesystem::remove_all(config.storage.path);
54 auto storage = INvStorage::newStorage(config.storage);
56 UptaneTestCommon::addDefaultSecondary(config, temp_dir,
"",
"secondary_hardware");
57 auto sota_client = std_::make_unique<UptaneTestCommon::TestUptaneClient>(config, storage);
58 EXPECT_NO_THROW(sota_client->initialize());
63 EXPECT_TRUE(storage->loadTlsCreds(&ca, &cert, &pkey));
64 EXPECT_TRUE(ca.size() > 0);
65 EXPECT_TRUE(cert.size() > 0);
66 EXPECT_TRUE(pkey.size() > 0);
68 std::string primary_public;
69 std::string primary_private;
70 EXPECT_TRUE(storage->loadPrimaryKeys(&primary_public, &primary_private));
71 EXPECT_TRUE(primary_public.size() > 0);
72 EXPECT_TRUE(primary_private.size() > 0);
74 std::map<Uptane::EcuSerial, std::shared_ptr<SecondaryInterface> >::iterator it;
75 for (it = sota_client->secondaries.begin(); it != sota_client->secondaries.end(); it++) {
76 std::shared_ptr<Primary::ManagedSecondary> managed_secondary =
77 std::dynamic_pointer_cast<Primary::ManagedSecondary>(it->second);
78 EXPECT_TRUE(managed_secondary);
80 std::string public_key;
81 std::string private_key;
82 EXPECT_TRUE(managed_secondary->loadKeys(&public_key, &private_key));
83 EXPECT_TRUE(public_key.size() > 0);
84 EXPECT_TRUE(private_key.size() > 0);
85 EXPECT_NE(public_key, private_key);
90 int main(
int argc,
char **argv) {
91 ::testing::InitGoogleTest(&argc, argv);
93 logger_set_threshold(boost::log::trivial::trace);
96 std::cerr <<
"Error: " << argv[0]
97 <<
" requires a path to a credentials archive and an OSTree sysroot as input arguments.\n";
100 credentials = argv[1];
102 return RUN_ALL_TESTS();