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