コード例 #1
0
ファイル: runner.py プロジェクト: dax/jcl
    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))
コード例 #2
0
ファイル: account.py プロジェクト: dax/jcl
 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()
コード例 #3
0
ファイル: presence.py プロジェクト: dax/jmc
 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)
コード例 #4
0
ファイル: runner.py プロジェクト: dax/jcl
 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))
コード例 #5
0
ファイル: presence.py プロジェクト: dax/jcl
 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)
コード例 #6
0
ファイル: runner.py プロジェクト: dax/jmc
 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))
コード例 #7
0
ファイル: runner.py プロジェクト: dax/jcl
 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)
コード例 #8
0
ファイル: account.py プロジェクト: dax/jmc
    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: "")]
コード例 #9
0
ファイル: account.py プロジェクト: dax/jcl
    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)]
コード例 #10
0
ファイル: runner.py プロジェクト: dax/jcl
 def setup_db(self):
     User.createTable(ifNotExists=True)
     Account.createTable(ifNotExists=True)
     PresenceAccount.createTable(ifNotExists=True)
     LegacyJID.createTable(ifNotExists=True)
コード例 #11
0
ファイル: account.py プロジェクト: dax/jcl
 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)]
コード例 #12
0
ファイル: account.py プロジェクト: dax/jmc
 def _init(self, *args, **kw):
     """SMTPAccount init
     Initialize class attributes"""
     Account._init(self, *args, **kw)
     self.__logger = logging.getLogger("jmc.model.account.AbstractSMTPAccount")