@@ -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