mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
parent
0592218fa3
commit
338fe553ba
@ -218,6 +218,9 @@ bool EntrySearcher::searchEntryImpl(const Entry* entry)
|
||||
}
|
||||
found = false;
|
||||
break;
|
||||
case Field::Uuid:
|
||||
found = term.regex.match(entry->uuidToHex()).hasMatch();
|
||||
break;
|
||||
default:
|
||||
// Terms without a specific field try to match title, username, url, and notes
|
||||
found = term.regex.match(entry->resolvePlaceholder(entry->title())).hasMatch()
|
||||
@ -253,7 +256,8 @@ void EntrySearcher::parseSearchTerms(const QString& searchString)
|
||||
{QStringLiteral("url"), Field::Url},
|
||||
{QStringLiteral("group"), Field::Group},
|
||||
{QStringLiteral("tag"), Field::Tag},
|
||||
{QStringLiteral("is"), Field::Is}};
|
||||
{QStringLiteral("is"), Field::Is},
|
||||
{QStringLiteral("uuid"), Field::Uuid}};
|
||||
|
||||
// Group 1 = modifiers, Group 2 = field, Group 3 = quoted string, Group 4 = unquoted string
|
||||
static QRegularExpression termParser(R"re(([-!*+]+)?(?:(\w*):)?(?:(?=")"((?:[^"\\]|\\.)*)"|([^ ]*))( |$))re");
|
||||
|
@ -40,7 +40,8 @@ public:
|
||||
AttributeValue,
|
||||
Group,
|
||||
Tag,
|
||||
Is
|
||||
Is,
|
||||
Uuid
|
||||
};
|
||||
|
||||
struct SearchTerm
|
||||
|
@ -214,6 +214,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_17">
|
||||
<property name="text">
|
||||
<string notr="true">uuid</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
#include "TestEntrySearcher.h"
|
||||
#include "core/Group.h"
|
||||
#include "core/Tools.h"
|
||||
|
||||
#include <QTest>
|
||||
|
||||
@ -372,3 +373,24 @@ void TestEntrySearcher::testSkipProtected()
|
||||
m_entrySearcher.search("_testAttribute:testE1 _testProtected:apple _testAttribute:testE2", m_rootGroup);
|
||||
QCOMPARE(m_searchResult, {});
|
||||
}
|
||||
|
||||
void TestEntrySearcher::testUUIDSearch()
|
||||
{
|
||||
auto entry1 = new Entry();
|
||||
entry1->setGroup(m_rootGroup);
|
||||
entry1->setTitle("testTitle");
|
||||
auto uuid1 = QUuid::createUuid();
|
||||
entry1->setUuid(uuid1);
|
||||
|
||||
auto entry2 = new Entry();
|
||||
entry2->setGroup(m_rootGroup);
|
||||
entry2->setTitle("testTitle2");
|
||||
auto uuid2 = QUuid::createUuid();
|
||||
entry2->setUuid(uuid2);
|
||||
|
||||
m_searchResult = m_entrySearcher.search("uuid:", m_rootGroup);
|
||||
QCOMPARE(m_searchResult.count(), 2);
|
||||
|
||||
m_searchResult = m_entrySearcher.search("uuid:" + Tools::uuidToHex(uuid1), m_rootGroup);
|
||||
QCOMPARE(m_searchResult.count(), 1);
|
||||
}
|
||||
|
@ -38,6 +38,7 @@ private slots:
|
||||
void testCustomAttributesAreSearched();
|
||||
void testGroup();
|
||||
void testSkipProtected();
|
||||
void testUUIDSearch();
|
||||
|
||||
private:
|
||||
Group* m_rootGroup;
|
||||
|
Loading…
Reference in New Issue
Block a user