-
-
Notifications
You must be signed in to change notification settings - Fork 87
/
test_keepass.py
100 lines (84 loc) · 3.16 KB
/
test_keepass.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# -*- encoding: utf-8 -*-
# pass-import - test suite
# Copyright (C) 2017-2020 Alexandre PUJOL <alexandre@pujol.io>.
#
import os
import copy
from unittest.mock import patch
from pass_import.managers.keepass import Keepass
import tests
class TestExportKeepass(tests.Test):
"""Test keepass general features."""
def setUp(self):
"""Setup a new keepass repository."""
self._tmpdir('keepass.kdbx')
self.keepass = Keepass(self.prefix)
self.keepass.all = True
def test_keepass_exist(self):
"""Testing: exist."""
self._init_keepass()
self.assertTrue(self.keepass.exist())
self.keepass.prefix = ''
self.assertFalse(self.keepass.exist())
def test_keepass_isvalid(self):
"""Testing: isvalid."""
self.assertTrue(self.keepass.isvalid())
@tests.skipIfNoModule('pykeepass')
class TestExportKeepassInsert(tests.Test):
"""Test keepass insert features."""
keep = {
'password', 'login', 'url', 'website', 'uuid', 'otpauth', 'path',
'comments'
}
def setUp(self):
self._tmpdir('keepass.kdbx')
@patch("getpass.getpass")
def test_keepass_insert(self, pw):
"""Testing: keepass insert."""
pw.return_value = self.masterpassword
self._init_keepass()
entry = {
'password': 'UuQHzvv6IHRIJGjwKru7',
'login': 'lnqYm3ZWtm',
'url': 'https://twitter.com',
'website': 'https://pujol.io',
'uuid': '44jle5q3fdvrprmaahozexy2pi',
'otpauth': 'otpauth://totp/totp-secret?secret=JBSWY3DPEHPK3PXP&'
'issuer=alice@google.com&algorithm=SHA1&digits=6&per'
'iod=30',
'path': 'Test/test'
}
ref = copy.deepcopy(entry)
with Keepass(self.prefix) as keepass:
keepass.insert(entry)
keepass.parse()
data = keepass.data[0]
data['path'] = os.path.join(data['group'], data['title'])
self.assertImport([data], [ref], self.keep)
@patch("getpass.getpass")
def test_keepass_insert_empty(self, pw):
"""Testing: keepass insert empty."""
pw.return_value = self.masterpassword
self._init_keepass()
entry = {'path': 'test'}
ref = copy.deepcopy(entry)
with Keepass(self.prefix) as keepass:
keepass.insert(entry)
keepass.parse()
data = keepass.data[0]
data['path'] = os.path.join(data.pop('group', ''),
data.pop('title', ''))
self.assertImport([data], [ref], self.keep)
@patch("getpass.getpass")
def test_keepass_binary(self, pw):
"""Testing: keepass insert & show binary file."""
pw.return_value = self.masterpassword
self._init_keepass()
with open(os.path.join(tests.assets, 'pass.png'), 'rb') as file:
data = file.read()
entry = {'data': data, 'path': 'pass.png'}
ref = copy.deepcopy(entry)
with Keepass(self.prefix) as keepass:
keepass.insert(entry)
keepass.parse()
self.assertEqual(keepass.data[0]['data'], ref['data'])