Ejemplo n.º 1
0
    def test_close_closed_ml(self):
        initial_members = {
            "*****@*****.**", "*****@*****.**", "*****@*****.**",
            "*****@*****.**"
        }
        fake_db.create_ml("tenant1", 'ml-000010', "hoge", initial_members,
                          "*****@*****.**")
        fake_db.change_ml_status('ml-000010', const.STATUS_CLOSED,
                                 "*****@*****.**")
        msg = 'From: Test1 <*****@*****.**>\n' \
              'To: ml-000010 <*****@*****.**>, ' \
              'Test2 <*****@*****.**>\n' \
              'Subject: CLOSE\n' \
              '\n' \
              'Test mail\n'
        final_members = {
            "*****@*****.**", "*****@*****.**", "*****@*****.**",
            "*****@*****.**"
        }

        with mock.patch.object(self.handler, 'send_post') as m:
            m.side_effect = self._send_post
            ret = self.handler.process_message(("127.0.0.2", 1000),
                                               "*****@*****.**",
                                               ["*****@*****.**"], msg)
            self.assertEqual(ret, const.SMTP_STATUS_CLOSED_ML)
Ejemplo n.º 2
0
    def test_reopen_orphaned_ml(self):
        initial_members = {
            "*****@*****.**", "*****@*****.**", "*****@*****.**",
            "*****@*****.**"
        }
        fake_db.create_ml("tenant1", 'ml-000010', "hoge", initial_members,
                          "*****@*****.**")
        fake_db.change_ml_status('ml-000010', const.STATUS_ORPHANED,
                                 "*****@*****.**")
        msg = 'From: Test1 <*****@*****.**>\n' \
              'To: ml-000010 <*****@*****.**>, ' \
              'Test2 <*****@*****.**>\n' \
              'Subject: REOPEN\n' \
              '\n' \
              'Test mail\n'
        final_members = {
            "*****@*****.**", "*****@*****.**", "*****@*****.**",
            "*****@*****.**"
        }

        with mock.patch.object(self.handler, 'send_post') as m:
            m.side_effect = self._send_post
            self.handler.process_message(("127.0.0.2", 1000),
                                         "*****@*****.**",
                                         ["*****@*****.**"], msg)
            self.assertEqual(self.ml_name_arg, 'ml-000010')
            self.assertEqual(fake_db.get_members('ml-000010'), final_members)
            ml = fake_db.get_ml('ml-000010')
            self.assertEqual(ml['status'], const.STATUS_OPEN)
Ejemplo n.º 3
0
 def test_report_with_a_closed_ml(self):
     members = {
         "*****@*****.**", "*****@*****.**", "*****@*****.**",
         "*****@*****.**"
     }
     fake_db.create_ml(self.tenant_name, 'ml-000010', "hoge", members,
                       "*****@*****.**")
     fake_db.change_ml_status('ml-000010', const.STATUS_CLOSED,
                              "*****@*****.**")
     self._test_report([], [], [], ['ml-000010'])
Ejemplo n.º 4
0
    def _test(self, old_status, new_status, days, altered):
        self.tenant_name = "tenant1"
        config = {
            "admins": set(),
            "charset": "iso-2022-jp",
            "ml_name_format": "ml-%06d",
            "new_ml_account": "new",
            "days_to_close": days,
            "days_to_orphan": days,
            "welcome_msg": "welcome_msg",
            "readme_msg": "readme_msg",
            "add_msg": "add_msg",
            "remove_msg": "remove_msg",
            "reopen_msg": "reopen_msg",
            "goodbye_msg": "goodbye_msg",
            "report_subject": "report_subject",
            "report_msg": "report_msg",
            "orphaned_subject": "orphaned_subject",
            "orphaned_msg": "orphaned_msg",
            "closed_subject": "closed_subject",
            "closed_msg": "closed_msg",
        }
        fake_db.create_tenant(self.tenant_name, "hoge", config)

        members = {"*****@*****.**", "*****@*****.**",
                   "*****@*****.**", "*****@*****.**"}
        fake_db.create_ml(self.tenant_name, 'ml-000010', "hoge", members,
                          "*****@*****.**")

        if old_status:
            fake_db.change_ml_status('ml-000010', old_status, "xxx")

        from amane.cmd import reviewer
        self.reviewer = reviewer.Reviewer(
            relay_host="localhost",
            relay_port=1025,
            db_url="mongodb://localhost",
            db_name=self.db_name,
            domain="example.net",
            charset="iso-2022-jp")

        with mock.patch.object(self.reviewer, 'send_post') as m:
            m.side_effect = self._send_post
            self.reviewer.notify(
                const.STATUS_ORPHANED, const.STATUS_CLOSED)
            self.reviewer.notify(
                const.STATUS_OPEN, const.STATUS_ORPHANED)
            ret = fake_db.get_ml('ml-000010')
            self.assertEqual(ret['status'], new_status)
            if altered:
                self.assertEqual(m.call_count, 1)
                self.assertEqual(self.ml_name_arg, 'ml-000010')
                self.assertEqual(self.members_arg, members)
            else:
                self.assertEqual(m.call_count, 0)