commit 5faa0ab7b0bacc93bdbd1be0fb9e3802591584a1 branch master Author: Michael Leupold Date: Mon Nov 1 13:17:56 2010 +0000 Extend KSecretTest to also create, check and change items. Fix small bugs on the go. svn path=/trunk/playground/base/ksecretservice/; revision=1191929 diff --git a/backend/ksecret/ksecretcollection.cpp b/backend/ksecret/ksecretcollection.cpp index 0689ef1..1df60f0 100644 --- a/backend/ksecret/ksecretcollection.cpp +++ b/backend/ksecret/ksecretcollection.cpp @@ -315,6 +315,9 @@ BackendReturn KSecretCollection::createItem(const QString &label, emit itemCreated(item); } + // mark the modification date of the collection. + m_modified = QDateTime::currentDateTime(); + // sync m_dirty = true; startSyncTimer(); diff --git a/backend/tests/ksecrettest.cpp b/backend/tests/ksecrettest.cpp index 660218f..fec81d8 100644 --- a/backend/tests/ksecrettest.cpp +++ b/backend/tests/ksecrettest.cpp @@ -90,6 +90,8 @@ void KSecretTest::testCreateCollectionAsync() // remember the collection m_collection = createColl->collection(); + m_collCreated = m_collection->created(); + m_collModified = m_collection->modified(); } void KSecretTest::testLockCollectionAsync() @@ -179,6 +181,100 @@ void KSecretTest::testCreateItemAsync() QCOMPARE(m_collection->items().value().size(), 1); QCOMPARE(m_collection->items().value().first(), createItem->item()); QCOMPARE(m_collection->items().value().first()->secret().value().toByteArray(), QByteArray("cccc")); + + // remember the item + m_item = createItem->item(); +} + +void KSecretTest::testCheckItem() +{ + // check attributes + QVERIFY(!m_item->isLocked()); + QVERIFY(!m_item->id().isEmpty()); + BackendReturn ret1 = m_item->label(); + QVERIFY(!ret1.isError()); + QCOMPARE(ret1.value(), QString("testitem")); + BackendReturn ret2 = m_item->secret(); + QVERIFY(!ret2.isError()); + QCOMPARE(ret2.value().toByteArray(), QByteArray("cccc")); + BackendReturn > ret3 = m_item->attributes(); + QVERIFY(!ret3.isError()); + QCOMPARE(ret3.value().size(), 1); + QCOMPARE(ret3.value().value("mainattr"), QLatin1String("haha")); + + // check timestamps + QDateTime cur = QDateTime::currentDateTime(); + QVERIFY(m_item->created() >= m_collCreated); + QVERIFY(cur >= m_item->created()); + QVERIFY(m_item->modified() >= m_collCreated); + QVERIFY(cur >= m_item->modified()); + + // remember item creation and modification times + m_itemCreated = m_item->created(); + m_itemModified = m_item->modified(); +} + +void KSecretTest::testSearchItem() +{ + // search for the item we just created and find it. + QMap attr1; + attr1["mainattr"] = "haha"; + BackendReturn > ret1 = m_collection->searchItems(attr1); + QVERIFY(!ret1.isError()); + QCOMPARE(ret1.value().size(), 1); + QCOMPARE(ret1.value().first(), m_item); + + // search for another item and DON'T find it. + QMap attr2; + attr2["mainattr"] = "hoho"; + BackendReturn > ret2 = m_collection->searchItems(attr2); + QVERIFY(!ret2.isError()); + QVERIFY(ret2.value().isEmpty()); +} + +void KSecretTest::testChangeItem() +{ + QDateTime start = QDateTime::currentDateTime(); + + // change the item we created earlier + BackendReturn ret1 = m_item->setLabel("itemtest"); + QVERIFY(!ret1.isError()); + BackendReturn ret2 = m_item->setSecret(QCA::SecureArray(4, 'b')); + QVERIFY(!ret2.isError()); + QMap attr1; + attr1["mainattr"] = "huhu"; + attr1["secoattr"] = "hihi"; + BackendReturn ret3 = m_item->setAttributes(attr1); + + // check the values match with what we set + BackendReturn ret4 = m_item->label(); + QVERIFY(!ret4.isError()); + QCOMPARE(ret4.value(), QString("itemtest")); + BackendReturn ret5 = m_item->secret(); + QVERIFY(!ret5.isError()); + QCOMPARE(ret5.value().toByteArray(), QByteArray("bbbb")); + BackendReturn > ret6 = m_item->attributes(); + QVERIFY(!ret6.isError()); + QCOMPARE(ret6.value().size(), 2); + QCOMPARE(ret6.value().value("mainattr"), QString("huhu")); + QCOMPARE(ret6.value().value("secoattr"), QString("hihi")); + + QDateTime end = QDateTime::currentDateTime(); + + // make sure the item's creation time didn't change and the modification + // time changed. + QCOMPARE(m_item->created(), m_itemCreated); + QVERIFY(m_item->modified() >= start); + QVERIFY(m_item->modified() <= end); + QCOMPARE(m_collection->created(), m_collCreated); + QVERIFY(m_collection->modified() >= start); + QVERIFY(m_collection->modified() <= end); + + // change the item back so the tests still work + QVERIFY(!m_item->setLabel("testitem").isError()); + QMap attr2; + attr2["mainattr"] = "haha"; + QVERIFY(!m_item->setAttributes(attr2).isError()); } void KSecretTest::testReplaceItemAsync() diff --git a/backend/tests/ksecrettest.h b/backend/tests/ksecrettest.h index dca8f74..ab293f6 100644 --- a/backend/tests/ksecrettest.h +++ b/backend/tests/ksecrettest.h @@ -25,6 +25,7 @@ class BackendCollectionManager; class BackendCollection; +class BackendItem; class KSecretTest : public QObject { @@ -37,6 +38,9 @@ private Q_SLOTS: void testLockCollectionAsync(); void testUnlockCollectionAsync(); void testCreateItemAsync(); + void testCheckItem(); + void testSearchItem(); + void testChangeItem(); void testReplaceItemAsync(); void testDoNotReplaceItemAsync(); void testDeleteItemAsync(); @@ -47,9 +51,13 @@ private Q_SLOTS: private: BackendCollectionManager *m_manager; BackendCollection *m_collection; + BackendItem *m_item; QDateTime m_collCreated; QDateTime m_collModified; + + QDateTime m_itemCreated; + QDateTime m_itemModified; }; #endif