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 again

erikg / Revelation

Revelation is a password manager for the GNOME desktop, released under the GNU GPL license. It stores all your accounts and passwords in a single, secure place, and gives you access to it through a user-friendly graphical interface.

Clone this repository (size: 2.1 MB): HTTPS / SSH
hg clone https://bitbucket.org/erikg/revelation
hg clone ssh://hg@bitbucket.org/erikg/revelation

Revelation / test / config.py

commit
cff0e6f7ef34
parent
e0a14b958359
branch
default
tags
revelation-0.4.0-pre2

bumped version number to 0.4.0-pre2

1
991e09fe2dfd
#!/usr/bin/env python
2
991e09fe2dfd
3
991e09fe2dfd
#
4
b6047522c64d
# Revelation 0.4.0 - a password manager for GNOME 2
5
991e09fe2dfd
# http://oss.codepoet.no/revelation/
6
b6047522c64d
# $Id$
7
991e09fe2dfd
#
8
991e09fe2dfd
# Unit tests for config module
9
991e09fe2dfd
#
10
991e09fe2dfd
#
11
07c1fb2b0c27
# Copyright (c) 2003-2005 Erik Grinaker
12
991e09fe2dfd
#
13
991e09fe2dfd
# This program is free software; you can redistribute it and/or
14
991e09fe2dfd
# modify it under the terms of the GNU General Public License
15
991e09fe2dfd
# as published by the Free Software Foundation; either version 2
16
991e09fe2dfd
# of the License, or (at your option) any later version.
17
991e09fe2dfd
#
18
991e09fe2dfd
# This program is distributed in the hope that it will be useful,
19
991e09fe2dfd
# but WITHOUT ANY WARRANTY; without even the implied warranty of
20
991e09fe2dfd
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21
991e09fe2dfd
# GNU General Public License for more details.
22
991e09fe2dfd
#
23
991e09fe2dfd
# You should have received a copy of the GNU General Public License
24
991e09fe2dfd
# along with this program; if not, write to the Free Software
25
991e09fe2dfd
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
26
991e09fe2dfd
#
27
991e09fe2dfd
28
991e09fe2dfd
from revelation import config
29
991e09fe2dfd
30
704e07bb5692
import gconf, gobject, gtk, unittest
31
704e07bb5692
32
704e07bb5692
33
704e07bb5692
34
704e07bb5692
class attrs(unittest.TestCase):
35
704e07bb5692
	"config attributes"
36
704e07bb5692
37
704e07bb5692
	def test_attrs(self):
38
704e07bb5692
		"config module has required attributes"
39
704e07bb5692
40
704e07bb5692
		attrs = [
41
704e07bb5692
			"APPNAME", "VERSION", "DATAVERSION", "RELNAME",
42
704e07bb5692
			"URL", "AUTHOR", "COPYRIGHT",
43
704e07bb5692
			"DIR_GCONFSCHEMAS", "DIR_ICONS", "DIR_UI",
44
704e07bb5692
			"FILE_GCONFTOOL"
45
704e07bb5692
		]
46
704e07bb5692
47
704e07bb5692
		for attr in attrs:
48
704e07bb5692
			self.assertEquals(hasattr(config, attr), True)
49
991e09fe2dfd
50
991e09fe2dfd
51
991e09fe2dfd
52
991e09fe2dfd
class Config__init(unittest.TestCase):
53
991e09fe2dfd
	"Config.__init__()"
54
991e09fe2dfd
55
991e09fe2dfd
	def test_basedir(self):
56
991e09fe2dfd
		"Config.__init__() sets correct default basedir"
57
991e09fe2dfd
58
991e09fe2dfd
		cfg = config.Config()
59
991e09fe2dfd
		self.assertEquals(cfg.basedir, "/apps/revelation")
60
991e09fe2dfd
61
991e09fe2dfd
62
991e09fe2dfd
	def test_inv_basedir(self):
63
991e09fe2dfd
		"Config.__init__() raises ConfigError on invalid basedir"
64
991e09fe2dfd
65
991e09fe2dfd
		self.assertRaises(config.ConfigError, config.Config, "/test/123")
66
991e09fe2dfd
67
991e09fe2dfd
68
991e09fe2dfd
69
991e09fe2dfd
class Config_check(unittest.TestCase):
70
991e09fe2dfd
	"Config.check()"
71
991e09fe2dfd
72
991e09fe2dfd
	pass
73
991e09fe2dfd
74
991e09fe2dfd
75
991e09fe2dfd
76
704e07bb5692
class Config_forget(unittest.TestCase):
77
704e07bb5692
	"Config.forget()"
78
704e07bb5692
79
704e07bb5692
	def test_forget(self):
80
704e07bb5692
		"Config.forget() removes the callback"
81
704e07bb5692
82
704e07bb5692
		global foo
83
704e07bb5692
		foo = 0
84
704e07bb5692
85
704e07bb5692
		def cb(key, value, userdata):
86
704e07bb5692
			global foo
87
704e07bb5692
			foo += 1
88
704e07bb5692
89
704e07bb5692
			if gtk.main_level() > 0:
90
704e07bb5692
				gtk.main_quit()
91
704e07bb5692
92
704e07bb5692
		cfg = config.Config()
93
704e07bb5692
		id = cfg.monitor("file/autoload_file", cb)
94
704e07bb5692
95
704e07bb5692
		cfg.set("file/autoload_file", "test123")
96
704e07bb5692
		gtk.main()
97
704e07bb5692
		self.assertEquals(foo, 2)
98
704e07bb5692
99
704e07bb5692
		cfg.forget(id)
100
704e07bb5692
101
704e07bb5692
		cfg.set("file/autoload_file", "test")
