Skip to content

Commit 4cd1baa

Browse files
akallabethfrankosterfeld
authored andcommitted
unit tests: test empty service key
Add tests that utilize an empty service key as is allowed by the API description
1 parent e2f0459 commit 4cd1baa

1 file changed

Lines changed: 42 additions & 26 deletions

File tree

autotest/basic.cpp

Lines changed: 42 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -37,44 +37,60 @@ private Q_SLOTS:
3737
#ifdef Q_OS_MACOS
3838
QSKIP("This test case has no access to the keychain");
3939
#endif
40-
const QString serviceKey = QStringLiteral("QtKeychainTest-%1").arg(QTest::currentDataTag());
40+
const QStringList serviceKeys ={"", QStringLiteral("QtKeychainTest-%1").arg(QTest::currentDataTag())};
4141
QFETCH(QByteArray, password);
4242
QFETCH(QStringList, usernames);
4343

44-
for (const auto& username : usernames)
44+
for (const auto& serviceKey: serviceKeys)
4545
{
46-
QKeychain::WritePasswordJob writeJob(serviceKey);
47-
writeJob.setKey(username);
48-
writeJob.setBinaryData(password);
49-
QSignalSpy writeSpy(&writeJob, &QKeychain::WritePasswordJob::finished);
50-
writeJob.start();
51-
writeSpy.wait();
46+
for (const auto& username : usernames)
47+
{
48+
QKeychain::WritePasswordJob writeJob(serviceKey);
49+
writeJob.setKey(username);
50+
writeJob.setBinaryData(username.toUtf8()+password);
51+
QSignalSpy writeSpy(&writeJob, &QKeychain::WritePasswordJob::finished);
52+
writeJob.start();
53+
writeSpy.wait();
5254
#ifdef Q_OS_WIN
53-
QEXPECT_FAIL("18944", "Maximum for Windows is exceeded", Abort);
55+
QEXPECT_FAIL("18944", "Maximum for Windows is exceeded", Abort);
5456
#endif
55-
qDebug() << writeJob.errorString();
56-
QCOMPARE(writeJob.error(), QKeychain::NoError);
57+
qDebug() << "[write]" << writeJob.error() << ": " << writeJob.errorString();
58+
const auto expected = (serviceKey.isEmpty() && username.isEmpty()) ? QKeychain::EntryNotFound : QKeychain::NoError;
59+
QCOMPARE(writeJob.error(), expected);
60+
}
5761
}
5862

59-
for (const auto& username : usernames)
63+
for (const auto& serviceKey: serviceKeys)
6064
{
61-
QKeychain::ReadPasswordJob readJob(serviceKey);
62-
readJob.setKey(username);
63-
QSignalSpy readSpy(&readJob, &QKeychain::ReadPasswordJob::finished);
64-
readJob.start();
65-
readSpy.wait();
66-
QCOMPARE(readJob.error(), QKeychain::NoError);
67-
QCOMPARE(readJob.binaryData(), password);
65+
for (const auto& username : usernames)
66+
{
67+
QKeychain::ReadPasswordJob readJob(serviceKey);
68+
readJob.setKey(username);
69+
QSignalSpy readSpy(&readJob, &QKeychain::ReadPasswordJob::finished);
70+
readJob.start();
71+
readSpy.wait();
72+
qDebug() << "[read]" << readJob.error() << ": " << readJob.errorString();
73+
const auto expected = (serviceKey.isEmpty() && username.isEmpty()) ? QKeychain::EntryNotFound : QKeychain::NoError;
74+
QCOMPARE(readJob.error(), expected);
75+
if (expected == QKeychain::NoError) {
76+
QCOMPARE(readJob.binaryData(), username.toUtf8()+password);
77+
}
78+
}
6879
}
6980

70-
for (const auto& username : usernames)
81+
for (const auto& serviceKey: serviceKeys)
7182
{
72-
QKeychain::DeletePasswordJob deleteJob(serviceKey);
73-
deleteJob.setKey(username);
74-
QSignalSpy deleteSpy(&deleteJob, &QKeychain::DeletePasswordJob::finished);
75-
deleteJob.start();
76-
deleteSpy.wait();
77-
QCOMPARE(deleteJob.error(), QKeychain::NoError);
83+
for (const auto& username : usernames)
84+
{
85+
QKeychain::DeletePasswordJob deleteJob(serviceKey);
86+
deleteJob.setKey(username);
87+
QSignalSpy deleteSpy(&deleteJob, &QKeychain::DeletePasswordJob::finished);
88+
deleteJob.start();
89+
deleteSpy.wait();
90+
qDebug() << "[delete]" << deleteJob.error() << ": " << deleteJob.errorString();
91+
const auto expected = (serviceKey.isEmpty() && username.isEmpty()) ? QKeychain::EntryNotFound : QKeychain::NoError;
92+
QCOMPARE(deleteJob.error(), expected);
93+
}
7894
}
7995
}
8096
};

0 commit comments

Comments
 (0)