Exemple #1
4
def test_ccode_with_unicode():
    domein = 'test'
    tests = [(u'key1',u'leftcode'),
            (u'key2',u'~!@#$%^&*()_+}{:";][=-/.,<>?`'),
            (u'key3',u'?érýúíó?ás??lzcn?'),
            (u'key4',u'?ë?ÿüïöä´¨???è?ùì'),
            (u'key5',u'òà???UIÕÃ?Ñ`~'),
            (u'key6',u"a\xac\u1234\u20ac\U00008000"),
            (u'key7',u"abc_\u03a0\u03a3\u03a9.txt"),
            (u'key8',u"?ÉRÝÚÍÓ?ÁS??LZCN??"),
            (u'key9',u"Ë?¨YܨIÏÏÖÄ???È?ÙÌÒ`À`Z?"),
            ]
    try:    #clean before test
        botslib.changeq(u'''DELETE FROM ccode ''')
        botslib.changeq(u'''DELETE FROM ccodetrigger''')
    except:
        print 'Error while deleting: ',botslib.txtexc()
        raise
    try:
        botslib.changeq(u'''INSERT INTO ccodetrigger (ccodeid)
                                VALUES (%(ccodeid)s)''',
                                {'ccodeid':domein})
        for key,value in tests:
            botslib.changeq(u'''INSERT INTO ccode (ccodeid_id,leftcode,rightcode,attr1,attr2,attr3,attr4,attr5,attr6,attr7,attr8)
                                    VALUES (%(ccodeid)s,%(leftcode)s,%(rightcode)s,'1','1','1','1','1','1','1','1')''',
                                    {'ccodeid':domein,'leftcode':key,'rightcode':value})
    except:
        print 'Error while updating: ',botslib.txtexc()
        raise
    try:
        for key,value in tests:
            print 'key',key
            for row in botslib.query(u'''SELECT rightcode
                                        FROM    ccode
                                        WHERE   ccodeid_id = %(ccodeid)s
                                        AND     leftcode = %(leftcode)s''',
                                        {'ccodeid':domein,'leftcode':key}):
                print '    ',key, type(row['rightcode']),type(value)
                if row['rightcode'] != value:
                    print 'failure in test "%s": result "%s" is not equal to "%s"'%(key,row['rightcode'],value)
                else:
                    print '    OK'
                break;
            else:
                print '??can not find testentry %s %s in db'%(key,value)
    except:
        print 'Error while quering db: ',botslib.txtexc()
        raise
Exemple #2
0
 def testroutetestmdn(self):
     lijst = utilsunit.getdir(os.path.join(botssys,'outfile/confirm/mdn/*'))
     self.failUnless(len(lijst)==0)
     for row in botslib.query(u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''',
                             {'status':210,'statust':DONE,'idroute':'testmdn','confirmtype':'send-email-MDN','confirmasked':True}):
                                 
         self.failUnless(row[1])
         self.failUnless(row[2]!=0)
         break
     else:
         self.failUnless(1==0)
     for row in botslib.query(u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''',
                             {'status':510,'statust':DONE,'idroute':'testmdn','confirmtype':'ask-email-MDN','confirmasked':True}):
         self.failUnless(row[1])
         self.failUnless(row[2]!=0)
         break
     else:
         self.failUnless(1==0)
Exemple #3
0
 def testroutetestcontrl(self):
     '''
     test997 1:  pickup ORDERS*1   ask confirm ORDERS*2   gen & send ORDERS*2
                                   send confirm ORDERS*1  gen & send CONTRL*1
     test997 2:  receive CONTRL*1  confirm ORDERS*1       gen xml*1
                 receive ORDERS*2  ask confirm ORDERS*3   gen ORDERS*3
                                   send confirm ORDERS*2  gen & send CONTRL*2
     test997 3:  receive CONTRL*2  confirm ORDERS*2       gen & send xml (to trash)
                                                          send ORDERS*3 (to trash)
                                                          send xml (to trash)
     '''
     lijst = utilsunit.getdir(os.path.join(botssys, 'outfile/confirm/edifact/*'))
     self.failUnless(len(lijst) == 0)
     lijst = utilsunit.getdir(os.path.join(botssys, 'outfile/confirm/trash/*'))
     self.failUnless(len(lijst) == 6)
     counter = 0
     for row in botslib.query(u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''',
                              {'status': 400, 'statust': DONE, 'idroute': 'testcontrl', 'confirmtype': 'ask-edifact-CONTRL', 'confirmasked': True}):
         counter += 1
         if counter == 1:
             self.failUnless(not row[str('confirmed')])
             self.failUnless(row[str('confirmidta')] == 0)
         elif counter == 2:
             self.failUnless(row[str('confirmed')])
             self.failUnless(row[str('confirmidta')] != 0)
         else:
             break
     else:
         self.failUnless(counter != 0)
     for row in botslib.query(u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''',
                              {'status': 310, 'statust': DONE, 'idroute': 'testcontrl', 'confirmtype': 'send-edifact-CONTRL', 'confirmasked': True}):
         counter += 1
         if counter <= 2:
             self.failUnless(row[str('confirmed')])
             self.failUnless(row[str('confirmidta')] != 0)
         else:
             break
     else:
         self.failUnless(counter != 0)
Exemple #4
0
 def testroutetestcontrl(self):
     '''
     test997 1:  pickup ORDERS*1   ask confirm ORDERS*2   gen & send ORDERS*2
                                   send confirm ORDERS*1  gen & send CONTRL*1
     test997 2:  receive CONTRL*1  confirm ORDERS*1       gen xml*1
                 receive ORDERS*2  ask confirm ORDERS*3   gen ORDERS*3
                                   send confirm ORDERS*2  gen & send CONTRL*2
     test997 3:  receive CONTRL*2  confirm ORDERS*2       gen & send xml (to trash)
                                                          send ORDERS*3 (to trash)
                                                          send xml (to trash)
     '''
     lijst = utilsunit.getdir(os.path.join(botssys,'outfile/confirm/edifact/*'))
     self.failUnless(len(lijst)==0)
     lijst = utilsunit.getdir(os.path.join(botssys,'outfile/confirm/trash/*'))
     self.failUnless(len(lijst)==6)
     counter=0
     for row in botslib.query(u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''',
                             {'status':400,'statust':DONE,'idroute':'testcontrl','confirmtype':'ask-edifact-CONTRL','confirmasked':True}):
         counter += 1
         if counter == 1:
             self.failUnless(not row[str('confirmed')])
             self.failUnless(row[str('confirmidta')]==0)
         elif counter == 2:
             self.failUnless(row[str('confirmed')])
             self.failUnless(row[str('confirmidta')]!=0)
         else:
             break
     else:
         self.failUnless(counter!=0)
     for row in botslib.query(u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''',
                             {'status':310,'statust':DONE,'idroute':'testcontrl','confirmtype':'send-edifact-CONTRL','confirmasked':True}):
         counter += 1
         if counter <= 2:
             self.failUnless(row[str('confirmed')])
             self.failUnless(row[str('confirmidta')]!=0)
         else:
             break
     else:
         self.failUnless(counter!=0)
