亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? notification.py

?? trac是一款svn服務器的web客戶端
?? PY
?? 第 1 頁 / 共 2 頁
字號:
        self.failIf('joeuser' in tolist)            def test_ignore_domains(self):        """Non-SMTP domain exclusion"""        self.env.config.set('notification', 'ignore_domains',                            'example.com, example.org')        self.env.known_users = \            [('kerberos@example.com', 'No Email', ''),              ('kerberos@example.org', 'With Email', 'kerb@example.net')]        ticket = Ticket(self.env)        ticket['reporter'] = 'kerberos@example.com'        ticket['owner'] = 'kerberos@example.org'        ticket['summary'] = 'This is a summary'        ticket.insert()        tn = TicketNotifyEmail(self.env)        tn.notify(ticket, newticket=True)        message = notifysuite.smtpd.get_message()        (headers, body) = parse_smtp_message(message)        # Msg should always have a 'To' field        self.failIf('To' not in headers)        tolist = [addr.strip() for addr in headers['To'].split(',')]        # 'To' list should not contain addresses with non-SMTP domains        self.failIf('kerberos@example.com' in tolist)        self.failIf('kerberos@example.org' in tolist)        # 'To' list should have been resolved to the actual email address        self.failIf('kerb@example.net' not in tolist)        self.failIf(len(tolist) != 1)            def test_admit_domains(self):        """SMTP domain inclusion"""        self.env.config.set('notification', 'admit_domains',                            'localdomain, mail.custom')        ticket = Ticket(self.env)        ticket['reporter'] = 'joeuser@example.com'        ticket['summary'] = 'This is a summary'        ticket['cc'] = 'joe.user@localdomain, joe.user@mail.nocustom, ' \                       'joe.user@mail.custom'        ticket.insert()        tn = TicketNotifyEmail(self.env)        tn.notify(ticket, newticket=True)        message = notifysuite.smtpd.get_message()        (headers, body) = parse_smtp_message(message)        # Msg should always have a 'To' field        self.failIf('Cc' not in headers)        cclist = [addr.strip() for addr in headers['Cc'].split(',')]        # 'Cc' list should contain addresses with SMTP included domains        self.failIf('joe.user@localdomain' not in cclist)        self.failIf('joe.user@mail.custom' not in cclist)        # 'Cc' list should not contain non-FQDN domains        self.failIf('joe.user@mail.nocustom' in cclist)        self.failIf(len(cclist) != 2+2)    def test_multiline_header(self):        """Encoded headers split into multiple lines"""        self.env.config.set('notification','mime_encoding', 'qp')        ticket = Ticket(self.env)        ticket['reporter'] = 'joe.user@example.org'        # Forces non-ascii characters        ticket['summary'] = u'A_very %s s煤mm盲ry' % u' '.join(['long'] * 20)        ticket.insert()        tn = TicketNotifyEmail(self.env)        tn.notify(ticket, newticket=True)        message = notifysuite.smtpd.get_message()        (headers, body) = parse_smtp_message(message)        # Discards the project name & ticket number        subject = headers['Subject']        summary = subject[subject.find(':')+2:]        self.failIf(ticket['summary'] != summary)    def test_mimebody_b64(self):        """MIME Base64/utf-8 encoding"""        self.env.config.set('notification','mime_encoding', 'base64')        ticket = Ticket(self.env)        ticket['reporter'] = 'joe.user@example.org'        ticket['summary'] = u'This is a long enough summary to cause Trac ' \                            u'to generate a multi-line (2 lines) s煤mm盲ry'        ticket.insert()        self._validate_mimebody((base64, 'base64', 'utf-8'), \                                ticket, True)    def test_mimebody_qp(self):        """MIME QP/utf-8 encoding"""        self.env.config.set('notification','mime_encoding', 'qp')        ticket = Ticket(self.env)        ticket['reporter'] = 'joe.user@example.org'        ticket['summary'] = u'This is a long enough summary to cause Trac ' \                            u'to generate a multi-line (2 lines) s煤mm盲ry'        ticket.insert()        self._validate_mimebody((quopri, 'quoted-printable', 'utf-8'),                                ticket, True)    def test_mimebody_none(self):        """MIME None/ascii encoding"""        self.env.config.set('notification','mime_encoding', 'none')        ticket = Ticket(self.env)        ticket['reporter'] = 'joe.user@example.org'        ticket['summary'] = u'This is a summary'        ticket.insert()        self._validate_mimebody((None, '7bit', 'ascii'), \                                ticket, True)    def test_md5_digest(self):        """MD5 digest w/ non-ASCII recipient address (#3491)"""        self.env.config.set('notification', 'always_notify_owner', 'false')        self.env.config.set('notification', 'always_notify_reporter', 'true')        self.env.config.set('notification', 'smtp_always_cc', '')        ticket = Ticket(self.env)        ticket['reporter'] = u'"J枚e Us貓r" <joe.user@example.org>'        ticket['summary'] = u'This is a summary'        ticket.insert()        tn = TicketNotifyEmail(self.env)        tn.notify(ticket, newticket=True)        message = notifysuite.smtpd.get_message()        (headers, body) = parse_smtp_message(message)    def test_updater(self):        """No-self-notification option"""        def _test_updater(disable):            if disable:                self.env.config.set('notification','always_notify_updater',                                    'false')            ticket = Ticket(self.env)            ticket['reporter'] = 'joe.user@example.org'            ticket['summary'] = u'This is a s煤mm盲ry'            ticket['cc'] = 'joe.bar@example.com'            ticket.insert()            ticket['component'] = 'dummy'            now = datetime.now(utc)            ticket.save_changes('joe.bar2@example.com', 'This is a change',                                when=now)            tn = TicketNotifyEmail(self.env)            tn.notify(ticket, newticket=False, modtime=now)            message = notifysuite.smtpd.get_message()            (headers, body) = parse_smtp_message(message)            # checks for header existence            self.failIf(not headers)            # checks for updater in the 'To' recipient list            self.failIf('To' not in headers)            tolist = [addr.strip() for addr in headers['To'].split(',')]            if disable:                self.failIf('joe.bar2@example.com' in tolist)            else:                self.failIf('joe.bar2@example.com' not in tolist)        # Validate with and without a default domain        for disable in [False, True]:            _test_updater(disable)    def test_updater_only(self):        """Notification w/ updater, w/o any other recipient (#4188)"""        self.env.config.set('notification', 'always_notify_owner', 'false')        self.env.config.set('notification', 'always_notify_reporter', 'false')        self.env.config.set('notification', 'always_notify_updater', 'true')        self.env.config.set('notification', 'smtp_always_cc', '')        self.env.config.set('notification', 'smtp_always_bcc', '')        self.env.config.set('notification', 'use_public_cc', 'false')        self.env.config.set('notification', 'use_short_addr', 'false')        self.env.config.set('notification', 'smtp_replyto',                             'joeuser@example.net')        ticket = Ticket(self.env)        ticket['summary'] = 'Foo'        ticket.insert()        ticket['summary'] = 'Bar'        ticket['component'] = 'New value'        ticket.save_changes('joe@example.com', 'this is my comment')                tn = TicketNotifyEmail(self.env)        tn.notify(ticket, newticket=True)        recipients = notifysuite.smtpd.get_recipients()        self.failIf(recipients is None)        self.failIf(len(recipients) != 1)        self.failIf(recipients[0] != 'joe@example.com')    def test_updater_is_reporter(self):        """Notification to reporter w/ updater option disabled (#3780)"""        self.env.config.set('notification', 'always_notify_owner', 'false')        self.env.config.set('notification', 'always_notify_reporter', 'true')        self.env.config.set('notification', 'always_notify_updater', 'false')        self.env.config.set('notification', 'smtp_always_cc', '')        self.env.config.set('notification', 'smtp_always_bcc', '')        self.env.config.set('notification', 'use_public_cc', 'false')        self.env.config.set('notification', 'use_short_addr', 'false')        self.env.config.set('notification', 'smtp_replyto',                             'joeuser@example.net')        ticket = Ticket(self.env)        ticket['summary'] = 'Foo'        ticket['reporter'] = u'joe@example.org'        ticket.insert()        ticket['summary'] = 'Bar'        ticket['component'] = 'New value'        ticket.save_changes('joe@example.org', 'this is my comment')                tn = TicketNotifyEmail(self.env)        tn.notify(ticket, newticket=True)        recipients = notifysuite.smtpd.get_recipients()        self.failIf(recipients is None)        self.failIf(len(recipients) != 1)        self.failIf(recipients[0] != 'joe@example.org')    def _validate_mimebody(self, mime, ticket, newtk):        """Body of a ticket notification message"""        (mime_decoder, mime_name, mime_charset) = mime        tn = TicketNotifyEmail(self.env)        tn.notify(ticket, newticket=newtk)        message = notifysuite.smtpd.get_message()        (headers, body) = parse_smtp_message(message)        self.failIf('MIME-Version' not in headers)        self.failIf('Content-Type' not in headers)        self.failIf('Content-Transfer-Encoding' not in headers)        self.failIf(not re.compile(r"1.\d").match(headers['MIME-Version']))        type_re = re.compile(r'^text/plain;\scharset="([\w\-\d]+)"$')        charset = type_re.match(headers['Content-Type'])        self.failIf(not charset)        charset = charset.group(1)        self.assertEqual(charset, mime_charset)        self.assertEqual(headers['Content-Transfer-Encoding'], mime_name)        # checks the width of each body line        for line in body.splitlines():            self.failIf(len(line) > MAXBODYWIDTH)        # attempts to decode the body, following the specified MIME endoding         # and charset        try:            if mime_decoder:                body = mime_decoder.decodestring(body)            body = unicode(body, charset)        except Exception, e:            raise AssertionError, e        # now processes each line of the body        bodylines = body.splitlines()        # body starts with one of more summary lines, first line is prefixed         # with the ticket number such as #<n>: summary                # finds the banner after the summary        banner_delim_re = re.compile(r'^\-+\+\-+$')        bodyheader = []        while ( not banner_delim_re.match(bodylines[0]) ):            bodyheader.append(bodylines.pop(0))        # summary should be present        self.failIf(not bodyheader)        # banner should not be empty        self.failIf(not bodylines)        # extracts the ticket ID from the first line        (tknum, bodyheader[0]) = bodyheader[0].split(' ', 1)        self.assertEqual(tknum[0], '#')        try:            tkid = int(tknum[1:-1])            self.assertEqual(tkid, 1)        except ValueError:            raise AssertionError, "invalid ticket number"        self.assertEqual(tknum[-1], ':')        summary = ' '.join(bodyheader)        self.assertEqual(summary, ticket['summary'])        # now checks the banner contents        self.failIf(not banner_delim_re.match(bodylines[0]))        banner = True        footer = None        props = {}        for line in bodylines[1:]:            # detect end of banner            if banner_delim_re.match(line):                banner = False                continue            if banner:                # parse banner and fill in a property dict                properties = line.split('|')                self.assertEqual(len(properties), 2)                for prop in properties:                    if prop.strip() == '':                        continue                    (k, v) = prop.split(':')                    props[k.strip().lower()] = v.strip()            # detect footer marker (weak detection)            if not footer:                if line.strip() == '--':                    footer = 0                    continue            # check footer            if footer != None:                footer += 1                # invalid footer detection                self.failIf(footer > 3)                # check ticket link                if line[:11] == 'Ticket URL:':                    self.assertEqual(line[12:].strip(),                                     "<%s>" % ticket['link'].strip())                # note project title / URL are not validated yet        # ticket properties which are not expected in the banner        xlist = ['summary', 'description', 'link', 'comment', 'new']        # check banner content (field exists, msg value matches ticket value)        for p in [prop for prop in ticket.values.keys() if prop not in xlist]:            self.failIf(not props.has_key(p))            self.failIf(props[p] != ticket[p])class NotificationTestSuite(unittest.TestSuite):    """Thin test suite wrapper to start and stop the SMTP test server"""    def __init__(self):        """Start the local SMTP test server"""        unittest.TestSuite.__init__(self)        self.smtpd = SMTPThreadedServer(SMTP_TEST_PORT)        self.smtpd.start()        self.addTest(unittest.makeSuite(NotificationTestCase, 'test'))        self.remaining = self.countTestCases()    def tear_down(self):        """Reset the local SMTP test server"""        self.smtpd.cleanup()        self.remaining = self.remaining-1        if self.remaining > 0:            return        # stop the SMTP test server when all tests have been completed        self.smtpd.stop()def suite():    global notifysuite    if not notifysuite:        notifysuite = NotificationTestSuite()    return notifysuiteif __name__ == '__main__':    unittest.TextTestRunner(verbosity=2).run(suite())

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影免费一区| 一级做a爱片久久| 国产欧美精品国产国产专区| 国产精品美女久久久久久久久| 国产午夜精品一区二区三区视频 | 亚洲国产高清aⅴ视频| 国产精品全国免费观看高清| 一区二区三区精密机械公司| 极品少妇xxxx精品少妇偷拍| 97精品国产97久久久久久久久久久久| 日韩三级免费观看| 欧美丰满少妇xxxxx高潮对白| 精品日韩欧美一区二区| 亚洲一卡二卡三卡四卡五卡| 国产999精品久久| 在线观看91精品国产麻豆| 91麻豆精品国产91久久久资源速度| **性色生活片久久毛片| 精品一区二区久久| 欧美丝袜丝交足nylons| 日韩欧美中文字幕公布| 亚洲精品国产无套在线观| 国产精品1区2区| 91.xcao| 亚洲自拍偷拍av| 成人免费毛片嘿嘿连载视频| 日韩一区二区精品| 亚洲成人资源在线| 不卡的av电影| 久久久蜜桃精品| 日本亚洲最大的色成网站www| 一本到一区二区三区| 欧美一区二区日韩| 亚洲不卡在线观看| 国产精品乡下勾搭老头1| 欧美巨大另类极品videosbest| 国产精品久久二区二区| 国产麻豆精品在线| 精品国内二区三区| 老司机午夜精品| 3d成人h动漫网站入口| **性色生活片久久毛片| 不卡一区中文字幕| 欧美国产精品专区| 无码av免费一区二区三区试看 | 亚洲自拍偷拍图区| 色婷婷综合视频在线观看| 中文字幕精品在线不卡| 国产福利一区二区| 欧美肥妇free| 亚洲va国产天堂va久久en| 一本色道亚洲精品aⅴ| 久久精品网站免费观看| 狠狠色丁香久久婷婷综合_中 | 岛国一区二区三区| 久久精品视频免费| 成人动漫在线一区| 国产成人精品亚洲日本在线桃色| 国产美女精品在线| 成人欧美一区二区三区在线播放| 色婷婷精品大在线视频| 美日韩一级片在线观看| 国产精品久久久久久久午夜片| 色综合一区二区| 久久91精品久久久久久秒播| 国产精品美女一区二区在线观看| 欧美日韩精品免费观看视频 | 丁香天五香天堂综合| 亚洲黄色小视频| 欧美va亚洲va| 91丨porny丨中文| 免费一级片91| 亚洲欧洲av色图| 日韩欧美成人一区二区| 一本一本大道香蕉久在线精品 | 亚洲成人黄色影院| 久久先锋影音av| 在线电影欧美成精品| 不卡av在线免费观看| 麻豆91精品91久久久的内涵| 亚洲精品国产高清久久伦理二区| 精品国产免费视频| 欧美综合欧美视频| 成人美女在线观看| 精品制服美女丁香| 亚洲图片欧美一区| 综合亚洲深深色噜噜狠狠网站| 日韩欧美国产一二三区| 欧美日韩国产欧美日美国产精品| 成人激情校园春色| 精品一区二区免费在线观看| 午夜精品福利在线| 亚洲日本免费电影| 国产精品拍天天在线| 精品日韩在线一区| 91精品福利在线一区二区三区| 色香蕉久久蜜桃| 91麻豆蜜桃一区二区三区| 国产一区二区福利| 韩国精品免费视频| 久久成人综合网| 日韩在线播放一区二区| 亚洲国产人成综合网站| 亚洲蜜桃精久久久久久久| 中文字幕av不卡| 国产日韩影视精品| 国产三级精品三级| 久久久久久久综合色一本| 日韩你懂的电影在线观看| 欧美一区二区福利在线| 欧美电影在哪看比较好| 欧美主播一区二区三区美女| 欧美私人免费视频| 欧美日韩精品专区| 91精品欧美久久久久久动漫| 欧美高清你懂得| 3d成人h动漫网站入口| 69堂国产成人免费视频| 91精品国产乱码| 欧美一区二区三区四区在线观看 | 色噜噜狠狠一区二区三区果冻| 91在线观看美女| 色婷婷久久久久swag精品 | 午夜伊人狠狠久久| 国产福利精品一区| 成人免费视频网站在线观看| 欧美中文字幕亚洲一区二区va在线 | 美女一区二区三区| 国产精品视频九色porn| 国产精品视频yy9299一区| 18涩涩午夜精品.www| 亚洲欧美日本韩国| 亚洲国产aⅴ成人精品无吗| 午夜视频在线观看一区二区三区 | 国产精品二区一区二区aⅴ污介绍| 国产精品剧情在线亚洲| 一区二区激情小说| 日本中文一区二区三区| 国产伦精品一区二区三区免费| 成人激情视频网站| 欧美吞精做爰啪啪高潮| 日韩精品中文字幕一区二区三区| 久久精品视频一区二区三区| 亚洲男帅同性gay1069| 香蕉久久一区二区不卡无毒影院| 精品亚洲免费视频| 91玉足脚交白嫩脚丫在线播放| 欧美日韩一区成人| 精品精品欲导航| 亚洲精品久久久蜜桃| 免费成人小视频| 成人免费黄色大片| 欧美亚洲愉拍一区二区| 欧美va在线播放| 亚洲青青青在线视频| 日本亚洲视频在线| 99精品在线观看视频| 欧美一级在线观看| 中文字幕亚洲在| 毛片不卡一区二区| 91麻豆swag| 26uuu精品一区二区三区四区在线| 亚洲人成网站色在线观看 | 日日欢夜夜爽一区| 国产白丝精品91爽爽久久| 在线视频你懂得一区二区三区| 日韩欧美国产不卡| 亚洲一二三四久久| 韩国女主播一区| 欧美写真视频网站| 国产亲近乱来精品视频| 亚洲国产精品久久人人爱| 国内成+人亚洲+欧美+综合在线| 色视频一区二区| 欧美激情中文不卡| 蜜桃免费网站一区二区三区| 91日韩一区二区三区| 日本一区二区三区视频视频| 麻豆成人久久精品二区三区红| 91视频在线观看| 国产精品久久久久久久久图文区 | 中文字幕精品一区| 国内精品久久久久影院色| 欧美午夜精品电影| 亚洲精品乱码久久久久久黑人| 国产一区二区导航在线播放| 欧美一区二区日韩| 天堂蜜桃91精品| 在线观看av一区| 亚洲色图制服丝袜| 成人性色生活片免费看爆迷你毛片| 日韩美女一区二区三区四区| 丝袜国产日韩另类美女| 欧美体内she精高潮| 亚洲一区二区三区四区在线免费观看| aaa亚洲精品一二三区| 国产农村妇女毛片精品久久麻豆| 天天综合色天天| 欧美丰满美乳xxx高潮www| 日本成人超碰在线观看|