Erik Grinaker is sharing code with you
Bitbucket is a code hosting site. Unlimited public and private repositories. Free for small teams.
Don't show this againRevelation / test / datahandler_netrc.py
- commit
- ac9e3621e5ea
- parent
- 5a85d838a653
- branch
- default
- tags
- revelation-0.4.1
set release date
1 |
8f4600f01a3d
|
#!/usr/bin/env python |
2 |
8f4600f01a3d
|
|
3 |
8f4600f01a3d
|
# |
4 |
653238141312
|
# Revelation 0.4.1 - a password manager for GNOME 2 |
5 |
8f4600f01a3d
|
# http://oss.codepoet.no/revelation/ |
6 |
8f4600f01a3d
|
# $Id$ |
7 |
8f4600f01a3d
|
# |
8 |
8f4600f01a3d
|
# Unit tests for NetRC datahandler module |
9 |
8f4600f01a3d
|
# |
10 |
8f4600f01a3d
|
# |
11 |
8f4600f01a3d
|
# Copyright (c) 2003-2005 Erik Grinaker |
12 |
8f4600f01a3d
|
# |
13 |
8f4600f01a3d
|
# This program is free software; you can redistribute it and/or |
14 |
8f4600f01a3d
|
# modify it under the terms of the GNU General Public License |
15 |
8f4600f01a3d
|
# as published by the Free Software Foundation; either version 2 |
16 |
8f4600f01a3d
|
# of the License, or (at your option) any later version. |
17 |
8f4600f01a3d
|
# |
18 |
8f4600f01a3d
|
# This program is distributed in the hope that it will be useful, |
19 |
8f4600f01a3d
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
20 |
8f4600f01a3d
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
21 |
8f4600f01a3d
|
# GNU General Public License for more details. |
22 |
8f4600f01a3d
|
# |
23 |
8f4600f01a3d
|
# You should have received a copy of the GNU General Public License |
24 |
8f4600f01a3d
|
# along with this program; if not, write to the Free Software |
25 |
8f4600f01a3d
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
26 |
8f4600f01a3d
|
# |
27 |
8f4600f01a3d
|
|
28 |
8f4600f01a3d
|
import unittest |
29 |
8f4600f01a3d
|
|
30 |
8f4600f01a3d
|
from revelation import data, datahandler, entry |
31 |
8f4600f01a3d
|
|
32 |
8f4600f01a3d
|
|
33 |
8f4600f01a3d
|
class NetRC(unittest.TestCase): |
34 |
8f4600f01a3d
|
"NetRC" |
35 |
8f4600f01a3d
|
|
36 |
8f4600f01a3d
|
def test_attrs(self): |
37 |
8f4600f01a3d
|
"NetRC has sane attrs" |
38 |
8f4600f01a3d
|
|
39 |
8f4600f01a3d
|
self.assertEquals(datahandler.NetRC.name, "netrc") |
40 |
8f4600f01a3d
|
self.assertEquals(datahandler.NetRC.importer, True) |
41 |
8f4600f01a3d
|
self.assertEquals(datahandler.NetRC.exporter, True) |
42 |
8f4600f01a3d
|
self.assertEquals(datahandler.NetRC.encryption, False) |
43 |
8f4600f01a3d
|
|
44 |
8f4600f01a3d
|
|
45 |
8f4600f01a3d
|
|
46 |
8f4600f01a3d
|
class NetRC_export_data(unittest.TestCase): |
47 |
8f4600f01a3d
|
"NetRC.export_data()" |
48 |
8f4600f01a3d
|
|
49 |
8f4600f01a3d
|
def setUp(self): |
50 |
8f4600f01a3d
|
"Sets up common facilities for testing" |
51 |
8f4600f01a3d
|
|
52 |
8f4600f01a3d
|
self.entrystore = data.EntryStore() |
53 |
8f4600f01a3d
|
|
54 |
8f4600f01a3d
|
e = entry.GenericEntry() |
55 |
8f4600f01a3d
|
e.name = "name" |
56 |
8f4600f01a3d
|
e.description = "description" |
57 |
8f4600f01a3d
|
e.updated = 12345678 |
58 |
8f4600f01a3d
|
e[entry.HostnameField] = "hostname" |
59 |
8f4600f01a3d
|
e[entry.UsernameField] = "username" |
60 |
8f4600f01a3d
|
e[entry.PasswordField] = "password" |
61 |
8f4600f01a3d
|
self.entrystore.add_entry(e) |
62 |
8f4600f01a3d
|
|
63 |
8f4600f01a3d
|
e = entry.WebEntry() |
64 |
8f4600f01a3d
|
e.name = "website" |
65 |
8f4600f01a3d
|
e[entry.URLField] = "url" |
66 |
8f4600f01a3d
|
e[entry.UsernameField] = "username" |
67 |
8f4600f01a3d
|
e[entry.PasswordField] = "password" |
68 |
8f4600f01a3d
|
self.entrystore.add_entry(e) |
69 |
8f4600f01a3d
|
|
70 |
8f4600f01a3d
|
fiter = self.entrystore.add_entry(entry.FolderEntry()) |
71 |
8f4600f01a3d
|
|
72 |
8f4600f01a3d
|
e = entry.GenericEntry() |
73 |
8f4600f01a3d
|
e.name = "name2" |
74 |
8f4600f01a3d
|
e.description = "description2" |
75 |
8f4600f01a3d
|
e.updated = 87654321 |
76 |
8f4600f01a3d
|
e[entry.HostnameField] = "hostname2" |
77 |
8f4600f01a3d
|
e[entry.UsernameField] = "username2" |
78 |
8f4600f01a3d
|
e[entry.PasswordField] = "password2" |
79 |
8f4600f01a3d
|
self.entrystore.add_entry(e, fiter) |
80 |
8f4600f01a3d
|
|
81 |
8f4600f01a3d
|
e = entry.GenericEntry() |
82 |
8f4600f01a3d
|
e.name = "test" |
83 |
8f4600f01a3d
|
e[entry.UsernameField] = "username" |
84 |
8f4600f01a3d
|
e[entry.PasswordField] = "password" |
85 |
8f4600f01a3d
|
self.entrystore.add_entry(e) |
86 |
8f4600f01a3d
|
|
87 |
8f4600f01a3d
|
|
88 |
8f4600f01a3d
|
self.testdata = """\ |
89 |
8f4600f01a3d
|
# name |
90 |
8f4600f01a3d
|
# description |
91 |
8f4600f01a3d
|
machine hostname |
92 |
8f4600f01a3d
|
login username |
93 |
8f4600f01a3d
|
password password |
94 |
8f4600f01a3d
|
|
95 |
8f4600f01a3d
|
# name2 |
96 |
8f4600f01a3d
|
# description2 |
97 |
8f4600f01a3d
|
machine hostname2 |
98 |
8f4600f01a3d
|
login username2 |
99 |
8f4600f01a3d
|
password password2 |
100 |
8f4600f01a3d
|
|
101 |
8f4600f01a3d
|
""" |
102 |
8f4600f01a3d
|
|
103 |
8f4600f01a3d
|
|
104 |
8f4600f01a3d
|
def test_data(self): |
105 |
8f4600f01a3d
|
"NetRC.export_data() generates correct data" |
106 |
8f4600f01a3d
|
|
107 |
8f4600f01a3d
|
self.assertEquals(datahandler.NetRC().export_data(self.entrystore), self.testdata) |
108 |
8f4600f01a3d
|
|
109 |
8f4600f01a3d
|
|
110 |
8f4600f01a3d
|
|
111 |
8f4600f01a3d
|
class NetRC_import_data(unittest.TestCase): |
112 |
8f4600f01a3d
|
"NetRC.import_data()" |
113 |
8f4600f01a3d
|
|
114 |
8f4600f01a3d
|
def test_data(self): |
115 |
c094b5acab4e
|
"NetRC.import_data() imports data correctly" |
116 |
8f4600f01a3d
|
|
117 |
8f4600f01a3d
|
netrc = """ |
118 |
8f4600f01a3d
|
# name |
119 |
8f4600f01a3d
|
# description |
120 |
8f4600f01a3d
|
machine hostname |
121 |
8f4600f01a3d
|
login username |
122 |
8f4600f01a3d
|
password password |
123 |
8f4600f01a3d
|
|
124 |
8f4600f01a3d
|
# name2 |
125 |
8f4600f01a3d
|
# description2 |
126 |
8f4600f01a3d
|
machine hostname2 |
127 |
8f4600f01a3d
|
login username2 |
128 |
8f4600f01a3d
|
password password2 |
129 |
8f4600f01a3d
|
""" |
130 |
8f4600f01a3d
|
|
131 |
8f4600f01a3d
|
entrystore = datahandler.NetRC().import_data(netrc) |
132 |
8f4600f01a3d
|
|
133 |
8f4600f01a3d
|
self.assertEquals(entrystore.iter_n_children(None), 2) |
134 |
8f4600f01a3d
|
|
135 |
8f4600f01a3d
|
e = entrystore.get_entry(entrystore.iter_nth_child(None, 0)) |
136 |
8f4600f01a3d
|
self.assertEquals(type(e), entry.GenericEntry) |
137 |
8f4600f01a3d
|
self.assertEquals(e.name, "hostname") |
138 |
8f4600f01a3d
|
self.assertNotEqual(e.updated, 0) |
139 |
8f4600f01a3d
|
self.assertEquals(e[entry.HostnameField], "hostname") |
140 |
8f4600f01a3d
|
self.assertEquals(e[entry.UsernameField], "username") |
141 |
8f4600f01a3d
|
self.assertEquals(e[entry.PasswordField], "password") |
142 |
8f4600f01a3d
|
|
143 |
8f4600f01a3d
|
e = entrystore.get_entry(entrystore.iter_nth_child(None, 1)) |
144 |
8f4600f01a3d
|
self.assertEquals(type(e), entry.GenericEntry) |
145 |
8f4600f01a3d
|
self.assertEquals(e.name, "hostname2") |
146 |
8f4600f01a3d
|
self.assertNotEqual(e.updated, 0) |
147 |
8f4600f01a3d
|
self.assertEquals(e[entry.HostnameField], "hostname2") |
148 |
8f4600f01a3d
|
self.assertEquals(e[entry.UsernameField], "username2") |
149 |
8f4600f01a3d
|
self.assertEquals(e[entry.PasswordField], "password2") |
150 |
8f4600f01a3d
|
|
151 |
8f4600f01a3d
|
|
152 |
8f4600f01a3d
|
def test_format(self): |
153 |
8f4600f01a3d
|
"NetRC.import_data() raises FormatError on invalid format" |
154 |
8f4600f01a3d
|
|
155 |
8f4600f01a3d
|
netrc = """ |
156 |
8f4600f01a3d
|
# name |
157 |
8f4600f01a3d
|
# description |
158 |
8f4600f01a3d
|
machine hostname |
159 |
8f4600f01a3d
|
login username |
160 |
8f4600f01a3d
|
password password |
161 |
8f4600f01a3d
|
|
162 |
8f4600f01a3d
|
oops |
163 |
8f4600f01a3d
|
""" |
164 |
8f4600f01a3d
|
|
165 |
8f4600f01a3d
|
self.assertRaises(datahandler.FormatError, datahandler.NetRC().import_data, netrc) |
166 |
8f4600f01a3d
|
|
167 |
8f4600f01a3d
|
|
168 |
8f4600f01a3d
|
|
169 |
8f4600f01a3d
|
if __name__ == "__main__": |
170 |
8f4600f01a3d
|
unittest.main() |
171 |
8f4600f01a3d
|