Exemple #5
0
 def testroutetest997(self):
     '''
     test997 1:  pickup 850*1    ask confirm 850*2   gen & send 850*2
                                 send confirm 850*1  gen & send 997*1
     test997 2:  receive 997*1   confirm 850*1       gen xml*1
                 receive 850*2   ask confirm 850*3   gen 850*3
                                 send confirm 850*2  gen & send 997*2
     test997 3:  receive 997*2   confirm 850*2       gen & send xml (to trash)
                                                     send 850*3 (to trash)
                                                     send xml (to trash)
     '''
     lijst = utilsunit.getdir(os.path.join(botssys,'outfile/confirm/x12/*'))
     self.failUnless(len(lijst)==0)
     lijst = utilsunit.getdir(os.path.join(botssys,'outfile/confirm/trash/*'))
     self.failUnless(len(lijst)==6)
     counter=0
     for row in botslib.query(u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''',
                             {'status':400,'statust':DONE,'idroute':'test997','confirmtype':'ask-x12-997','confirmasked':True}):
         counter += 1
         if counter == 1:
             self.failUnless(not row[1])
             self.failUnless(row[2]==0)
         elif counter == 2:
             self.failUnless(row[1])
             self.failUnless(row[2]!=0)
         else:
             break
     else:
         self.failUnless(counter!=0)
     for row in botslib.query(u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''',
                             {'status':310,'statust':DONE,'idroute':'test997','confirmtype':'send-x12-997','confirmasked':True}):
         counter += 1
         if counter <= 2:
             self.failUnless(row[1])
             self.failUnless(row[2]!=0)
         else:
             break
     else:
         self.failUnless(counter!=0)
Exemple #6
0
    def testroutetestmdn(self):
        lijst = utilsunit.getdir(os.path.join(botssys, "outfile/confirm/mdn/*"))
        self.failUnless(len(lijst) == 0)
        nr_rows = 0
        for row in botslib.query(
            """SELECT idta,confirmed,confirmidta
                                FROM    ta
                                WHERE   status=%(status)s
                                AND     statust=%(statust)s
                                AND     idroute=%(idroute)s
                                AND     confirmtype=%(confirmtype)s
                                AND     confirmasked=%(confirmasked)s
                                AND     frommail != ''
                                ORDER BY idta DESC
                                """,
            {
                "status": 220,
                "statust": DONE,
                "idroute": "testmdn",
                "confirmtype": "send-email-MDN",
                "confirmasked": True,
            },
        ):
            nr_rows += 1
            print(row[str("idta")], row[str("confirmed")], row[str("confirmidta")])
            self.failUnless(row[str("confirmed")])
            self.failUnless(row[str("confirmidta")] != 0)
        else:
            self.failUnless(nr_rows == 1)

        nr_rows = 0
        for row in botslib.query(
            """SELECT idta,confirmed,confirmidta
                                FROM    ta
                                WHERE   status=%(status)s
                                AND     statust=%(statust)s
                                AND     idroute=%(idroute)s
                                AND     confirmtype=%(confirmtype)s
                                AND     confirmasked=%(confirmasked)s
                                AND     frommail != ''
                                ORDER BY idta DESC
                                """,
            {
                "status": 500,
                "statust": DONE,
                "idroute": "testmdn",
                "confirmtype": "ask-email-MDN",
                "confirmasked": True,
            },
        ):
            nr_rows += 1
            self.failUnless(row[str("confirmed")])
            self.failUnless(row[str("confirmidta")] != 0)
        else:
            self.failUnless(nr_rows == 1)
Exemple #7
0
    def testroutetestmdn(self):
        lijst = utilsunit.getdir(os.path.join(botssys,
                                              'outfile/confirm/mdn/*'))
        self.failUnless(len(lijst) == 0)
        nr_rows = 0
        for row in botslib.query(
                u'''SELECT idta,confirmed,confirmidta
                                FROM    ta
                                WHERE   status=%(status)s
                                AND     statust=%(statust)s
                                AND     idroute=%(idroute)s
                                AND     confirmtype=%(confirmtype)s
                                AND     confirmasked=%(confirmasked)s
                                AND     frommail != ''
                                ORDER BY idta DESC
                                ''', {
                    'status': 220,
                    'statust': DONE,
                    'idroute': 'testmdn',
                    'confirmtype': 'send-email-MDN',
                    'confirmasked': True
                }):
            nr_rows += 1
            print(row[str('idta')], row[str('confirmed')],
                  row[str('confirmidta')])
            self.failUnless(row[str('confirmed')])
            self.failUnless(row[str('confirmidta')] != 0)
        else:
            self.failUnless(nr_rows == 1)

        nr_rows = 0
        for row in botslib.query(
                u'''SELECT idta,confirmed,confirmidta
                                FROM    ta
                                WHERE   status=%(status)s
                                AND     statust=%(statust)s
                                AND     idroute=%(idroute)s
                                AND     confirmtype=%(confirmtype)s
                                AND     confirmasked=%(confirmasked)s
                                AND     frommail != ''
                                ORDER BY idta DESC
                                ''', {
                    'status': 500,
                    'statust': DONE,
                    'idroute': 'testmdn',
                    'confirmtype': 'ask-email-MDN',
                    'confirmasked': True
                }):
            nr_rows += 1
            self.failUnless(row[str('confirmed')])
            self.failUnless(row[str('confirmidta')] != 0)
        else:
            self.failUnless(nr_rows == 1)
