/** * Save KDBX */ private E entryFactory(D database, String s, int e) { return database.newEntry(String.format("Group %s Entry %d", s, e)); }
@Test public void testTimes() { long before = (new Date().getTime() / 1000L) * 1000L; // round to next lower second E entry = database.newEntry(); long after = (new Date().getTime()/ 1000L) * 1000L; // round to next lower second long created = entry.getCreationTime().getTime(); assertTrue(created >= before && created <= after); assertFalse(entry.getExpires()); assertTrue(entry.getLastAccessTime().getTime() <= created); assertTrue(entry.getLastModificationTime().getTime() <= created); entry.setExpires(true); entry.setExpiryTime(new Date(created)); assertTrue(entry.getExpires()); assertEquals(created, entry.getExpiryTime().getTime()); }
/** * Group by title */ public G groupByTitle(D database) { List<? extends E> entries = database.findEntries(new Entry.Matcher() { @Override public boolean matches(Entry entry) { return entry.getProperty(Entry.STANDARD_PROPERTY_NAME_TITLE).toLowerCase().contains("findme!"); } }); // create a new group using DB factory method G newParent = database.newGroup("Found entries"); // iterate over the found entries for (E entry : entries) { // copy the entry using DB factory so it remains where it was found as well as being in new group E copy = database.newEntry(entry); // add new entry to new group newParent.addEntry(copy); } return newParent; }
private E entryFactory(D database, String g, int e) { E result = database.newEntry(); result.setTitle(g + "-" + e); result.setUsername(g + " - un - " + e); result.setPassword(g + "- p -" + e); result.setUrl(g + "- url - " + e); result.setNotes(g + "- n - " + e); return result; }
@Test public void testAddRemoveEntry() { E e1 = database.getRootGroup().addEntry(database.newEntry()); e1.setTitle("entry1"); List<? extends E> l1 = database.findEntries("entry1"); Assert.assertTrue(l1.size() == 1); E e12 = database.getRootGroup().addEntry(database.newEntry("entry12")); List<? extends E> l2 = database.findEntries("entry1"); Assert.assertTrue(l2.size() == 2); // show that the entries are different Assert.assertFalse(l2.get(0).equals(l2.get(1))); // show that the list is a copy l2.clear(); Assert.assertTrue(database.findEntries("entry1").size() == 2); // show that we get an equivalent entry when we remove to when we inserted Entry e12b = database.getRootGroup().removeEntry(e12); Assert.assertTrue(e12b.equals(e12)); // has been unhooked from parent Assert.assertTrue(e12.getParent() == null); Assert.assertTrue(database.findEntries("entry1").size() == 1); }
entry = database.newEntry(); entry.setTitle("New Entry " + format.format(new Date())); entry.setNotes("Created automatically");
@Override public void copy(Group<? extends Database, ? extends Group, ? extends Entry, ? extends Icon> parent) { for (Group<?,?,?,?> child : parent.getGroups()) { G addedGroup = addGroup(this.getDatabase().newGroup(child)); addedGroup.copy(child); } for (Entry entry : parent.getEntries()) { addEntry(this.getDatabase().newEntry(entry)); } }
@Test public void checkAddChangeRemoveProperty() { // only applies to databases that support arbitrary properties E entry = database.newEntry(); assertEquals(Entry.STANDARD_PROPERTY_NAMES.size(), entry.getPropertyNames().size()); try { entry.setProperty("test", "test1"); } catch (UnsupportedOperationException e) { if (!database.supportsNonStandardPropertyNames()) { return; } fail("Database must report that it doesn't support non standrad properties"); } assertEquals("test1", entry.getProperty("test")); entry.setProperty("test", "test2"); assertEquals("test2", entry.getProperty("test")); assertTrue(entry.removeProperty("test")); assertFalse(entry.removeProperty("test")); assertFalse(entry.removeProperty("test-test")); assertEquals(Entry.STANDARD_PROPERTY_NAMES.size(), entry.getPropertyNames().size()); try { entry.removeProperty(Entry.STANDARD_PROPERTY_NAME_USER_NAME); fail("Should not be able to remove standard property"); } catch (IllegalArgumentException ignore) { // ignore as expected } }
@Test public void testNewEntry() { E e2 = database.newEntry(); Assert.assertNull(e2.getParent()); assertEquals("", e2.getPassword()); Assert.assertNotNull(e2.getUuid()); assertEquals("", e2.getUrl()); assertEquals("", e2.getNotes()); assertEquals("", e2.getUsername()); assertEquals("", e2.getTitle()); Assert.assertNull(e2.getProperty("silly")); List<String> l = e2.getPropertyNames(); l.removeAll(Entry.STANDARD_PROPERTY_NAMES); Assert.assertEquals(0, l.size()); }
@Test public void testSetFields () { E e1 = database.newEntry("Entry 1"); e1.setNotes("this looks a little like Entry 2"); Assert.assertTrue(e1.getNotes().equals("this looks a little like Entry 2"));
assertEquals(2, root.getGroups().size()); E entry1 = database.newEntry(); entry1.setTitle("A new entry"); assertEquals("A new entry", entry1.getTitle()); assertEquals("pass", entry1.getPassword()); E entry2 = database.newEntry(entry1); entry2.setPassword("pass2"); assertEquals("pass2", entry2.getPassword());
@Test public void recycleBinEntries() { database.enableRecycleBin(false); assertFalse(database.isRecycleBinEnabled()); assertNull(database.getRecycleBin()); database.enableRecycleBin(true); assertTrue(database.isRecycleBinEnabled()); G recycleBin = database.getRecycleBin(); assertNotNull(recycleBin); E entry = database.newEntry(); assertEquals(entry, database.getRootGroup().addEntry(entry)); assertEquals(1, database.getRootGroup().getEntriesCount()); assertTrue(database.deleteEntry(entry.getUuid())); assertEquals(0, database.getRootGroup().getEntriesCount()); assertEquals(1, recycleBin.getEntriesCount()); database.enableRecycleBin(false); assertFalse(database.isRecycleBinEnabled()); entry = database.newEntry(); assertEquals(entry, database.getRootGroup().addEntry(entry)); assertEquals(1, database.getRootGroup().getEntriesCount()); assertTrue(database.deleteEntry(entry.getUuid())); assertEquals(0, database.getRootGroup().getEntriesCount()); assertEquals(1, recycleBin.getEntriesCount()); database.emptyRecycleBin(); assertEquals(0, recycleBin.getEntriesCount()); }