def test_run(self): """Test if run method of JCLComponent is executed""" self.has_run_func = False def run_func(component_self): self.has_run_func = True return (False, 0) self.runner.pid_file = "/tmp/jcl.pid" db_path = tempfile.mktemp("db", "jcltest", DB_DIR) db_url = "sqlite://" + db_path self.runner.db_url = db_url self.runner.config = None old_run_func = JCLComponent.run JCLComponent.run = run_func try: self.runner.run() finally: JCLComponent.run = old_run_func self.assertTrue(self.has_run_func) Account.dropTable() PresenceAccount.dropTable() User.dropTable() LegacyJID.dropTable() model.db_disconnect() os.unlink(db_path) self.assertFalse(os.access("/tmp/jcl.pid", os.F_OK))
def test_set_status(self): model.db_connect() account11 = Account(user=User(jid="*****@*****.**"), name="account11", jid="*****@*****.**") account11.status = account.OFFLINE self.assertEquals(account11.status, account.OFFLINE) model.db_disconnect()
def test_handle(self): user1 = User(jid="*****@*****.**") account11 = Account(user=user1, name="account11", jid="*****@*****.**") account12 = Account(user=user1, name="account12", jid="*****@*****.**") info_query = Iq(from_jid="*****@*****.**", to_jid="*****@*****.**", stanza_type="get") account11.lastcheck = int(time.time()) time.sleep(1) result = self.handler.handle(info_query, None, account11) self.assertEquals(len(result), 1) self.assertEquals(result[0].get_to(), "*****@*****.**") self.assertEquals(result[0].get_from(), "*****@*****.**") self.assertEquals(result[0].get_type(), "result") self.assertNotEquals(result[0].xmlnode.children, None) self.assertEquals(result[0].xmlnode.children.name, "query") self.assertEquals(int(result[0].xmlnode.children.prop("seconds")), 1)
def test__run(self): self.runner.pid_file = "/tmp/jcl.pid" db_path = tempfile.mktemp("db", "jcltest", DB_DIR) db_url = "sqlite://" + db_path self.runner.db_url = db_url def do_nothing(): return (False, 0) self.runner._run(do_nothing) model.db_connect() # dropTable should succeed because tables should exist Account.dropTable() PresenceAccount.dropTable() User.dropTable() LegacyJID.dropTable() model.db_disconnect() os.unlink(db_path) self.assertFalse(os.access("/tmp/jcl.pid", os.F_OK))
def test_get_inerror_account_presence(self): user1 = User(jid="*****@*****.**") account11 = Account(user=user1, name="account11", jid="*****@*****.**") account11.error = "Error" account12 = Account(user=user1, name="account12", jid="*****@*****.**") presence = Presence(stanza_type="available", from_jid="*****@*****.**", to_jid="*****@*****.**") result = self.handler.get_account_presence(presence, Lang.en, account11) self.assertEquals(len(result), 1) self.assertTrue(isinstance(result[0], Presence)) self.assertEquals(result[0].get_to(), "*****@*****.**") self.assertEquals(result[0].get_from(), "*****@*****.**") self.assertEquals(result[0].get_show(), "dnd") self.assertEquals(result[0].get_status(), Lang.en.account_error)
def test__run(self): self.runner.pid_file = "/tmp/jmc.pid" self.runner.db_url = self.db_url def do_nothing(): return (False, 0) self.runner._run(do_nothing) model.db_connection_str = self.runner.db_url model.db_connect() # dropTable should succeed because tables should exist Account.dropTable() PresenceAccount.dropTable() User.dropTable() LegacyJID.dropTable() MailAccount.dropTable() IMAPAccount.dropTable() POP3Account.dropTable() SMTPAccount.dropTable() model.db_disconnect() self.assertFalse(os.access("/tmp/jmc.pid", os.F_OK))
def test__run_restart(self): self.runner.pid_file = "/tmp/jcl.pid" db_path = tempfile.mktemp("db", "jcltest", DB_DIR) db_url = "sqlite://" + db_path self.runner.db_url = db_url self.i = 0 def restart(self): self.i += 1 yield (True, 0) self.i += 1 yield (False, 0) self.i += 1 restart_generator = restart(self) self.runner._run(lambda : restart_generator.next()) model.db_connect() # dropTable should succeed because tables should exist Account.dropTable() PresenceAccount.dropTable() User.dropTable() LegacyJID.dropTable() model.db_disconnect() os.unlink(db_path) self.assertFalse(os.access("/tmp/jcl.pid", os.F_OK)) self.assertEquals(self.i, 2)
def _get_register_fields (cls, real_class=None): """ """ def default_account_default_func(bare_from_jid): accounts = account.get_accounts(bare_from_jid, AbstractSMTPAccount, (AbstractSMTPAccount.q.default_account == True)) if accounts.count() == 0: return True else: return False def default_account_post_func(value, default_func, bare_from_jid): accounts = account.get_accounts(bare_from_jid, AbstractSMTPAccount, (AbstractSMTPAccount.q.default_account == True)) already_default_account = (accounts.count() != 0) if isinstance(value, str) or isinstance(value, unicode): value = value.lower() bool_value = (value == "true" or value == "1") else: bool_value = value if bool_value: if already_default_account: for _account in accounts: _account.default_account = False return True else: if not already_default_account: return True else: return False if real_class is None: real_class = cls return Account.get_register_fields(real_class) + \ [("default_account", "boolean", None, default_account_post_func, default_account_default_func), ("default_from", "text-single", None, lambda field_value, default_func, bare_from_jid: \ account.mandatory_field("default_from", field_value), lambda bare_from_jid: "")]
def _get_register_fields(cls, real_class=None): def password_post_func(password): if password is None or password == "": return None return password if real_class is None: real_class = cls return Account.get_register_fields(real_class) + \ [("login", "text-single", None, lambda field_value, default_func, bare_from_jid: \ account.mandatory_field("login", field_value), lambda bare_from_jid: ""), ("password", "text-private", None, lambda field_value, default_func, bare_from_jid: \ password_post_func(field_value), lambda bare_from_jid: ""), ("store_password", "boolean", None, account.default_post_func, lambda bare_from_jid: True), ("test_enum", "list-single", ["choice1", "choice2", "choice3"], account.default_post_func, lambda bare_from_jid: "choice2"), ("test_int", "text-single", None, account.int_post_func, lambda bare_from_jid: 44)]
def setup_db(self): User.createTable(ifNotExists=True) Account.createTable(ifNotExists=True) PresenceAccount.createTable(ifNotExists=True) LegacyJID.createTable(ifNotExists=True)
def _get_register_fields(cls, real_class=None): if real_class is None: real_class = cls return Account.get_register_fields(real_class) + \ [("test_new_int", "text-single", None, account.int_post_func, lambda bare_from_jid: 43)]
def _init(self, *args, **kw): """SMTPAccount init Initialize class attributes""" Account._init(self, *args, **kw) self.__logger = logging.getLogger("jmc.model.account.AbstractSMTPAccount")