Exemple #8
0
def test_plugin():
    for row in botslib.query(
            u'''SELECT COUNT(*) as count
                                FROM    partner
                                WHERE   isgroup = %(isgroup)s ''',
        {'isgroup': False}):
        if row[str('count')] != 5:
            raise Exception('error partner count')
        break
    else:
        raise Exception('no partner count?')
    for row in botslib.query(
            u'''SELECT COUNT(*) as count
                                FROM    partner
                                WHERE   isgroup = %(isgroup)s ''',
        {'isgroup': True}):
        if row[str('count')] != 3:
            raise Exception('error partner count')
        break
    else:
        raise Exception('no partner count?')
    for row in botslib.query(
            u'''SELECT COUNT(*) as count
                                    FROM partnergroup
                                    WHERE from_partner_id=%(from_partner_id)s  ''',
        {'from_partner_id': 'plugintest1'}):
        if row[str('count')] != 3:
            raise Exception('error partner count')
        break
    else:
        raise Exception('no partner count?')
    for row in botslib.query(
            u'''SELECT to_partner_id
                                    FROM partnergroup
                                    WHERE from_partner_id=%(from_partner_id)s  ''',
        {'from_partner_id': 'plugintest2'}):
        if row[str('to_partner_id')] != 'plugingroup2':
            raise Exception('error partner count')
    for row in botslib.query(
            u'''SELECT COUNT(*) as count
                                    FROM partnergroup
                                    WHERE to_partner_id=%(to_partner_id)s  ''',
        {'to_partner_id': 'plugingroup2'}):
        if row[str('count')] != 2:
            raise Exception('error partner count')
        break
    else:
        raise Exception('no partner count?')
Exemple #9
0
def getreportlastrun():
    for row in botslib.query(u'''SELECT *
                            FROM    report
                            ORDER BY idta DESC
                            '''):
        return row
    raise Exception('no report')
def main(inn, out):
    out.put({'BOTSID': 'Group', 'SenderId': inn.ta_info['frompartner']})
    out.put({'BOTSID': 'Group', 'ReceiverId': inn.ta_info['topartner']})
    out.put({'BOTSID': 'Group',
             'Code': inn.get({'BOTSID': 'ST'},
                             {'BOTSID': 'AK1', 'AK101': None})})
    out.put({'BOTSID': 'Group',
             'Status': inn.get({'BOTSID': 'ST'},
                               {'BOTSID': 'AK9', 'AK901': None})})
    out.put({'BOTSID': 'Group',
             'AdvStatus': inn.get({'BOTSID': 'ST'},
                                  {'BOTSID': 'AK9', 'AK905': None})})

    for ak2 in inn.getloop({'BOTSID': 'ST'}, {'BOTSID': 'AK2'}):
        trans = out.putloop({'BOTSID': 'Group'}, {'BOTSID': 'Transaction'})
        trans.put({'BOTSID': 'Transaction',
                   'Code': ak2.get({'BOTSID': 'AK2', 'AK201': None})})
        reference = ak2.get({'BOTSID': 'AK2', 'AK202': None})
        original_transaction = list(
            botslib.query("select * from ta where reference='{}'".format(
                reference.lstrip('0'))))

        if not original_transaction:
            raise TransactionNotFound(
                'Could not find the related transaction '
                'in DB for reference {}'.format(reference))
        trans.put({'BOTSID': 'Transaction',
                   'Number': original_transaction[0][33]})

        trans.put({'BOTSID': 'Transaction',
                   'Status': ak2.get({'BOTSID': 'AK2'},
                                     {'BOTSID': 'AK5', 'AK501': None})})
        trans.put({'BOTSID': 'Transaction',
                   'AdvStatus': ak2.get({'BOTSID': 'AK2'},
                                        {'BOTSID': 'AK5', 'AK502': None})})
