Mercurial > libervia-backend
comparison src/test/test_memory.py @ 1050:de415d7984f7
memory (params), test: fixes bug relative to parameter filtering
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 03 Jun 2014 15:10:51 +0200 |
parents | b3f383ab39da |
children | 854880a31717 |
comparison
equal
deleted
inserted
replaced
1049:9e24ca275ddd | 1050:de415d7984f7 |
---|---|
31 | 31 |
32 def setUp(self): | 32 def setUp(self): |
33 self.host = helpers.FakeSAT() | 33 self.host = helpers.FakeSAT() |
34 | 34 |
35 def _getParamXML(self, param="1", security_level=None): | 35 def _getParamXML(self, param="1", security_level=None): |
36 """Generate XML for testing parameters | |
37 | |
38 @param param (str): parameter "1", "2" or "both" | |
39 @param security_level: security level of the parameters | |
40 @return (str) | |
41 """ | |
36 def getParam(name): | 42 def getParam(name): |
37 return """ | 43 return """ |
38 <param name="%(param_name)s" label="%(param_label)s" value="true" type="bool" %(security)s/> | 44 <param name="%(param_name)s" label="%(param_label)s" value="true" type="bool" %(security)s/> |
39 """ % {'param_name': name, | 45 """ % {'param_name': name, |
40 'param_label': _(name), | 46 'param_label': _(name), |
59 'category_label': _(Const.COMPOSITION_KEY), | 65 'category_label': _(Const.COMPOSITION_KEY), |
60 'params': params | 66 'params': params |
61 } | 67 } |
62 | 68 |
63 def _paramExists(self, param="1", src=None): | 69 def _paramExists(self, param="1", src=None): |
64 """@return: True is the param (category, name) exists""" | 70 """ |
71 | |
72 @param param (str): parameter "1" or "2" | |
73 @param src (DOM element): the top-level element to look in | |
74 @return: True is the param exists | |
75 """ | |
65 if param == "1": | 76 if param == "1": |
66 name = Const.ENABLE_UNIBOX_PARAM | 77 name = Const.ENABLE_UNIBOX_PARAM |
67 else: | 78 else: |
68 name = Const.PARAM_IN_QUOTES | 79 name = Const.PARAM_IN_QUOTES |
69 category = Const.COMPOSITION_KEY | 80 category = Const.COMPOSITION_KEY |
82 if param.nodeName == "param" and param.getAttribute("name") == name: | 93 if param.nodeName == "param" and param.getAttribute("name") == name: |
83 return True | 94 return True |
84 return False | 95 return False |
85 | 96 |
86 def assertParam_generic(self, param="1", src=None, exists=True, deferred=False): | 97 def assertParam_generic(self, param="1", src=None, exists=True, deferred=False): |
98 """ | |
99 @param param (str): parameter "1" or "2" | |
100 @param src (DOM element): the top-level element to look in | |
101 @param exists (boolean): True to assert the param exists, False to assert it doesn't | |
102 @param deferred (boolean): True if this method is called from a Deferred callback | |
103 """ | |
87 msg = "Expected parameter not found!\n" if exists else "Unexpected parameter found!\n" | 104 msg = "Expected parameter not found!\n" if exists else "Unexpected parameter found!\n" |
88 if deferred == False: | 105 if deferred: |
89 # in this stack we can see the line where the error came from, | 106 # in this stack we can see the line where the error came from, |
90 # if limit=5, 6 is not enough you can increase the value | 107 # if limit=5, 6 is not enough you can increase the value |
91 msg += "\n".join(traceback.format_stack(limit=5 if exists else 6)) | 108 msg += "\n".join(traceback.format_stack(limit=5 if exists else 6)) |
92 assertion = self._paramExists(param, src) | 109 assertion = self._paramExists(param, src) |
93 getattr(self, "assert%s" % exists)(assertion, msg) | 110 getattr(self, "assert%s" % exists)(assertion, msg) |
105 def assertParamNotExists_async(self, src, param="1"): | 122 def assertParamNotExists_async(self, src, param="1"): |
106 """@param src: a deferred result from Memory.getParams""" | 123 """@param src: a deferred result from Memory.getParams""" |
107 self.assertParam_generic(param, minidom.parseString(src.encode("utf-8")), False, True) | 124 self.assertParam_generic(param, minidom.parseString(src.encode("utf-8")), False, True) |
108 | 125 |
109 def _getParams(self, security_limit, app='', profile_key='@NONE@'): | 126 def _getParams(self, security_limit, app='', profile_key='@NONE@'): |
127 """Get the parameters accessible with the given security limit and application name. | |
128 | |
129 @param security_limit (int): the security limit | |
130 @param app (str): empty string or "libervia" | |
131 @param profile_key | |
132 """ | |
110 if profile_key == '@NONE@': | 133 if profile_key == '@NONE@': |
111 profile_key = '@DEFAULT@' | 134 profile_key = '@DEFAULT@' |
112 return self.host.memory.getParams(security_limit, app, profile_key) | 135 return self.host.memory.getParams(security_limit, app, profile_key) |
113 | 136 |
114 def test_updateParams(self): | 137 def test_updateParams(self): |
163 params = self._getParamXML(security_level=1) | 186 params = self._getParamXML(security_level=1) |
164 self.host.memory.init() | 187 self.host.memory.init() |
165 self.host.memory.updateParams(params) | 188 self.host.memory.updateParams(params) |
166 self._getParams(Const.NO_SECURITY_LIMIT).addCallback(self.assertParamExists_async) | 189 self._getParams(Const.NO_SECURITY_LIMIT).addCallback(self.assertParamExists_async) |
167 self._getParams(0).addCallback(self.assertParamNotExists_async) | 190 self._getParams(0).addCallback(self.assertParamNotExists_async) |
168 self._getParams(1).addCallback(self.assertParamExists_async) | 191 return self._getParams(1).addCallback(self.assertParamExists_async) |
169 | 192 |
170 def test_paramsRegisterApp(self): | 193 def test_paramsRegisterApp(self): |
171 | 194 |
172 def register(*args): | 195 def register(xml, security_limit, app): |
196 """ | |
197 @param xml: XML definition of the parameters to be added | |
198 @param security_limit: -1 means no security, 0 is the maximum security then the higher the less secure | |
199 @param app: name of the frontend registering the parameters | |
200 """ | |
173 logger = getLogger() | 201 logger = getLogger() |
174 level = logger.getEffectiveLevel() | 202 level = logger.getEffectiveLevel() |
175 logger.setLevel(INFO) | 203 logger.setLevel(INFO) |
176 self.host.memory.paramsRegisterApp(*args) | 204 self.host.memory.paramsRegisterApp(xml, security_limit, app) |
177 logger.setLevel(level) | 205 logger.setLevel(level) |
178 | 206 |
179 # tests with no security level on the parameter (most secure) | 207 # tests with no security level on the parameter (most secure) |
180 params = self._getParamXML() | 208 params = self._getParamXML() |
181 self.host.memory.init() | 209 self.host.memory.init() |
209 register(params, 0, Const.APP_NAME) | 237 register(params, 0, Const.APP_NAME) |
210 self.assertParamNotExists() | 238 self.assertParamNotExists() |
211 self.host.memory.init() | 239 self.host.memory.init() |
212 register(params, 1, Const.APP_NAME) | 240 register(params, 1, Const.APP_NAME) |
213 self.assertParamExists() | 241 self.assertParamExists() |
242 | |
243 # tests with security level 1 and several parameters being registered | |
244 params = self._getParamXML("both", security_level=1) | |
245 self.host.memory.init() | |
246 register(params, Const.NO_SECURITY_LIMIT, Const.APP_NAME) | |
247 self.assertParamExists() | |
248 self.assertParamExists("2") | |
249 self.host.memory.init() | |
250 register(params, 0, Const.APP_NAME) | |
251 self.assertParamNotExists() | |
252 self.assertParamNotExists("2") | |
253 self.host.memory.init() | |
254 register(params, 1, Const.APP_NAME) | |
255 self.assertParamExists() | |
256 self.assertParamExists("2") | |
214 | 257 |
215 def test_paramsRegisterApp_getParams(self): | 258 def test_paramsRegisterApp_getParams(self): |
216 # test retrieving the parameter for a specific frontend | 259 # test retrieving the parameter for a specific frontend |
217 self.host.memory.init() | 260 self.host.memory.init() |
218 params = self._getParamXML(security_level=1) | 261 params = self._getParamXML(security_level=1) |
219 self.host.memory.paramsRegisterApp(params, 1, Const.APP_NAME) | 262 self.host.memory.paramsRegisterApp(params, 1, Const.APP_NAME) |
220 self._getParams(1, '').addCallback(self.assertParamExists_async) | 263 self._getParams(1, '').addCallback(self.assertParamExists_async) |
221 self._getParams(1, Const.APP_NAME).addCallback(self.assertParamExists_async) | 264 self._getParams(1, Const.APP_NAME).addCallback(self.assertParamExists_async) |
222 self._getParams(1, 'another_dummy_frontend').addCallback(self.assertParamNotExists_async) | 265 self._getParams(1, 'another_dummy_frontend').addCallback(self.assertParamNotExists_async) |
266 | |
267 # the same with several parameters registered at the same time | |
268 self.host.memory.init() | |
269 params = self._getParamXML('both', security_level=0) | |
270 self.host.memory.paramsRegisterApp(params, 5, Const.APP_NAME) | |
271 self._getParams(5, '').addCallback(self.assertParamExists_async) | |
272 self._getParams(5, '').addCallback(self.assertParamExists_async, "2") | |
273 self._getParams(5, Const.APP_NAME).addCallback(self.assertParamExists_async) | |
274 self._getParams(5, Const.APP_NAME).addCallback(self.assertParamExists_async, "2") | |
275 self._getParams(5, 'another_dummy_frontend').addCallback(self.assertParamNotExists_async) | |
276 return self._getParams(5, 'another_dummy_frontend').addCallback(self.assertParamNotExists_async, "2") |