| 58 | | self.command_manager = command.command_manager |
|---|
| 59 | | |
|---|
| 60 | | def tearDown(self): |
|---|
| 61 | | JCLCommandManager_TestCase.tearDown(self) |
|---|
| 62 | | if os.path.exists(self.config_file): |
|---|
| 63 | | os.unlink(self.config_file) |
|---|
| 64 | | |
|---|
| 65 | | # def test_execute_retrieve_attachment(self): |
|---|
| 66 | | # self.comp.account_manager.account_classes = (POP3Account, IMAPAccount, |
|---|
| 67 | | # SMTPAccount, MockIMAPAccount) |
|---|
| 68 | | # account1 = MockIMAPAccount(user=User(jid="test1@test.com"), |
|---|
| 69 | | # name="account1", |
|---|
| 70 | | # jid="account1@" + unicode(self.comp.jid)) |
|---|
| 71 | | # info_query = Iq(stanza_type="set", |
|---|
| 72 | | # from_jid="test1@test.com", |
|---|
| 73 | | # to_jid="account1@" + unicode(self.comp.jid)) |
|---|
| 74 | | # command_node = info_query.set_new_content(command.COMMAND_NS, "command") |
|---|
| 75 | | # command_node.setProp("node", "jmc#retrieve-attachment") |
|---|
| 76 | | # result = self.command_manager.apply_command_action(info_query, |
|---|
| 77 | | # "jmc#retrieve-attachment", |
|---|
| 78 | | # "execute") |
|---|
| 79 | | # self.assertNotEquals(result, None) |
|---|
| 80 | | # self.assertEquals(len(result), 1) |
|---|
| 81 | | # print str(result[0].xmlnode) |
|---|
| 82 | | # xml_command = result[0].xpath_eval("c:command", |
|---|
| 83 | | # {"c": "http://jabber.org/protocol/commands"})[0] |
|---|
| 84 | | # self.assertEquals(xml_command.prop("status"), "executing") |
|---|
| 85 | | # self.assertNotEquals(xml_command.prop("sessionid"), None) |
|---|
| 86 | | # self._check_actions(result[0], ["next"]) |
|---|
| 87 | | # print str(result[0].xmlnode) |
|---|
| 88 | | # x_data = result[0].xpath_eval("c:command/data:x", |
|---|
| 89 | | # {"c": "http://jabber.org/protocol/commands", |
|---|
| 90 | | # "data": "jabber:x:data"}) |
|---|
| 91 | | # self.assertEquals(len(x_data), 1) |
|---|
| 92 | | # self.assertEquals(x_data[0].prop("type"), "form") |
|---|
| 93 | | # options = result[0].xpath_eval("c:command/data:x/data:field[1]/data:option", |
|---|
| 94 | | # {"c": "http://jabber.org/protocol/commands", |
|---|
| 95 | | # "data": "jabber:x:data"}) |
|---|
| 96 | | # self.assertEquals(len(options), 3) |
|---|
| 97 | | # self.assertEquals(options[0].prop("label"), "Next") |
|---|
| 98 | | # self.assertEquals(options[0].children.name, "value") |
|---|
| 99 | | # self.assertEquals(options[0].children.content, "-1") |
|---|
| 100 | | # self.assertEquals(options[1].prop("label"), "mail 1") |
|---|
| 101 | | # self.assertEquals(options[1].children.name, "value") |
|---|
| 102 | | # self.assertEquals(options[1].children.content, "1") |
|---|
| 103 | | # self.assertEquals(options[2].prop("label"), "mail 2") |
|---|
| 104 | | # self.assertEquals(options[2].children.name, "value") |
|---|
| 105 | | # self.assertEquals(options[2].children.content, "2") |
|---|
| 106 | | |
|---|
| 107 | | # # Delayed to JMC 0.3.1 |
|---|
| 108 | | # return |
|---|
| 109 | | # # Second step: TODO |
|---|
| 110 | | # info_query = Iq(stanza_type="set", |
|---|
| 111 | | # from_jid="admin@test.com", |
|---|
| 112 | | # to_jid=self.comp.jid) |
|---|
| 113 | | # command_node = info_query.set_new_content(command.COMMAND_NS, "command") |
|---|
| 114 | | # command_node.setProp("node", "http://jabber.org/protocol/admin#add-user") |
|---|
| 115 | | # session_id = xml_command.prop("sessionid") |
|---|
| 116 | | # command_node.setProp("sessionid", session_id) |
|---|
| 117 | | # command_node.setProp("action", "next") |
|---|
| 118 | | # submit_form = Form(xmlnode_or_type="submit") |
|---|
| 119 | | # submit_form.add_field(field_type="list-single", |
|---|
| 120 | | # name="account_type", |
|---|
| 121 | | # value="Example") |
|---|
| 122 | | # submit_form.add_field(field_type="jid-single", |
|---|
| 123 | | # name="user_jid", |
|---|
| 124 | | # value="user2@test.com") |
|---|
| 125 | | # submit_form.as_xml(command_node) |
|---|
| 126 | | # result = self.command_manager.apply_command_action(info_query, |
|---|
| 127 | | # "http://jabber.org/protocol/admin#add-user", |
|---|
| 128 | | # "next") |
|---|
| 129 | | # self.assertNotEquals(result, None) |
|---|
| 130 | | # self.assertEquals(len(result), 1) |
|---|
| 131 | | # xml_command = result[0].xpath_eval("c:command", |
|---|
| 132 | | # {"c": "http://jabber.org/protocol/commands"})[0] |
|---|
| 133 | | # self.assertEquals(xml_command.prop("status"), "executing") |
|---|
| 134 | | # self.assertEquals(xml_command.prop("sessionid"), session_id) |
|---|
| 135 | | # self._check_actions(result[0], ["prev", "complete"], 1) |
|---|
| 136 | | # x_data = result[0].xpath_eval("c:command/data:x", |
|---|
| 137 | | # {"c": "http://jabber.org/protocol/commands", |
|---|
| 138 | | # "data": "jabber:x:data"}) |
|---|
| 139 | | # self.assertEquals(len(x_data), 1) |
|---|
| 140 | | # self.assertEquals(x_data[0].prop("type"), "form") |
|---|
| 141 | | # fields = result[0].xpath_eval("c:command/data:x/data:field", |
|---|
| 142 | | # {"c": "http://jabber.org/protocol/commands", |
|---|
| 143 | | # "data": "jabber:x:data"}) |
|---|
| 144 | | # self.assertEquals(len(fields), 6) |
|---|
| 145 | | # context_session = self.command_manager.sessions[session_id][1] |
|---|
| 146 | | # self.assertEquals(context_session["account_type"], ["Example"]) |
|---|
| 147 | | # self.assertEquals(context_session["user_jid"], ["user2@test.com"]) |
|---|
| 148 | | |
|---|
| 149 | | # # Third step |
|---|
| 150 | | # info_query = Iq(stanza_type="set", |
|---|
| 151 | | # from_jid="admin@test.com", |
|---|
| 152 | | # to_jid=self.comp.jid) |
|---|
| 153 | | # command_node = info_query.set_new_content(command.COMMAND_NS, "command") |
|---|
| 154 | | # command_node.setProp("node", "http://jabber.org/protocol/admin#add-user") |
|---|
| 155 | | # command_node.setProp("sessionid", session_id) |
|---|
| 156 | | # command_node.setProp("action", "complete") |
|---|
| 157 | | # submit_form = Form(xmlnode_or_type="submit") |
|---|
| 158 | | # submit_form.add_field(field_type="text-single", |
|---|
| 159 | | # name="name", |
|---|
| 160 | | # value="account1") |
|---|
| 161 | | # submit_form.add_field(field_type="text-single", |
|---|
| 162 | | # name="login", |
|---|
| 163 | | # value="login1") |
|---|
| 164 | | # submit_form.add_field(field_type="text-private", |
|---|
| 165 | | # name="password", |
|---|
| 166 | | # value="pass1") |
|---|
| 167 | | # submit_form.add_field(field_type="boolean", |
|---|
| 168 | | # name="store_password", |
|---|
| 169 | | # value="1") |
|---|
| 170 | | # submit_form.add_field(field_type="list-single", |
|---|
| 171 | | # name="test_enum", |
|---|
| 172 | | # value="choice2") |
|---|
| 173 | | # submit_form.add_field(field_type="text-single", |
|---|
| 174 | | # name="test_int", |
|---|
| 175 | | # value="42") |
|---|
| 176 | | # submit_form.as_xml(command_node) |
|---|
| 177 | | |
|---|
| 178 | | # result = self.command_manager.apply_command_action(info_query, |
|---|
| 179 | | # "http://jabber.org/protocol/admin#add-user", |
|---|
| 180 | | # "execute") |
|---|
| 181 | | # xml_command = result[0].xpath_eval("c:command", |
|---|
| 182 | | # {"c": "http://jabber.org/protocol/commands"})[0] |
|---|
| 183 | | # self.assertEquals(xml_command.prop("status"), "completed") |
|---|
| 184 | | # self.assertEquals(xml_command.prop("sessionid"), session_id) |
|---|
| 185 | | # self._check_actions(result[0]) |
|---|
| 186 | | |
|---|
| 187 | | # self.assertEquals(context_session["name"], ["account1"]) |
|---|
| 188 | | # self.assertEquals(context_session["login"], ["login1"]) |
|---|
| 189 | | # self.assertEquals(context_session["password"], ["pass1"]) |
|---|
| 190 | | # self.assertEquals(context_session["store_password"], ["1"]) |
|---|
| 191 | | # self.assertEquals(context_session["test_enum"], ["choice2"]) |
|---|
| 192 | | # self.assertEquals(context_session["test_int"], ["42"]) |
|---|
| 193 | | |
|---|
| 194 | | # model.db_connect() |
|---|
| 195 | | # _account = account.get_account("user2@test.com", |
|---|
| 196 | | # "account1") |
|---|
| 197 | | # self.assertNotEquals(_account, None) |
|---|
| 198 | | # self.assertEquals(_account.user.jid, "user2@test.com") |
|---|
| 199 | | # self.assertEquals(_account.name, "account1") |
|---|
| 200 | | # self.assertEquals(_account.jid, "account1@" + unicode(self.comp.jid)) |
|---|
| 201 | | # model.db_disconnect() |
|---|
| 202 | | |
|---|
| 203 | | # stanza_sent = result |
|---|
| 204 | | # self.assertEquals(len(stanza_sent), 4) |
|---|
| 205 | | # iq_result = stanza_sent[0] |
|---|
| 206 | | # self.assertTrue(isinstance(iq_result, Iq)) |
|---|
| 207 | | # self.assertEquals(iq_result.get_node().prop("type"), "result") |
|---|
| 208 | | # self.assertEquals(iq_result.get_from(), self.comp.jid) |
|---|
| 209 | | # self.assertEquals(iq_result.get_to(), "admin@test.com") |
|---|
| 210 | | # presence_component = stanza_sent[1] |
|---|
| 211 | | # self.assertTrue(isinstance(presence_component, Presence)) |
|---|
| 212 | | # self.assertEquals(presence_component.get_from(), self.comp.jid) |
|---|
| 213 | | # self.assertEquals(presence_component.get_to(), "user2@test.com") |
|---|
| 214 | | # self.assertEquals(presence_component.get_node().prop("type"), |
|---|
| 215 | | # "subscribe") |
|---|
| 216 | | # message = stanza_sent[2] |
|---|
| 217 | | # self.assertTrue(isinstance(message, Message)) |
|---|
| 218 | | # self.assertEquals(message.get_from(), self.comp.jid) |
|---|
| 219 | | # self.assertEquals(message.get_to(), "user2@test.com") |
|---|
| 220 | | # self.assertEquals(message.get_subject(), |
|---|
| 221 | | # _account.get_new_message_subject(Lang.en)) |
|---|
| 222 | | # self.assertEquals(message.get_body(), |
|---|
| 223 | | # _account.get_new_message_body(Lang.en)) |
|---|
| 224 | | # presence_account = stanza_sent[3] |
|---|
| 225 | | # self.assertTrue(isinstance(presence_account, Presence)) |
|---|
| 226 | | # self.assertEquals(presence_account.get_from(), "account1@" + unicode(self.comp.jid)) |
|---|
| 227 | | # self.assertEquals(presence_account.get_to(), "user2@test.com") |
|---|
| 228 | | # self.assertEquals(presence_account.get_node().prop("type"), |
|---|
| 229 | | # "subscribe") |
|---|
| 230 | | |
|---|
| 231 | | def test_execute_force_check(self): |
|---|
| | 62 | self.command_manager = MailCommandManager(self.comp, |
|---|
| | 63 | self.comp.account_manager) |
|---|
| 245 | | user1 = User(jid="test1@test.com") |
|---|
| 246 | | user2 = User(jid="test2@test.com") |
|---|
| 247 | | account11 = MockIMAPAccount(user=user1, |
|---|
| 248 | | name="account11", |
|---|
| 249 | | jid="account11@" + unicode(self.comp.jid)) |
|---|
| 250 | | account12 = MockIMAPAccount(user=user1, |
|---|
| 251 | | name="account12", |
|---|
| 252 | | jid="account12@" + unicode(self.comp.jid)) |
|---|
| 253 | | account21 = MockIMAPAccount(user=user2, |
|---|
| 254 | | name="account21", |
|---|
| 255 | | jid="account21@" + unicode(self.comp.jid)) |
|---|
| 256 | | account22 = MockIMAPAccount(user=user2, |
|---|
| 257 | | name="account11", |
|---|
| 258 | | jid="account11@" + unicode(self.comp.jid)) |
|---|
| 259 | | info_query = Iq(stanza_type="set", |
|---|
| 260 | | from_jid="test1@test.com", |
|---|
| 261 | | to_jid="account11@" + unicode(self.comp.jid)) |
|---|
| 262 | | command_node = info_query.set_new_content(command.COMMAND_NS, "command") |
|---|
| 263 | | command_node.setProp("node", "jmc#force-check") |
|---|
| 264 | | result = self.command_manager.apply_command_action(info_query, |
|---|
| 265 | | "jmc#force-check", |
|---|
| 266 | | "execute") |
|---|
| 267 | | self.assertNotEquals(result, None) |
|---|
| 268 | | self.assertEquals(len(result), 1) |
|---|
| 269 | | xml_command = result[0].xpath_eval("c:command", |
|---|
| 270 | | {"c": "http://jabber.org/protocol/commands"})[0] |
|---|
| 271 | | self.assertEquals(xml_command.prop("status"), "completed") |
|---|
| 272 | | self._check_actions(result[0]) |
|---|
| | 103 | |
|---|
| | 104 | def tearDown(self): |
|---|
| | 105 | JCLTestCase.tearDown(self) |
|---|
| | 106 | if os.path.exists(self.config_file): |
|---|
| | 107 | os.unlink(self.config_file) |
|---|
| | 108 | |
|---|
| | 109 | class MailCommandManagerForceCheckCommand_TestCase(MailCommandManagerTestCase): |
|---|
| | 110 | """ |
|---|
| | 111 | Test 'force-check' ad-hoc command |
|---|
| | 112 | """ |
|---|
| | 113 | |
|---|
| | 114 | def setUp(self, tables=[]): |
|---|
| | 115 | """ |
|---|
| | 116 | Prepare data |
|---|
| | 117 | """ |
|---|
| | 118 | MailCommandManagerTestCase.setUp(self, tables) |
|---|
| | 119 | self.command_node.setProp("node", "jmc#force-check") |
|---|
| | 120 | |
|---|
| | 121 | def test_execute_force_check(self): |
|---|
| | 122 | self.info_query.set_from("test1@test.com") |
|---|
| | 123 | self.info_query.set_to("account11@" + unicode(self.comp.jid)) |
|---|
| | 124 | result = self.command_manager.apply_command_action(\ |
|---|
| | 125 | self.info_query, |
|---|
| | 126 | "jmc#force-check", |
|---|
| | 127 | "execute") |
|---|
| | 128 | result_iq = result[0].xmlnode |
|---|
| | 129 | result_iq.setNs(None) |
|---|
| | 130 | self.assertTrue(jcl.tests.is_xml_equal(\ |
|---|
| | 131 | u"<iq from='account11@" + unicode(self.comp.jid) |
|---|
| | 132 | + "' to='test1@test.com' type='result'>" |
|---|
| | 133 | + "<command xmlns='http://jabber.org/protocol/commands' " |
|---|
| | 134 | + "status='completed'>" |
|---|
| | 135 | + "</command></iq>", |
|---|
| | 136 | result_iq, True, test_sibling=False)) |
|---|
| 278 | | self.comp.account_manager.account_classes = (POP3Account, IMAPAccount, |
|---|
| 279 | | SMTPAccount, MockIMAPAccount) |
|---|
| 280 | | class MockFeederHandler(Feeder): |
|---|
| 281 | | def __init__(self, component): |
|---|
| 282 | | Feeder.__init__(self, component) |
|---|
| 283 | | self.checked_accounts = [] |
|---|
| 284 | | |
|---|
| 285 | | def feed(self, _account): |
|---|
| 286 | | self.checked_accounts.append(_account) |
|---|
| 287 | | assert(_account.lastcheck == (_account.interval - 1)) |
|---|
| 288 | | return [] |
|---|
| 289 | | |
|---|
| 290 | | self.comp.handler.feeder = MockFeederHandler(self.comp) |
|---|
| 291 | | user1 = User(jid="test1@test.com") |
|---|
| 292 | | user2 = User(jid="test2@test.com") |
|---|
| 293 | | account11 = MockIMAPAccount(user=user1, |
|---|
| 294 | | name="account11", |
|---|
| 295 | | jid="account11@" + unicode(self.comp.jid)) |
|---|
| 296 | | account12 = MockIMAPAccount(user=user1, |
|---|
| 297 | | name="account12", |
|---|
| 298 | | jid="account12@" + unicode(self.comp.jid)) |
|---|
| 299 | | account21 = MockIMAPAccount(user=user2, |
|---|
| 300 | | name="account21", |
|---|
| 301 | | jid="account21@" + unicode(self.comp.jid)) |
|---|
| 302 | | account22 = MockIMAPAccount(user=user2, |
|---|
| 303 | | name="account11", |
|---|
| 304 | | jid="account11@" + unicode(self.comp.jid)) |
|---|
| 305 | | info_query = Iq(stanza_type="set", |
|---|
| 306 | | from_jid="test1@test.com", |
|---|
| 307 | | to_jid=self.comp.jid) |
|---|
| 308 | | command_node = info_query.set_new_content(command.COMMAND_NS, "command") |
|---|
| 309 | | command_node.setProp("node", "jmc#force-check") |
|---|
| 310 | | result = self.command_manager.apply_command_action(info_query, |
|---|
| 311 | | "jmc#force-check", |
|---|
| 312 | | "execute") |
|---|
| 313 | | self.assertNotEquals(result, None) |
|---|
| 314 | | self.assertEquals(len(result), 1) |
|---|
| 315 | | xml_command = result[0].xpath_eval("c:command", |
|---|
| 316 | | {"c": "http://jabber.org/protocol/commands"})[0] |
|---|
| 317 | | self.assertEquals(xml_command.prop("status"), "executing") |
|---|
| 318 | | self.assertNotEquals(xml_command.prop("sessionid"), None) |
|---|
| 319 | | self._check_actions(result[0], ["complete"]) |
|---|
| 320 | | session_id = xml_command.prop("sessionid") |
|---|
| | 142 | self.info_query.set_from("test1@test.com") |
|---|
| | 143 | result = self.command_manager.apply_command_action(\ |
|---|
| | 144 | self.info_query, |
|---|
| | 145 | "jmc#force-check", |
|---|
| | 146 | "execute") |
|---|
| | 147 | result_iq = result[0].xmlnode |
|---|
| | 148 | result_iq.setNs(None) |
|---|
| | 149 | self.assertTrue(jcl.tests.is_xml_equal(\ |
|---|
| | 150 | u"<iq from='jmc.test.com' to='test1@test.com' type='result'>" |
|---|
| | 151 | + "<command xmlns='http://jabber.org/protocol/commands'" |
|---|
| | 152 | + "status='executing'>" |
|---|
| | 153 | + "<actions execute='complete'><complete/></actions>" |
|---|
| | 154 | + "<x xmlns='jabber:x:data' type='form'>" |
|---|
| | 155 | + "<title>" + Lang.en.command_force_check + "</title>" |
|---|
| | 156 | + "<instructions>" + Lang.en.command_force_check_1_description |
|---|
| | 157 | + "</instructions>" |
|---|
| | 158 | + "<field var='account_names' type='list-multi' label='" |
|---|
| | 159 | + Lang.en.field_accounts + "'>" |
|---|
| | 160 | + "<option label=\"account11 (IMAP)\">" |
|---|
| | 161 | + "<value>account11/test1@test.com</value></option>" |
|---|
| | 162 | + "<option label=\"account12 (IMAP)\">" |
|---|
| | 163 | + "<value>account12/test1@test.com</value></option>" |
|---|
| | 164 | + "<option label=\"account11 (MockIMAP)\">" |
|---|
| | 165 | + "<value>account11/test1@test.com</value></option>" |
|---|
| | 166 | + "<option label=\"account12 (MockIMAP)\">" |
|---|
| | 167 | + "<value>account12/test1@test.com</value></option>" |
|---|
| | 168 | + "</field></x></command></iq>", |
|---|
| | 169 | result_iq, True)) |
|---|
| | 170 | session_id = result_iq.children.prop("sessionid") |
|---|
| | 171 | self.assertNotEquals(session_id, None) |
|---|
| 326 | | info_query = Iq(stanza_type="set", |
|---|
| 327 | | from_jid="admin@test.com", |
|---|
| 328 | | to_jid=self.comp.jid) |
|---|
| 329 | | command_node = info_query.set_new_content(command.COMMAND_NS, "command") |
|---|
| 330 | | command_node.setProp("node", "jmc#force-check") |
|---|
| 331 | | command_node.setProp("sessionid", session_id) |
|---|
| 332 | | command_node.setProp("action", "complete") |
|---|
| 333 | | submit_form = Form(xmlnode_or_type="submit") |
|---|
| 334 | | submit_form.add_field(field_type="list-multi", |
|---|
| 335 | | name="account_names", |
|---|
| 336 | | values=["account11/test1@test.com", |
|---|
| 337 | | "account12/test1@test.com"]) |
|---|
| 338 | | submit_form.as_xml(command_node) |
|---|
| 339 | | result = self.command_manager.apply_command_action(info_query, |
|---|
| 340 | | "jmc#force-check", |
|---|
| 341 | | "execute") |
|---|
| 342 | | xml_command = result[0].xpath_eval("c:command", |
|---|
| 343 | | {"c": "http://jabber.org/protocol/commands"})[0] |
|---|
| 344 | | self.assertEquals(xml_command.prop("status"), "completed") |
|---|
| 345 | | self.assertEquals(xml_command.prop("sessionid"), session_id) |
|---|
| 346 | | self._check_actions(result[0]) |
|---|
| | 177 | info_query = self.prepare_submit(\ |
|---|
| | 178 | node="jmc#force-check", |
|---|
| | 179 | session_id=session_id, |
|---|
| | 180 | from_jid="test1@test.com", |
|---|
| | 181 | to_jid=unicode(self.comp.jid), |
|---|
| | 182 | fields=[Field(field_type="list-multi", |
|---|
| | 183 | name="account_names", |
|---|
| | 184 | values=["account11/test1@test.com", |
|---|
| | 185 | "account12/test1@test.com"])], |
|---|
| | 186 | action="complete") |
|---|
| | 187 | result = self.command_manager.apply_command_action(\ |
|---|
| | 188 | info_query, |
|---|
| | 189 | "jmc#force-check", |
|---|
| | 190 | "execute") |
|---|
| | 191 | result_iq = result[0].xmlnode |
|---|
| | 192 | result_iq.setNs(None) |
|---|
| | 193 | self.assertTrue(jcl.tests.is_xml_equal(\ |
|---|
| | 194 | u"<iq from='" + unicode(self.comp.jid) |
|---|
| | 195 | + "' to='test1@test.com' type='result'>" |
|---|
| | 196 | + "<command xmlns='http://jabber.org/protocol/commands' " |
|---|
| | 197 | + "status='completed'>" |
|---|
| | 198 | + "</command></iq>", |
|---|
| | 199 | result_iq, True, test_sibling=False)) |
|---|
| 352 | | self.assertEquals(feeder.checked_accounts[0], account11) |
|---|
| 353 | | self.assertEquals(feeder.checked_accounts[1], account12) |
|---|
| | 205 | self.assertEquals(feeder.checked_accounts[0], self.account11) |
|---|
| | 206 | self.assertEquals(feeder.checked_accounts[1], self.account12) |
|---|
| | 207 | |
|---|
| | 208 | class MailCommandManagerGetEmailCommand_TestCase(MailCommandManagerTestCase): |
|---|
| | 209 | """ |
|---|
| | 210 | Test 'get-email' ad-hoc command |
|---|
| | 211 | """ |
|---|
| | 212 | |
|---|
| | 213 | def setUp(self, tables=[]): |
|---|
| | 214 | """ |
|---|
| | 215 | Prepare data |
|---|
| | 216 | """ |
|---|
| | 217 | MailCommandManagerTestCase.setUp(self, tables) |
|---|
| | 218 | self.command_node.setProp("node", "jmc#get-email") |
|---|
| | 219 | def get_email(email_index): |
|---|
| | 220 | """ |
|---|
| | 221 | Mock method for IMAPAccount.get_email |
|---|
| | 222 | """ |
|---|
| | 223 | return ("mail body " + str(email_index), |
|---|
| | 224 | "from" + str(email_index) + "@test.com") |
|---|
| | 225 | self.account11.__dict__["get_mail"] = get_email |
|---|
| | 226 | |
|---|
| | 227 | def check_step_1 (self, result): |
|---|
| | 228 | """ |
|---|
| | 229 | Check first step result of get-email ad-hoc command |
|---|
| | 230 | """ |
|---|
| | 231 | result_iq = result[0].xmlnode |
|---|
| | 232 | result_iq.setNs(None) |
|---|
| | 233 | self.assertTrue(jcl.tests.is_xml_equal(\ |
|---|
| | 234 | u"<iq from='account11@" + unicode(self.comp.jid) |
|---|
| | 235 | + "' to='test1@test.com' type='result'>" |
|---|
| | 236 | + "<command xmlns='http://jabber.org/protocol/commands'" |
|---|
| | 237 | + "status='executing'>" |
|---|
| | 238 | + "<actions execute='complete'><complete/></actions>" |
|---|
| | 239 | + "<x xmlns='jabber:x:data' type='form'>" |
|---|
| | 240 | + "<title>" + Lang.en.command_get_email + "</title>" |
|---|
| | 241 | + "<instructions>" + Lang.en.command_get_email_1_description |
|---|
| | 242 | + "</instructions>" |
|---|
| | 243 | + "<field var='emails' type='list-multi' label='" |
|---|
| | 244 | + Lang.en.field_email_subject + "'>" |
|---|
| | 245 | + "<option label=\"mail 1\">" |
|---|
| | 246 | + "<value>1</value></option>" |
|---|
| | 247 | + "<option label=\"mail 2\">" |
|---|
| | 248 | + "<value>2</value></option>" |
|---|
| | 249 | + "</field><field var='fetch_more' type='boolean' label='" |
|---|
| | 250 | + Lang.en.field_select_more_emails + "'>" |
|---|
| | 251 | + "</field></x></command></iq>", |
|---|
| | 252 | result_iq, True)) |
|---|
| | 253 | session_id = result_iq.children.prop("sessionid") |
|---|
| | 254 | self.assertNotEquals(session_id, None) |
|---|
| | 255 | return session_id |
|---|
| | 256 | |
|---|
| | 257 | def test_execute_get_email(self): |
|---|
| | 258 | """ |
|---|
| | 259 | Test single email retrieval |
|---|
| | 260 | """ |
|---|
| | 261 | self.info_query.set_from("test1@test.com") |
|---|
| | 262 | self.info_query.set_to("account11@" + unicode(self.comp.jid)) |
|---|
| | 263 | result = self.command_manager.apply_command_action(\ |
|---|
| | 264 | self.info_query, |
|---|
| | 265 | "jmc#get-email", |
|---|
| | 266 | "execute") |
|---|
| | 267 | session_id = self.check_step_1(result) |
|---|
| | 268 | |
|---|
| | 269 | # Second step |
|---|
| | 270 | info_query = self.prepare_submit(\ |
|---|
| | 271 | node="jmc#get-email", |
|---|
| | 272 | session_id=session_id, |
|---|
| | 273 | from_jid="test1@test.com", |
|---|
| | 274 | to_jid="account11@jmc.test.com", |
|---|
| | 275 | fields=[Field(field_type="list-multi", |
|---|
| | 276 | name="emails", |
|---|
| | 277 | values=["1"]), |
|---|
| | 278 | Field(field_type="boolean", |
|---|
| | 279 | name="fetch_more", |
|---|
| | 280 | value=False)], |
|---|
| | 281 | action="complete") |
|---|
| | 282 | result = self.command_manager.apply_command_action(\ |
|---|
<