def _do_new(self, args): node = {} node['username'] = self._get_input("Username: "******"Url: ") node['notes'] = self._get_input("Notes: ") node['tags'] = self._get_tags() node = Node(clear_text=True, **node) self._db.add_node(node) return node
def test_6_listnodes(self): node = Node(clear_text=True, **{ 'username': u"hatman", 'password': u"secret", 'url': u"wonderland.com", 'notes': u"a really great place", 'tags': [u'baz', u'bar'] }) self.db.add_node(node) ids = self.db.listnodes() self.assertEqual(2, len(ids))
def do_new(self, arg): try: username = self.get_username() password = self.get_password() url = self.get_url() notes = self.get_notes() node = Node(username, password, url, notes) tags = self.get_tags() node.set_tags(tags) self._db.addnodes([node]) print "Password ID: %d" % (node.get_id()) except Exception, e: self.error(e)
def test_3_add_node(self): node = Node(clear_text=True, **{ 'username': "******", 'password': "******", 'url': "wonderland.com", 'notes': "a really great place", 'tags': ['foo', 'bar'] }) self.db.add_node(node) rv = self.db._cur.execute("select * from node") ce = CryptoEngine.get() res = rv.fetchone() self.assertEqual(ce.decrypt(res[1]), b"alice")
def test_4_test_tags(self): node = Node(clear_text=True, **{ 'username': u"alice", 'password': u"secret", 'url': u"wonderland.com", 'notes': u"a really great place", 'tags': ['foo', 'bar'] }) ce = CryptoEngine.get() self.db._get_or_create_tag(node._tags[0]) self.assertEqual(1, self.db._get_or_create_tag(node._tags[0])) rv = self.db._get_or_create_tag(ce.encrypt(b'baz')) self.assertEqual(3, rv) self.db._con.commit()
def _create_node(self, row): """create a node object with encrypted properties""" try: n = { 'clear_text': True, 'username': row[0], 'password': row[2], 'url': row[1], 'notes': row[3], 'tags': row[4].split(',') } node = Node(**n) except IndexError as err: print('{}\nDid you specify the correct delimiter?'.format(err)) sys.exit(1) return node
def import_data(self, db, file): tree = ET.parse(file) root = tree.getroot() nodes = root.findall("Node") nodesarray = [] for n in nodes: username = n.findtext("username") password = n.findtext("password") url = n.findtext("url") notes = n.findtext("notes") node = Node(username, password, url, notes) tagnames = n.find("tags").findall("name") tags = [] for t in tagnames: tags.append(Tag(t.text)) node.set_tags(tags) nodesarray.append(node) db.addnodes(nodesarray)
def parse_list(self, db, list): lists = list.findall("PwList") for l in lists: name = l.get("name").lower().replace(' ', '') self.tagstack.append(name) self.parse_list(db, l) self.tagstack.pop() items = list.findall("PwItem") tags = [] for t in self.tagstack: tags.append(Tag(t)) for i in items: username = i.findtext("user") password = i.findtext("passwd") url = i.findtext("host") notes = "%s | %s" % (i.findtext("name"), i.findtext("launch")) n = Node(username, password, url, notes) n.set_tags(tags) self.nodes.append(n)
def test_5_add_node(self): innode = [ u"TBONE", u"S3K43T", u"example.org", u"some note", [u"bartag", u"footag"] ] kwargs = { "username": innode[0], "password": innode[1], "url": innode[2], "notes": innode[3], "tags": innode[4] } node = Node(clear_text=True, **kwargs) self.db.add_node(node) outnode = self.db.getnodes([1])[0] no = outnode[1:5] no.append(outnode[5:]) o = Node.from_encrypted_entries(*no) self.assertEqual(list(node), list(o))
def setUp(self): self.node = Node(username=b'foo', password=b's3kr3t', url=b'example.com', notes=b'just a reminder to self', tags=[b'baz', b'baz'])