Exemple #11
0
 def testroutetestmdn2(self):
     lijst = utilsunit.getdir(
         os.path.join(botssys, 'outfile/confirm/mdn2/*'))
     self.failUnless(len(lijst) == 0)
     for row in botslib.query(
             u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''', {
                 'status': 510,
                 'statust': DONE,
                 'idroute': 'testmdn2',
                 'confirmtype': 'ask-email-MDN',
                 'confirmasked': True
             }):
         self.failUnless(not row[1])
         self.failUnless(row[2] == 0)
         break
     else:
         self.failUnless(1 == 0)
Exemple #12
0
def getlastreport():
    for row in botslib.query(u'''SELECT *
                            FROM    report
                            ORDER BY idta DESC
                            '''):
        #~ print row
        return row
Exemple #13
0
def geterrorlastrun():
    for row in botslib.query(u'''SELECT *
                            FROM    filereport
                            ORDER BY idta DESC
                            '''):
        return row[str('errortext')]
    raise Exception('no filereport')
Exemple #14
0
def getlastreport():
    for row in botslib.query(u'''SELECT *
                            FROM    report
                            ORDER BY idta DESC
                            '''):
        #~ print row
        return row
Exemple #15
0
def getreportlastrun():
    for row in botslib.query(u'''SELECT *
                            FROM    report
                            ORDER BY idta DESC
                            '''):
        return row
    raise Exception('no report')
Exemple #16
0
def geterrorlastrun():
    for row in botslib.query(u'''SELECT *
                            FROM    filereport
                            ORDER BY idta DESC
                            '''):
        return row['errortext']
    raise Exception('no filereport')
Exemple #17
0
    def testroutetestmdn(self):
        comclass = communication._comsession(channeldict={
                                             'idchannel': 'dutchic_desadv_out'}, idroute='dutchic_desadv', userscript=None, scriptname=None, command='new', rootidta=0)
        count = 0
        for row in botslib.query(u'''SELECT idta
                                FROM    ta
                                WHERE   status=%(status)s
                                AND     statust=%(statust)s
                                ORDER BY idta DESC
                                ''',
                                 {'status': 520, 'statust': DONE, 'idroute': 'testmdn', 'confirmtype': 'send-email-MDN', 'confirmasked': True}):
            count += 1
            sub_unique = botslib.unique('dutchic_desadv_out')
            ta = botslib.OldTransaction(row[str('idta')])

            self.assertEqual(comclass.filename_formatter('*.edi', ta), str(sub_unique + 1) + '.edi', '')
            self.assertEqual(comclass.filename_formatter('*.edi', ta), str(sub_unique + 2) + '.edi', '')
            self.assertEqual(comclass.filename_formatter('*.edi', ta), str(sub_unique + 3) + '.edi', '')
            self.assertEqual(comclass.filename_formatter('{messagetype}/{editype}/{topartner}/{frompartner}/{botskey}_*', ta),
                             'DESADVD96AUNEAN005/edifact/8712345678920/8712345678910/VERZENDVB8_' + str(sub_unique + 4), '')
            self.assertEqual(comclass.filename_formatter(
                '*_{datetime:%Y-%m-%d}.edi', ta), str(sub_unique + 5) + '_' + datetime.datetime.now().strftime('%Y-%m-%d') + '.edi', '')
            self.assertEqual(comclass.filename_formatter('*_*.edi', ta),
                             str(sub_unique + 6) + '_' + str(sub_unique + 6) + '.edi', '')
            self.assertEqual(comclass.filename_formatter('123.edi', ta), '123.edi', '')
            self.assertEqual(comclass.filename_formatter('{infile}', ta), 'desadv1.edi', '')
            self.assertEqual(comclass.filename_formatter('{infile:name}.txt', ta), 'desadv1.txt', '')
            self.assertEqual(comclass.filename_formatter('{infile:name}.{infile:ext}', ta), 'desadv1.edi', '')
            print('expect: <idta>.edi                          ', comclass.filename_formatter('{idta}.edi', ta))
            self.assertRaises(botslib.CommunicationOutError, comclass.filename_formatter, '{tada}', ta)
            self.assertRaises(botslib.CommunicationOutError, comclass.filename_formatter, '{infile:test}', ta)
            if count == 1:  # test only 1 incoming files
                break
Exemple #18
0
def test_ccode_with_unicode():
    domein = 'test'
    tests = [
        (u'key1', u'leftcode'),
        (u'key2', u'~!@#$%^&*()_+}{:";][=-/.,<>?`'),
        (u'key3', u'?érýúíó?ás??lzcn?'),
        (u'key4', u'?ë?ÿüïöä´¨???è?ùì'),
        (u'key5', u'òà???UIÕÃ?Ñ`~'),
        (u'key6', u"a\xac\u1234\u20ac\U00008000"),
        (u'key7', u"abc_\u03a0\u03a3\u03a9.txt"),
        (u'key8', u"?ÉRÝÚÍÓ?ÁS??LZCN??"),
        (u'key9', u"Ë?¨YܨIÏÏÖÄ???È?ÙÌÒ`À`Z?"),
    ]
    try:  #clean before test
        botslib.changeq(u'''DELETE FROM ccode ''')
        botslib.changeq(u'''DELETE FROM ccodetrigger''')
    except:
        print('Error while deleting: ', botslib.txtexc())
        raise
    try:
        botslib.changeq(
            u'''INSERT INTO ccodetrigger (ccodeid)
                                VALUES (%(ccodeid)s)''', {'ccodeid': domein})
        for key, value in tests:
            botslib.changeq(
                u'''INSERT INTO ccode (ccodeid_id,leftcode,rightcode,attr1,attr2,attr3,attr4,attr5,attr6,attr7,attr8)
                                    VALUES (%(ccodeid)s,%(leftcode)s,%(rightcode)s,'1','1','1','1','1','1','1','1')''',
                {
                    'ccodeid': domein,
                    'leftcode': key,
                    'rightcode': value
                })
    except:
        print('Error while updating: ', botslib.txtexc())
        raise
    try:
        for key, value in tests:
            print('key', key)
            for row in botslib.query(
                    u'''SELECT rightcode
                                        FROM    ccode
                                        WHERE   ccodeid_id = %(ccodeid)s
                                        AND     leftcode = %(leftcode)s''', {
                        'ccodeid': domein,
                        'leftcode': key
                    }):
                print('    ', key, type(row[str('rightcode')]), type(value))
                if row[str('rightcode')] != value:
                    print(
                        'failure in test "%s": result "%s" is not equal to "%s"'
                        % (key, row['rightcode'], value))
                else:
                    print('    OK')
                break
            else:
                print('??can not find testentry %s %s in db' % (key, value))
    except:
        print('Error while quering db: ', botslib.txtexc())
        raise
def getreportlastrun():
    ''' Return the results of the last run as a dict.'''
    for row in botslib.query(u'''SELECT *
                            FROM    report
                            ORDER BY idta DESC
                            '''):
        return dict(row)
    raise Exception('no report')
Exemple #20
0
def getlastta(status):
    for row in botslib.query(u'''SELECT *
                            FROM    ta
                            WHERE  status=%(status)s
                            ORDER BY idta DESC
                            ''', {'status': status}):
        return row
    raise Exception('no ta')
def getreportlastrun():
    ''' Return the results of the last run as a dict.'''
    for row in botslib.query(u'''SELECT *
                            FROM    report
                            ORDER BY idta DESC
                            '''):
        return dict(row)
    raise Exception('no report')
Exemple #22
0
def getlastta(status):
    for row in botslib.query(
            u'''SELECT *
                            FROM    ta
                            WHERE  status=%(status)s
                            ORDER BY idta DESC
                            ''', {'status': status}):
        return row
    raise Exception('no ta')
Exemple #23
0
def getreportlastrun():
    for row in botslib.query(
        """SELECT *
                            FROM    report
                            ORDER BY idta DESC
                            """
    ):
        return row
    raise Exception("no report")
Exemple #24
0
def geterrorlastrun():
    for row in botslib.query(
        """SELECT *
                            FROM    filereport
                            ORDER BY idta DESC
                            """
    ):
        return row[str("errortext")]
    raise Exception("no filereport")
Exemple #25
0
def test_plugin():
    for row in botslib.query(u'''SELECT COUNT(*) as count
                                FROM    partner
                                WHERE   isgroup = %(isgroup)s ''',
                                {'isgroup':False}):
        if row['count'] != 5:
            raise Exception('error partner count')
        break
    else:
        raise Exception('no partner count?')
    for row in botslib.query(u'''SELECT COUNT(*) as count
                                FROM    partner
                                WHERE   isgroup = %(isgroup)s ''',
                                {'isgroup':True}):
        if row['count'] != 3:
            raise Exception('error partner count')
        break
    else:
        raise Exception('no partner count?')
    for row in botslib.query(u'''SELECT COUNT(*) as count
                                    FROM partnergroup
                                    WHERE from_partner_id=%(from_partner_id)s  ''',
                                {'from_partner_id':'plugintest1'}):
        if row['count'] != 3:
            raise Exception('error partner count')
        break
    else:
        raise Exception('no partner count?')
    for row in botslib.query(u'''SELECT to_partner_id
                                    FROM partnergroup
                                    WHERE from_partner_id=%(from_partner_id)s  ''',
                                {'from_partner_id':'plugintest2'}):
        if row['to_partner_id'] != 'plugingroup2':
            raise Exception('error partner count')
    for row in botslib.query(u'''SELECT COUNT(*) as count
                                    FROM partnergroup
                                    WHERE to_partner_id=%(to_partner_id)s  ''',
                                {'to_partner_id':'plugingroup2'}):
        if row['count'] != 2:
            raise Exception('error partner count')
        break
    else:
        raise Exception('no partner count?')
def persist_lookup_ts(domein,botskey):
    ''' lookup persistent values in db.
    '''
    for row in botslib.query('''SELECT ts
                                FROM persist
                                WHERE domein=%(domein)s
                                AND botskey=%(botskey)s''',
                                {'domein':domein,'botskey':botskey}):
        return row[str('ts')]
    return None
Exemple #27
0
def getlastta(status):
    for row in botslib.query(
        """SELECT *
                            FROM    ta
                            WHERE  status=%(status)s
                            ORDER BY idta DESC
                            """,
        {"status": status},
    ):
        return row
    raise Exception("no ta")
Exemple #28
0
    def testroutetestmdn(self):
        comclass = communication._comsession(
            channeldict={"idchannel": "dutchic_desadv_out"},
            idroute="dutchic_desadv",
            userscript=None,
            scriptname=None,
            command="new",
            rootidta=0,
        )
        count = 0
        for row in botslib.query(
            """SELECT idta
                                FROM    ta
                                WHERE   status=%(status)s
                                AND     statust=%(statust)s
                                ORDER BY idta DESC
                                """,
            {
                "status": 520,
                "statust": DONE,
                "idroute": "testmdn",
                "confirmtype": "send-email-MDN",
                "confirmasked": True,
            },
        ):
            count += 1
            sub_unique = botslib.unique("dutchic_desadv_out")
            ta = botslib.OldTransaction(row[str("idta")])

            self.assertEqual(comclass.filename_formatter("*.edi", ta), str(sub_unique + 1) + ".edi", "")
            self.assertEqual(comclass.filename_formatter("*.edi", ta), str(sub_unique + 2) + ".edi", "")
            self.assertEqual(comclass.filename_formatter("*.edi", ta), str(sub_unique + 3) + ".edi", "")
            self.assertEqual(
                comclass.filename_formatter("{messagetype}/{editype}/{topartner}/{frompartner}/{botskey}_*", ta),
                "DESADVD96AUNEAN005/edifact/8712345678920/8712345678910/VERZENDVB8_" + str(sub_unique + 4),
                "",
            )
            self.assertEqual(
                comclass.filename_formatter("*_{datetime:%Y-%m-%d}.edi", ta),
                str(sub_unique + 5) + "_" + datetime.datetime.now().strftime("%Y-%m-%d") + ".edi",
                "",
            )
            self.assertEqual(
                comclass.filename_formatter("*_*.edi", ta), str(sub_unique + 6) + "_" + str(sub_unique + 6) + ".edi", ""
            )
            self.assertEqual(comclass.filename_formatter("123.edi", ta), "123.edi", "")
            self.assertEqual(comclass.filename_formatter("{infile}", ta), "desadv1.edi", "")
            self.assertEqual(comclass.filename_formatter("{infile:name}.txt", ta), "desadv1.txt", "")
            self.assertEqual(comclass.filename_formatter("{infile:name}.{infile:ext}", ta), "desadv1.edi", "")
            print("expect: <idta>.edi                          ", comclass.filename_formatter("{idta}.edi", ta))
            self.assertRaises(botslib.CommunicationOutError, comclass.filename_formatter, "{tada}", ta)
            self.assertRaises(botslib.CommunicationOutError, comclass.filename_formatter, "{infile:test}", ta)
            if count == 1:  # test only 1 incoming files
                break
Exemple #29
0
def persist_lookup_ts(domein, botskey):
    ''' lookup persistent values in db.
    '''
    for row in botslib.query(
            '''SELECT ts
                                FROM persist
                                WHERE domein=%(domein)s
                                AND botskey=%(botskey)s''', {
                'domein': domein,
                'botskey': botskey
            }):
        return row[str('ts')]
    return None
Exemple #30
0
    def testroutetestmdn(self):
        lijst = utilsunit.getdir(os.path.join(botssys, 'outfile/confirm/mdn/*'))
        self.failUnless(len(lijst) == 0)
        nr_rows = 0
        for row in botslib.query(u'''SELECT idta,confirmed,confirmidta
                                FROM    ta
                                WHERE   status=%(status)s
                                AND     statust=%(statust)s
                                AND     idroute=%(idroute)s
                                AND     confirmtype=%(confirmtype)s
                                AND     confirmasked=%(confirmasked)s
                                AND     frommail != ''
                                ORDER BY idta DESC
                                ''',
                                 {'status': 220, 'statust': DONE, 'idroute': 'testmdn', 'confirmtype': 'send-email-MDN', 'confirmasked': True}):
            nr_rows += 1
            print(row[str('idta')], row[str('confirmed')], row[str('confirmidta')])
            self.failUnless(row[str('confirmed')])
            self.failUnless(row[str('confirmidta')] != 0)
        else:
            self.failUnless(nr_rows == 1)

        nr_rows = 0
        for row in botslib.query(u'''SELECT idta,confirmed,confirmidta
                                FROM    ta
                                WHERE   status=%(status)s
                                AND     statust=%(statust)s
                                AND     idroute=%(idroute)s
                                AND     confirmtype=%(confirmtype)s
                                AND     confirmasked=%(confirmasked)s
                                AND     frommail != ''
                                ORDER BY idta DESC
                                ''',
                                 {'status': 500, 'statust': DONE, 'idroute': 'testmdn', 'confirmtype': 'ask-email-MDN', 'confirmasked': True}):
            nr_rows += 1
            self.failUnless(row[str('confirmed')])
            self.failUnless(row[str('confirmidta')] != 0)
        else:
            self.failUnless(nr_rows == 1)
Exemple #31
0
def indicate_rereceive():
    count = 0
    for row in botslib.query(u'''SELECT idta
                            FROM    filereport
                            ORDER BY idta DESC
                            '''):
        count += 1
        botslib.changeq(u'''UPDATE filereport
                            SET retransmit = 1
                            WHERE idta=%(idta)s
                            ''', {'idta': row[str('idta')]})
        if count >= 2:
            break
Exemple #32
0
def indicate_rereceive():
    count = 0
    for row in botslib.query(u'''SELECT idta
                            FROM    filereport
                            ORDER BY idta DESC
                            '''):
        count += 1
        botslib.changeq(u'''UPDATE filereport
                            SET retransmit = 1
                            WHERE idta=%(idta)s
                            ''',{'idta':row[str('idta')]})
        if count >= 2:
            break
Exemple #33
0
def indicate_send():
    count = 0
    for row in botslib.query(u'''SELECT idta
                            FROM    ta
                            WHERE status=%(status)s
                            ORDER BY idta DESC
                            ''',{'status':EXTERNOUT}):
        count += 1
        botslib.changeq(u'''UPDATE ta
                            SET retransmit = %(retransmit)s
                            WHERE idta=%(idta)s
                            ''',{'retransmit':True,'idta':row[str('idta')]})
        if count >= 2:
            break
Exemple #34
0
def indicate_send():
    count = 0
    for row in botslib.query(u'''SELECT idta
                            FROM    ta
                            WHERE status=%(status)s
                            ORDER BY idta DESC
                            ''', {'status': EXTERNOUT}):
        count += 1
        botslib.changeq(u'''UPDATE ta
                            SET retransmit = %(retransmit)s
                            WHERE idta=%(idta)s
                            ''', {'retransmit': True, 'idta': row[str('idta')]})
        if count >= 2:
            break
def persist_lookup_ts(domein, botskey):
    """ lookup persistent values in db.
    """
    for row in botslib.query(
            """SELECT ts
                                FROM persist
                                WHERE domein=%(domein)s
                                AND botskey=%(botskey)s""",
        {
            "domein": domein,
            "botskey": botskey
        },
    ):
        return row[str("ts")]
    return None
Exemple #36
0
def indicate_rereceive():
    count = 0
    for row in botslib.query("""SELECT idta
                            FROM    filereport
                            ORDER BY idta DESC
                            """):
        count += 1
        botslib.changeq(
            """UPDATE filereport
                            SET retransmit = 1
                            WHERE idta=%(idta)s
                            """,
            {"idta": row[str("idta")]},
        )
        if count >= 2:
            break
Exemple #37
0
def lookup_partnerID(partnerID, qual):
    #if caching do lookup in cache.
    for row in botslib.query(
            u'''SELECT rightcode, attr1
                                FROM ccode
                                WHERE ccodeid_id = %(ccodeid)s
                                AND leftcode = %(leftcode)s''', {
                'ccodeid': 'x12_partner',
                'leftcode': partnerID
            }):
        ediID = row['rightcode']
        qual = row['attr1']
        break
    else:
        ediID = partnerID
    #if caching: put in cache
    return ediID, qual
Exemple #38
0
def lookup_ediID(ediID, qual):
    #if caching, first do a lookup in the cache.
    for row in botslib.query(
            u'''SELECT leftcode
                                FROM ccode
                                WHERE ccodeid_id = %(ccodeid)s
                                AND rightcode = %(rightcode)s 
                                AND attr1 = %(attr1)s ''', {
                'ccodeid': 'x12_partner',
                'rightcode': ediID.strip(),
                'attr1': qual
            }):
        partnerID = row['leftcode']
        break
    else:  #if not found: return ediID. Most of the time partnerID is the same as ediID anyway
        partnerID = ediID
    #if caching: put in cache
    return partnerID
Exemple #39
0
def indicate_send():
    count = 0
    for row in botslib.query(
            """SELECT idta
                            FROM    ta
                            WHERE status=%(status)s
                            ORDER BY idta DESC
                            """,
        {"status": EXTERNOUT},
    ):
        count += 1
        botslib.changeq(
            """UPDATE ta
                            SET retransmit = %(retransmit)s
                            WHERE idta=%(idta)s
                            """,
            {
                "retransmit": True,
                "idta": row[str("idta")]
            },
        )
        if count >= 2:
            break
Exemple #40
0
 def testroutetestcontrl(self):
     """
     test997 1:  pickup ORDERS*1   ask confirm ORDERS*2   gen & send ORDERS*2
                                   send confirm ORDERS*1  gen & send CONTRL*1
     test997 2:  receive CONTRL*1  confirm ORDERS*1       gen xml*1
                 receive ORDERS*2  ask confirm ORDERS*3   gen ORDERS*3
                                   send confirm ORDERS*2  gen & send CONTRL*2
     test997 3:  receive CONTRL*2  confirm ORDERS*2       gen & send xml (to trash)
                                                          send ORDERS*3 (to trash)
                                                          send xml (to trash)
     """
     lijst = utilsunit.getdir(os.path.join(botssys, "outfile/confirm/edifact/*"))
     self.failUnless(len(lijst) == 0)
     lijst = utilsunit.getdir(os.path.join(botssys, "outfile/confirm/trash/*"))
     self.failUnless(len(lijst) == 6)
     counter = 0
     for row in botslib.query(
         """SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             """,
         {
             "status": 400,
             "statust": DONE,
             "idroute": "testcontrl",
             "confirmtype": "ask-edifact-CONTRL",
             "confirmasked": True,
         },
     ):
         counter += 1
         if counter == 1:
             self.failUnless(not row[str("confirmed")])
             self.failUnless(row[str("confirmidta")] == 0)
         elif counter == 2:
             self.failUnless(row[str("confirmed")])
             self.failUnless(row[str("confirmidta")] != 0)
         else:
             break
     else:
         self.failUnless(counter != 0)
     for row in botslib.query(
         """SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             """,
         {
             "status": 310,
             "statust": DONE,
             "idroute": "testcontrl",
             "confirmtype": "send-edifact-CONTRL",
             "confirmasked": True,
         },
     ):
         counter += 1
         if counter <= 2:
             self.failUnless(row[str("confirmed")])
             self.failUnless(row[str("confirmidta")] != 0)
         else:
             break
     else:
         self.failUnless(counter != 0)
Exemple #41
0
    def testroutetestmdn(self):
        comclass = communication._comsession(
            channeldict={'idchannel': 'dutchic_desadv_out'},
            idroute='dutchic_desadv',
            userscript=None,
            scriptname=None,
            command='new',
            rootidta=0)
        count = 0
        for row in botslib.query(
                u'''SELECT idta
                                FROM    ta
                                WHERE   status=%(status)s
                                AND     statust=%(statust)s
                                ORDER BY idta DESC
                                ''', {
                    'status': 520,
                    'statust': DONE,
                    'idroute': 'testmdn',
                    'confirmtype': 'send-email-MDN',
                    'confirmasked': True
                }):
            count += 1
            sub_unique = botslib.unique('dutchic_desadv_out')
            ta = botslib.OldTransaction(row['idta'])

            self.assertEqual(comclass.filename_formatter('*.edi', ta),
                             str(sub_unique + 1) + '.edi', '')
            self.assertEqual(comclass.filename_formatter('*.edi', ta),
                             str(sub_unique + 2) + '.edi', '')
            self.assertEqual(comclass.filename_formatter('*.edi', ta),
                             str(sub_unique + 3) + '.edi', '')
            self.assertEqual(
                comclass.filename_formatter(
                    '{messagetype}/{editype}/{topartner}/{frompartner}/{botskey}_*',
                    ta),
                'DESADVD96AUNEAN005/edifact/8712345678920/8712345678910/VERZENDVB8_'
                + str(sub_unique + 4), '')
            self.assertEqual(
                comclass.filename_formatter('*_{datetime:%Y-%m-%d}.edi', ta),
                str(sub_unique + 5) + '_' +
                datetime.datetime.now().strftime('%Y-%m-%d') + '.edi', '')
            self.assertEqual(
                comclass.filename_formatter('*_*.edi', ta),
                str(sub_unique + 6) + '_' + str(sub_unique + 6) + '.edi', '')
            self.assertEqual(comclass.filename_formatter('123.edi', ta),
                             '123.edi', '')
            self.assertEqual(comclass.filename_formatter('{infile}', ta),
                             'desadv1.edi', '')
            self.assertEqual(
                comclass.filename_formatter('{infile:name}.txt', ta),
                'desadv1.txt', '')
            self.assertEqual(
                comclass.filename_formatter('{infile:name}.{infile:ext}', ta),
                'desadv1.edi', '')
            print 'expect: <idta>.edi                          ', comclass.filename_formatter(
                '{idta}.edi', ta)
            self.assertRaises(botslib.CommunicationOutError,
                              comclass.filename_formatter, '{tada}', ta)
            self.assertRaises(botslib.CommunicationOutError,
                              comclass.filename_formatter, '{infile:test}', ta)
            if count == 1:  #test only 1 incoming files
                break
Exemple #42
0
 def testroutetest997(self):
     '''
     test997 1:  pickup 850*1    ask confirm 850*2   gen & send 850*2
                                 send confirm 850*1  gen & send 997*1
     test997 2:  receive 997*1   confirm 850*1       gen xml*1
                 receive 850*2   ask confirm 850*3   gen 850*3
                                 send confirm 850*2  gen & send 997*2
     test997 3:  receive 997*2   confirm 850*2       gen & send xml (to trash)
                                                     send 850*3 (to trash)
                                                     send xml (to trash)
     '''
     lijst = utilsunit.getdir(os.path.join(botssys,
                                           'outfile/confirm/x12/*'))
     self.failUnless(len(lijst) == 0)
     lijst = utilsunit.getdir(
         os.path.join(botssys, 'outfile/confirm/trash/*'))
     self.failUnless(len(lijst) == 6)
     counter = 0
     for row in botslib.query(
             u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''', {
                 'status': 400,
                 'statust': DONE,
                 'idroute': 'test997',
                 'confirmtype': 'ask-x12-997',
                 'confirmasked': True
             }):
         counter += 1
         if counter == 1:
             self.failUnless(not row['confirmed'])
             self.failUnless(row['confirmidta'] == 0)
         elif counter == 2:
             self.failUnless(row['confirmed'])
             self.failUnless(row['confirmidta'] != 0)
         else:
             break
     else:
         self.failUnless(counter != 0)
     for row in botslib.query(
             u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''', {
                 'status': 310,
                 'statust': DONE,
                 'idroute': 'test997',
                 'confirmtype': 'send-x12-997',
                 'confirmasked': True
             }):
         counter += 1
         if counter <= 2:
             self.failUnless(row['confirmed'])
             self.failUnless(row['confirmidta'] != 0)
         else:
             break
     else:
         self.failUnless(counter != 0)
Exemple #43
0
def start():

    try:
        botsinit.generalinit('config')
        botsinit.initenginelogging()
    except:
        print 'Error reading bots.ini (before database connection).'
        raise

    try:
        botsinit.connect()
    except:
        print 'Could not connect to database.'
        raise

    #*****************start test***************
    domein = 'test'
    tests = [
        (u'key1', u'leftcode'),
        (u'key2', u'~!@#$%^&*()_+}{:";][=-/.,<>?`'),
        (u'key3', u'?érýúíó?ás??lzcn?'),
        (u'key4', u'?ë?ÿüïöä´¨???è?ùì'),
        (u'key5', u'òà???UIÕÃ?Ñ`~'),
        (u'key6', u"a\xac\u1234\u20ac\U00008000"),
        (u'key7', u"abc_\u03a0\u03a3\u03a9.txt"),
        (u'key8', u"?ÉRÝÚÍÓ?ÁS??LZCN??"),
        (u'key9', u"Ë?¨YܨIÏÏÖÄ???È?ÙÌÒ`À`Z?"),
    ]

    try:  #clean before test
        botslib.change(u'''DELETE FROM ccode ''')
        botslib.change(u'''DELETE FROM ccodetrigger''')
    except:
        print 'Error while deleting', botslib.txtexc()
        raise

    try:
        botslib.change(
            u'''INSERT INTO ccodetrigger (ccodeid)
                                VALUES (%(ccodeid)s)''', {'ccodeid': domein})
        for key, value in tests:
            botslib.change(
                u'''INSERT INTO ccode (ccodeid_id,leftcode,rightcode,attr1,attr2,attr3,attr4,attr5,attr6,attr7,attr8)
                                    VALUES (%(ccodeid)s,%(leftcode)s,%(rightcode)s,'1','1','1','1','1','1','1','1')''',
                {
                    'ccodeid': domein,
                    'leftcode': key,
                    'rightcode': value
                })
    except:
        print 'Error while updating', botslib.txtexc()
        raise

    try:
        for key, value in tests:
            print 'key', key
            for row in botslib.query(
                    u'''SELECT rightcode
                                        FROM    ccode
                                        WHERE   ccodeid_id = %(ccodeid)s
                                        AND     leftcode = %(leftcode)s''', {
                        'ccodeid': domein,
                        'leftcode': key
                    }):
                print '    ', key, type(row['rightcode']), type(value)
                if row['rightcode'] != value:
                    print 'failure in test "%s": result "%s" is not equal to "%s"' % (
                        key, row['rightcode'], value)
                else:
                    print '    OK'
                break
            else:
                print '??can not find testentry %s %s in db' % (key, value)
    except:
        print 'Error while quering db', botslib.txtexc()
        raise

    #*****************end test***************
    botsglobal.db.close()
Exemple #44
0
    def testroutetestmdn(self):
        comclass = communication._comsession(
            channeldict={"idchannel": "dutchic_desadv_out"},
            idroute="dutchic_desadv",
            userscript=None,
            scriptname=None,
            command="new",
            rootidta=0,
        )
        count = 0
        for row in botslib.query(
                """SELECT idta
                                FROM    ta
                                WHERE   status=%(status)s
                                AND     statust=%(statust)s
                                ORDER BY idta DESC
                                """,
            {
                "status": 520,
                "statust": DONE,
                "idroute": "testmdn",
                "confirmtype": "send-email-MDN",
                "confirmasked": True,
            },
        ):
            count += 1
            sub_unique = botslib.unique("dutchic_desadv_out")
            ta = botslib.OldTransaction(row[str("idta")])

            self.assertEqual(
                comclass.filename_formatter("*.edi", ta),
                str(sub_unique + 1) + ".edi",
                "",
            )
            self.assertEqual(
                comclass.filename_formatter("*.edi", ta),
                str(sub_unique + 2) + ".edi",
                "",
            )
            self.assertEqual(
                comclass.filename_formatter("*.edi", ta),
                str(sub_unique + 3) + ".edi",
                "",
            )
            self.assertEqual(
                comclass.filename_formatter(
                    "{messagetype}/{editype}/{topartner}/{frompartner}/{botskey}_*",
                    ta),
                "DESADVD96AUNEAN005/edifact/8712345678920/8712345678910/VERZENDVB8_"
                + str(sub_unique + 4),
                "",
            )
            self.assertEqual(
                comclass.filename_formatter("*_{datetime:%Y-%m-%d}.edi", ta),
                str(sub_unique + 5) + "_" +
                datetime.datetime.now().strftime("%Y-%m-%d") + ".edi",
                "",
            )
            self.assertEqual(
                comclass.filename_formatter("*_*.edi", ta),
                str(sub_unique + 6) + "_" + str(sub_unique + 6) + ".edi",
                "",
            )
            self.assertEqual(comclass.filename_formatter("123.edi", ta),
                             "123.edi", "")
            self.assertEqual(comclass.filename_formatter("{infile}", ta),
                             "desadv1.edi", "")
            self.assertEqual(
                comclass.filename_formatter("{infile:name}.txt", ta),
                "desadv1.txt", "")
            self.assertEqual(
                comclass.filename_formatter("{infile:name}.{infile:ext}", ta),
                "desadv1.edi",
                "",
            )
            print(
                "expect: <idta>.edi                          ",
                comclass.filename_formatter("{idta}.edi", ta),
            )
            self.assertRaises(botslib.CommunicationOutError,
                              comclass.filename_formatter, "{tada}", ta)
            self.assertRaises(
                botslib.CommunicationOutError,
                comclass.filename_formatter,
                "{infile:test}",
                ta,
            )
            if count == 1:  # test only 1 incoming files
                break
Exemple #45
0
 def testroutetest997(self):
     '''
     test997 1: pickup 850; send 850 (ask confirm) and 997
     test997 2: receive 997 and 850; send 997 
     test997 3: send 997 and 850 to trash
     test997 4: receive 997; 997 to trash
     '''
     lijst = utilsunit.getdir(os.path.join(botssys,
                                           'outfile/confirm/x12/*'))
     self.failUnless(len(lijst) == 0)
     lijst = utilsunit.getdir(
         os.path.join(botssys, 'outfile/confirm/trash/*'))
     self.failUnless(len(lijst) == 3)
     counter = 0
     for row in botslib.query(
             u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''', {
                 'status': 400,
                 'statust': DONE,
                 'idroute': 'test997',
                 'confirmtype': 'ask-x12-997',
                 'confirmasked': True
             }):
         counter += 1
         if counter == 1:
             self.failUnless(not row[1])
             self.failUnless(row[2] == 0)
         elif counter == 2:
             self.failUnless(row[1])
             self.failUnless(row[2] != 0)
         else:
             break
     else:
         self.failUnless(counter != 0)
     for row in botslib.query(
             u'''SELECT idta,confirmed,confirmidta
                             FROM    ta
                             WHERE   status=%(status)s
                             AND     statust=%(statust)s
                             AND     idroute=%(idroute)s
                             AND     confirmtype=%(confirmtype)s
                             AND     confirmasked=%(confirmasked)s
                             ORDER BY idta DESC
                             ''', {
                 'status': 310,
                 'statust': DONE,
                 'idroute': 'test997',
                 'confirmtype': 'send-x12-997',
                 'confirmasked': True
             }):
         counter += 1
         if counter <= 2:
             self.failUnless(row[1])
             self.failUnless(row[2] != 0)
         else:
             break
     else:
         self.failUnless(counter != 0)