ssu
Loading...
Searching...
No Matches
repomanagertest.cpp
Go to the documentation of this file.
1
9
10#include "repomanagertest.h"
11
12#include <QtTest/QtTest>
13
16
17void RepoManagerTest::initTestCase()
18{
19 rndRepos << "mer-core" << "adaptation" << "nemo" << "non-oss" << "oss";
20 releaseRepos << "vendor" << "apps";
21}
22
23void RepoManagerTest::testSettings()
24{
25 SsuCoreConfig *const coreConfig = SsuCoreConfig::instance();
26 SsuRepoManager repoManager;
27
28 repoManager.add("repo1", "http://repo1");
29 QCOMPARE(coreConfig->value("repository-urls/repo1").toString(), QString("http://repo1"));
30 QVERIFY(!coreConfig->value("enabled-repos").toStringList().contains("repo1"));
31 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo1"));
32
33 repoManager.enable("repo1");
34 QCOMPARE(coreConfig->value("repository-urls/repo1").toString(), QString("http://repo1"));
35 QVERIFY(!coreConfig->value("enabled-repos").toStringList().contains("repo1"));
36 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo1"));
37
38 repoManager.add("repo1");
39 QCOMPARE(coreConfig->value("repository-urls/repo1").toString(), QString("http://repo1"));
40 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo1"));
41
42 repoManager.disable("repo1");
43 QCOMPARE(coreConfig->value("repository-urls/repo1").toString(), QString("http://repo1"));
44 QVERIFY(coreConfig->value("disabled-repos").toStringList().contains("repo1"));
45
46 repoManager.enable("repo1");
47 QCOMPARE(coreConfig->value("repository-urls/repo1").toString(), QString("http://repo1"));
48 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo1"));
49
50 repoManager.add("repo2", "http://repo2");
51 QCOMPARE(coreConfig->value("repository-urls/repo1").toString(), QString("http://repo1"));
52 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo1"));
53 QCOMPARE(coreConfig->value("repository-urls/repo2").toString(), QString("http://repo2"));
54 QVERIFY(!coreConfig->value("enabled-repos").toStringList().contains("repo2"));
55 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo2"));
56
57 repoManager.disable("repo2");
58 QCOMPARE(coreConfig->value("repository-urls/repo1").toString(), QString("http://repo1"));
59 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo1"));
60 QCOMPARE(coreConfig->value("repository-urls/repo2").toString(), QString("http://repo2"));
61 QVERIFY(!coreConfig->value("enabled-repos").toStringList().contains("repo2"));
62 QVERIFY(coreConfig->value("disabled-repos").toStringList().contains("repo2"));
63
64 repoManager.enable("repo2");
65 QCOMPARE(coreConfig->value("repository-urls/repo1").toString(), QString("http://repo1"));
66 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo1"));
67 QCOMPARE(coreConfig->value("repository-urls/repo2").toString(), QString("http://repo2"));
68 QVERIFY(!coreConfig->value("enabled-repos").toStringList().contains("repo2"));
69 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo2"));
70
71 repoManager.add("repo2");
72 QCOMPARE(coreConfig->value("repository-urls/repo1").toString(), QString("http://repo1"));
73 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo1"));
74 QCOMPARE(coreConfig->value("repository-urls/repo2").toString(), QString("http://repo2"));
75 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo2"));
76
77 repoManager.remove("repo1");
78 QVERIFY(!coreConfig->contains("repository-urls/repo1"));
79 QVERIFY(!coreConfig->value("enabled-repos").toStringList().contains("repo1"));
80 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo1"));
81 QCOMPARE(coreConfig->value("repository-urls/repo2").toString(), QString("http://repo2"));
82 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo2"));
83
84 repoManager.remove("repo2");
85 QVERIFY(!coreConfig->contains("repository-urls/repo1"));
86 QVERIFY(!coreConfig->value("enabled-repos").toStringList().contains("repo1"));
87 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo1"));
88 QVERIFY(!coreConfig->contains("repository-urls/repo2"));
89 QVERIFY(!coreConfig->value("enabled-repos").toStringList().contains("repo2"));
90 QVERIFY(!coreConfig->value("disabled-repos").toStringList().contains("repo2"));
91}
92
93void RepoManagerTest::testCustomRepos()
94{
95 SsuCoreConfig *const coreConfig = SsuCoreConfig::instance();
96 SsuRepoManager repoManager;
97 QStringList customRepos;
98 QSet<QString> set;
99
100 repoManager.add("r1", "http://localhost/r1/");
101 repoManager.add("r2", "http://localhost/r2/");
102 customRepos << "r1" << "r2";
103
104 QCOMPARE(releaseRepos.toSet().count(), 2);
105
106 // check default release repos + custom repos
108 QCOMPARE(coreConfig->deviceMode(), Ssu::ReleaseMode);
109 set = releaseRepos.toSet().unite(repoManager.repos().toSet());
110 QCOMPARE(set.count(), 4);
111 QVERIFY(set == customRepos.toSet().unite(releaseRepos.toSet()));
112
113 // check default rnd repos + custom repos
115 QCOMPARE(coreConfig->deviceMode(), Ssu::RndMode);
116 set = rndRepos.toSet().unite(repoManager.repos().toSet());
117 QCOMPARE(set.count(), 7);
118 QVERIFY(set == customRepos.toSet().unite(rndRepos.toSet()));
119
120 // enable store repository as preconfigured custom repo
121 customRepos << "store";
122 repoManager.add("store");
123 set = rndRepos.toSet().unite(repoManager.repos().toSet());
124 QCOMPARE(set.count(), 8);
125 QVERIFY(set == customRepos.toSet().unite(rndRepos.toSet()));
126
127 // check store repo with release mode
129 QCOMPARE(coreConfig->deviceMode(), Ssu::ReleaseMode);
130 set = releaseRepos.toSet().unite(repoManager.repos().toSet());
131 QCOMPARE(set.count(), 5);
132 QVERIFY(set == customRepos.toSet().unite(releaseRepos.toSet()));
133
134 // check repositories in update mode
135 // store + other custom repositories should be gone
137 QCOMPARE(coreConfig->deviceMode(), Ssu::ReleaseMode | Ssu::UpdateMode);
138 QVERIFY(releaseRepos.toSet() == repoManager.repos().toSet());
139
140 // check rndmode + update mode
141 coreConfig->setDeviceMode(Ssu::RndMode, Ssu::Add);
142 QCOMPARE(coreConfig->deviceMode(), Ssu::ReleaseMode | Ssu::UpdateMode | Ssu::RndMode);
143 QVERIFY(rndRepos.toSet() == repoManager.repos().toSet());
144
146 QCOMPARE(coreConfig->deviceMode(), Ssu::UpdateMode | Ssu::RndMode);
147 QVERIFY(rndRepos.toSet() == repoManager.repos().toSet());
148
149 // check appinstall mode
150 // custom repositories, apart from store, should be gone
151 customRepos.clear();
152 customRepos << "store";
153
154 // check release mode
156 QCOMPARE(coreConfig->deviceMode(), Ssu::ReleaseMode | Ssu::AppInstallMode);
157 set = releaseRepos.toSet().unite(repoManager.repos().toSet());
158 QCOMPARE(set.count(), 3);
159 QVERIFY(set == customRepos.toSet().unite(releaseRepos.toSet()));
160
161 // and rnd mode
162 coreConfig->setDeviceMode(Ssu::RndMode, Ssu::Add);
163 QCOMPARE(coreConfig->deviceMode(), Ssu::ReleaseMode | Ssu::AppInstallMode | Ssu::RndMode);
164 set = rndRepos.toSet().unite(repoManager.repos().toSet());
165 QCOMPARE(set.count(), 6);
166 QVERIFY(set == customRepos.toSet().unite(rndRepos.toSet()));
167
169 QCOMPARE(coreConfig->deviceMode(), Ssu::AppInstallMode | Ssu::RndMode);
170 set = rndRepos.toSet().unite(repoManager.repos().toSet());
171 QCOMPARE(set.count(), 6);
172 QVERIFY(set == customRepos.toSet().unite(rndRepos.toSet()));
173}
174
175void RepoManagerTest::testRepos()
176{
177 SsuCoreConfig *const coreConfig = SsuCoreConfig::instance();
178 SsuRepoManager repoManager;
179 QSet<QString> set;
180
181 // first, check if the repository lists are correct by explicitely
182 // specifying rnd and release modes
183 set = rndRepos.toSet().subtract(repoManager.repos(true).toSet());
184 QVERIFY(set.isEmpty());
185
186 set = releaseRepos.toSet().subtract(repoManager.repos(false).toSet());
187 QVERIFY(set.isEmpty());
188
189 // second, check if changing the device mode in the configuration
190 // properly switches between modes
192 QCOMPARE(coreConfig->deviceMode(), Ssu::ReleaseMode);
193 set = releaseRepos.toSet().subtract(repoManager.repos().toSet());
194 QVERIFY(set.isEmpty());
195
196 // both adding rnd-mode on top of release mode, and setting it
197 // to rnd mode only should switch the device to rnd mode
198 coreConfig->setDeviceMode(Ssu::RndMode, Ssu::Add);
199 QCOMPARE(coreConfig->deviceMode(), Ssu::ReleaseMode | Ssu::RndMode);
200 set = rndRepos.toSet().subtract(repoManager.repos().toSet());
201 QVERIFY(set.isEmpty());
202
204 QCOMPARE(coreConfig->deviceMode(), Ssu::RndMode);
205 set = rndRepos.toSet().subtract(repoManager.repos().toSet());
206 QVERIFY(set.isEmpty());
207}
Q_INVOKABLE Ssu::DeviceModeFlags deviceMode()
Q_INVOKABLE void setDeviceMode(Ssu::DeviceModeFlags mode, enum Ssu::EditMode editMode=Ssu::Replace)
int remove(const QString &repo)
int add(const QString &repo, const QString &repoUrl=QString())
QStringList repos(int filter=Ssu::NoFilter|Ssu::UserBlacklist)
int enable(const QString &repo)
int disable(const QString &repo)
@ ReleaseMode
Enable Release mode.
Definition ssu.h:70
@ RndMode
Enable RnD mode for device.
Definition ssu.h:69
@ UpdateMode
Do repo isolation and similar bits important for updating devices.
Definition ssu.h:72
@ AppInstallMode
Do repo isolation, but keep store repository enabled.
Definition ssu.h:73
@ Replace
Replace the old value with the new one.
Definition ssu.h:92
@ Add
Make sure the given value is set in the bitmask.
Definition ssu.h:93