102
704e07bb5692
		gobject.timeout_add(500, lambda: gtk.main_quit())
103
704e07bb5692
		gtk.main()
104
704e07bb5692
		self.assertEquals(foo, 2)
105
704e07bb5692
106
704e07bb5692
107
704e07bb5692
	def test_inv_id(self):
108
704e07bb5692
		"Config.forget() raises ConfigError on invalid id"
109
704e07bb5692
110
704e07bb5692
		cfg = config.Config()
111
704e07bb5692
		self.assertRaises(config.ConfigError, cfg.forget, 1)
112
704e07bb5692
113
704e07bb5692
114
704e07bb5692
115
991e09fe2dfd
class Config_get(unittest.TestCase):
116
991e09fe2dfd
	"Config.get()"
117
991e09fe2dfd
118
991e09fe2dfd
119
991e09fe2dfd
	def test_absolute(self):
120
991e09fe2dfd
		"Config.get() handles absolute paths"
121
991e09fe2dfd
122
991e09fe2dfd
		cfg = config.Config()
123
991e09fe2dfd
		cfg.get("/desktop/gnome/interface/gtk_theme")
124
991e09fe2dfd
125
991e09fe2dfd
126
991e09fe2dfd
	def test_nonexist(self):
127
991e09fe2dfd
		"Config.get() raises ConfigError on non-existant node"
128
991e09fe2dfd
129
991e09fe2dfd
		cfg = config.Config()
130
991e09fe2dfd
		self.assertRaises(config.ConfigError, cfg.get, "test/123")
131
991e09fe2dfd
132
991e09fe2dfd
133
991e09fe2dfd
	def test_relative(self):
134
991e09fe2dfd
		"Config.get() handles relative paths"
135
991e09fe2dfd
136
991e09fe2dfd
		cfg = config.Config()
137
991e09fe2dfd
		cfg.get("file/autoload_file")
138
991e09fe2dfd
139
991e09fe2dfd
140
991e09fe2dfd
141
991e09fe2dfd
class Config_monitor(unittest.TestCase):
142
991e09fe2dfd
	"Config.monitor()"
143
991e09fe2dfd
144
991e09fe2dfd
	def test_change(self):
145
991e09fe2dfd
		"Config.monitor() calls callback on change"
146
991e09fe2dfd
147
991e09fe2dfd
		global foo
148
991e09fe2dfd
		foo = 0
149
991e09fe2dfd
150
991e09fe2dfd
		def cb(key, value, userdata):
151
991e09fe2dfd
			global foo
152
991e09fe2dfd
			foo += 1
153
991e09fe2dfd
154
991e09fe2dfd
			if gtk.main_level() > 0:
155
991e09fe2dfd
				gtk.main_quit()
156
991e09fe2dfd
157
991e09fe2dfd
		cfg = config.Config()
158
991e09fe2dfd
		cfg.monitor("file/autoload_file", cb)
159
991e09fe2dfd
160
991e09fe2dfd
		cfg.set("file/autoload_file", "test123")
161
991e09fe2dfd
		gtk.main()
162
991e09fe2dfd
		self.assertEquals(foo, 2)
163
991e09fe2dfd
164
991e09fe2dfd
165
704e07bb5692
	def test_id(self):
166
704e07bb5692
		"Config.monitor() returns a valid callback id"
167
704e07bb5692
168
704e07bb5692
		cfg = config.Config()
169
704e07bb5692
		id = cfg.monitor("file/autoload_file", lambda k,v,d: None)
170
704e07bb5692
171
704e07bb5692
		self.assertNotEqual(id, None)
172
704e07bb5692
		cfg.forget(id)
173
704e07bb5692
174
704e07bb5692
175
991e09fe2dfd
	def test_init(self):
176
991e09fe2dfd
		"Config.monitor() calls callback on setup"
177
991e09fe2dfd
178
991e09fe2dfd
		def cb(key, value, userdata):
179
991e09fe2dfd
			global foo
180
991e09fe2dfd
			foo = "test"
181
991e09fe2dfd
182
991e09fe2dfd
		cfg = config.Config()
183
991e09fe2dfd
		cfg.monitor("file/autoload_file", cb)
184
991e09fe2dfd
185
991e09fe2dfd
		self.assertEquals(foo, "test")
186
991e09fe2dfd
187
991e09fe2dfd
188
991e09fe2dfd
189
991e09fe2dfd
class Config_set(unittest.TestCase):
190
991e09fe2dfd
	"Config.set()"
191
991e09fe2dfd
192
991e09fe2dfd
	def test_absolute(self):
193
991e09fe2dfd
		"Config.set() handler absolute paths"
194
991e09fe2dfd
195
991e09fe2dfd
		cfg = config.Config()
196
991e09fe2dfd
197
991e09fe2dfd
		cfg.set("/apps/revelation/file/autoload_file", "123test")
198
991e09fe2dfd
		self.assertEquals(cfg.get("/apps/revelation/file/autoload_file"), "123test")
199
991e09fe2dfd
200
991e09fe2dfd
201
991e09fe2dfd
	def test_relative(self):
202
991e09fe2dfd
		"Config.set() handles relative paths"
203
991e09fe2dfd
204
991e09fe2dfd
		cfg = config.Config()
205
991e09fe2dfd
206
991e09fe2dfd
		cfg.set("file/autoload_file", "test123")
207
991e09fe2dfd
		self.assertEquals(cfg.get("file/autoload_file"), "test123")
208
991e09fe2dfd
209
991e09fe2dfd
210
991e09fe2dfd
211
991e09fe2dfd
if __name__ == "__main__":
212
991e09fe2dfd
	unittest.main()
213
991e09fe2dfd