[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [KSecretService] 5faa0ab: Extend KSecretTest to also create,
From:       Michael Leupold <lemma () confuego ! org>
Date:       2010-11-09 19:14:34
Message-ID: 20101109191434.B68DDA610C () git ! kde ! org
[Download RAW message or body]

commit 5faa0ab7b0bacc93bdbd1be0fb9e3802591584a1
branch master
Author: Michael Leupold <lemma@confuego.org>
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<BackendItem*> 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<QString> ret1 = m_item->label();
+    QVERIFY(!ret1.isError());
+    QCOMPARE(ret1.value(), QString("testitem"));
+    BackendReturn<QCA::SecureArray> ret2 = m_item->secret();
+    QVERIFY(!ret2.isError());
+    QCOMPARE(ret2.value().toByteArray(), QByteArray("cccc"));
+    BackendReturn<QMap<QString, QString> > 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<QString, QString> attr1;
+    attr1["mainattr"] = "haha";
+    BackendReturn<QList<BackendItem*> > 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<QString, QString> attr2;
+    attr2["mainattr"] = "hoho";
+    BackendReturn<QList<BackendItem*> > 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<void> ret1 = m_item->setLabel("itemtest");
+    QVERIFY(!ret1.isError());
+    BackendReturn<void> ret2 = m_item->setSecret(QCA::SecureArray(4, 'b'));
+    QVERIFY(!ret2.isError());
+    QMap<QString, QString> attr1;
+    attr1["mainattr"] = "huhu";
+    attr1["secoattr"] = "hihi";
+    BackendReturn<void> ret3 = m_item->setAttributes(attr1);
+    
+    // check the values match with what we set
+    BackendReturn<QString> ret4 = m_item->label();
+    QVERIFY(!ret4.isError());
+    QCOMPARE(ret4.value(), QString("itemtest"));
+    BackendReturn<QCA::SecureArray> ret5 = m_item->secret();
+    QVERIFY(!ret5.isError());
+    QCOMPARE(ret5.value().toByteArray(), QByteArray("bbbb"));
+    BackendReturn<QMap<QString, QString> > 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<QString, QString> 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
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic