Пример #1
0
def test_v22(apikey='', dev=None):
    i = Insightly(apikey=apikey, version='2.2', dev=dev, test=True)
    i.tests_run = 0
    i.tests_passed = 0
    
    # test permissions, create object with visible_to=owner, switch API key, view
    
    apikeys = list()
    
    try:
        f = open('api-keys.csv','r')
        text = f.read()
        rows = string.split(text,'\n')
        for r in rows:
            cols = string.split(r,',')
            if len(cols) == 5:
                apikeys.append(cols[4])
    except:
        apikeys = None
    
    if apikeys is not None:
        i.apikey = apikeys[0]
        contact = dummy_contact
        contact[u'VISIBLE_TO'] = u'OWNER'
        contact = i.create('contacts', contact)
        contact_id = contact['CONTACT_ID']
        i.apikey = apikeys[1]
        i.tests_run += 1
        try:
            contact = i.get('contacts', contact_id)
            i.printline('FAIL: /contacts permissions')
        except:
            i.tests_passed += 1
            i.printline('PASS: /contacts permissions')
            
        i.apikey = apikeys[0]
        contacts = i.search('contacts','first_name=' + dummy_contact['FIRST_NAME'])
        i.delete('contacts', contact_id)
        
        event = dummy_event
        event[u'PUBLICLY_VISIBLE'] = False
        event = i.create('events', event)
        event_id = event['EVENT_ID']
        i.apikey = apikeys[1]
        i.tests_run += 1
        try:
            event = i.get('events', event_id)
            i.printline('FAIL: /events permissions')
        except:
            i.tests_passed += 1
            i.printline('PASS: /events permissions')
        
        i.apikey = apikeys[0]
        i.delete('events', event_id)
        
        lead = dummy_lead
        lead[u'VISIBLE_TO'] = u'OWNER'
        lead = i.create('leads', lead)
        lead_id = lead['LEAD_ID']
        leads = i.search('leads','first_name=' + dummy_lead['FIRST_NAME'])
        i.apikey = apikeys[1]
        i.tests_run += 1
        try:
            lead = i.get('leads', lead_id)
            i.printline('FAIL: /leads permissions')
        except:
            i.tests_passed ++ 1
            i.printline('PASS: /leads permissions')
            
        i.apikey = apikeys[0]
        i.delete('leads', lead_id)
        
        opportunity = dummy_opportunity
        opportunity[u'VISIBLE_TO'] = u'OWNER'
        opportunity = i.create('opportunities', opportunity)
        opportunity_id = opportunity['OPPORTUNITY_ID']
        opportunities = i.search('opportunities', 'opportunity_name=' + dummy_opportunity['OPPORTUNITY_NAME'])
        i.apikey = apikeys[1]
        i.tests_run += 1
        try:
            opportunity = i.get('opportunities', opportunity_id)
            i.printline('FAIL: /opportunities permissions')
        except:
            i.tests_passed ++ 1
            i.printline('PASS: /opportunities permissions')
            
        i.apikey = apikeys[0]
        i.delete('opportunities', opportunity_id)
            
        organisation = dummy_organisation
        organisation[u'VISIBLE_TO'] = u'OWNER'
        organisation = i.create('organisations', organisation)
        organisation_id = organisation['ORGANISATION_ID']
        organizations = i.search('organisations', 'organisation_name=' + dummy_organisation['ORGANISATION_NAME'])
        i.apikey = apikeys[1]
        i.tests_run += 1
        try:
            organisation = i.get('organisations', organisation_id)
            i.printline('FAIL: /organisations permissions')
        except:
            i.tests_passed += 1
            i.printline('PASS: /organisations permissions')
            
        i.apikey = apikeys[0]
        i.delete('organisations', organisation_id)
        
        project = dummy_project
        project[u'VISIBLE_TO'] = u'OWNER'
        project = i.create('projects', project)
        project_id = project['PROJECT_ID']
        projects = i.search('projects', 'project_name=' + dummy_project['PROJECT_NAME'])
        i.apikey = apikeys[1]
        i.tests_run += 1
        try:
            project = i.get('projects', project_id)
            i.printline('FAIL: /projects permissions')
        except:
            i.tests_passed += 1
            i.printline('PASS: /projects permissions')
            
        i.apikey = apikeys[0]
        i.delete('projects', project_id)
    
    # test activity sets
    activity_sets = i.read('activitysets')
    if activity_sets is not None:
        activity_set_id = activity_sets[0]['ACTIVITYSET_ID']
        activity_set = i.read('activitysets', id=activity_set_id)
    # test contacts
    contacts = i.read('contacts')
    if contacts is not None:
        if len(contacts) > 0:
            contact_id = contacts[0]['CONTACT_ID']
            contact = i.get('contacts', contact_id)
    contact = {'FIRST_NAME':u'Test',u'LAST_NAME':u'ミスターマコーネル'}
    contact = i.create('contacts', contact)
    if contact is not None:
        contact = i.update('contacts', contact)
        contact_id = contact['CONTACT_ID']
        i.upload_image('contacts', contact_id, 'apollo17.jpg')
        address = i.create_child('contacts', contact_id, 'addresses', {u'ADDRESS_TYPE':u'HOME',u'CITY':u'San Francisco', u'STATE':u'CA', u'COUNTRY':u'United States'})
        if address is not None:
            address_id = address['ADDRESS_ID']
            i.delete('contacts',contact_id,sub_type='addresses',sub_type_id=address_id)
        contactinfo = i.create_child('contacts', contact_id, 'contactinfos', {u'TYPE':u'EMAIL',u'SUBTYPE':u'Home',u'DETAIL':u'*****@*****.**'})
        if contactinfo is not None:
            contact_info_id = contactinfo['CONTACT_INFO_ID']
            i.delete('contacts', contact_id, sub_type='contactinfos', sub_type_id = contact_info_id)
        contact_date = {u'OCCASION_NAME':u'Birthday',u'OCCASION_DATE':'2016-05-02T12:00:00Z'}
        contact_date = i.create_child('contacts', contact_id, 'dates', contact_date)
        if contact_date is not None:
            date_id = contact_date['DATE_ID']
            i.delete('contacts', contact_id, sub_type='dates', sub_type_id=date_id)
        tag = {u'TAG_NAME':'foo'}
        i.create_child('contacts', contact_id, 'tags', tag)
        i.delete('contacts', contact_id,sub_type='tags', sub_type_id = 'foo')
        note = {'TITLE':'Test', 'BODY':'This is the body'}
        note = i.create_child('contacts', contact_id, 'notes', note)
        events = i.read('contacts', contact_id, sub_type='events')
        file_attachments = i.read('contacts', contact_id, sub_type='fileattachments')
        i.upload('contacts', contact_id, 'apollo17.jpg')
        i.create_child('contacts', contact_id, 'follow', {})
        i.delete('contacts', contact_id, sub_type='follow')
        tasks = i.read('contacts', contact_id, sub_type='tasks')
        emails = i.read('contacts', contact_id, sub_type='emails')
        organizations = i.read('organisations',top=5)
        if organizations is not None:
            if len(organizations) > 0:
                organization = organizations[0]
                organization_id = organization['ORGANISATION_ID']
                link = i.create_child('contacts',contact_id,'links',{'ORGANISATION_ID':organization_id})
                if link is not None:
                    i.delete('contacts',contact_id,sub_type='links',sub_type_id=link['LINK_ID'])
        # TODO: figure out contactlinks endpoint, not well documented
        i.delete('contacts', contact_id)
    countries = i.read('countries')
    currencies = i.read('currencies')
    custom_field_groups = i.read('customfieldgroups')
    custom_fields = i.read('customfields')
    if custom_fields is not None:
        custom_field_id = custom_fields[0]['CUSTOM_FIELD_ID']
        custom_field = i.read('customfields', custom_field_id)
    emails = i.read('emails')
    if emails is not None:
        email_id = emails[0]['EMAIL_ID']
        email = i.read('emails', email_id)
        i.create_child('emails', email_id, 'tags', {u'TAG_NAME':'foo'})
        i.delete('emails', email_id, sub_type='tags', sub_type_id = 'foo')
        comments = i.read('emails', email_id, sub_type='/comments')
    events = i.read('events')
    file_categories = i.read('filecategories')
    if file_categories is not None:
        file_category_id = file_categories[0]['CATEGORY_ID']
        file_category = i.read('filecategories', file_category_id)
    follows = i.read('follows')    
    instance = i.read('instance')
    leads = i.read('leads')
    if leads is not None:
        lead_id = leads[0]['LEAD_ID']
        lead = i.read('leads', lead_id)
    lead = i.create('leads', {u'FIRST_NAME':u'foo', u'LAST_NAME':u'bar'})
    if lead is not None:
        lead_id = lead['LEAD_ID']
        lead['FIRST_NAME']='foozle'
        lead = i.update('leads', lead)
        i.upload_image('leads', lead_id, 'apollo17.jpg')
        i.delete('leads', lead_id, sub_type='image')
        i.create_child('leads', lead_id, 'tags', {'TAG_NAME':'foo'})
        i.delete('leads', lead_id, sub_type='tags', sub_type_id='foo')
        i.create_child('leads', lead_id, 'follow', {})
        i.delete('leads', lead_id, sub_type='follow')
        notes = i.read('leads', lead_id, sub_type='notes')
        i.create_child('leads', lead_id, 'notes', {u'TITLE':u'foo',u'BODY':u'This is the body'})
        events = i.read('leads', lead_id, sub_type='events')
        file_attachments = i.read('leads', lead_id, sub_type='fileattachments')
        i.upload('leads', lead_id, 'apollo17.jpg')
        tasks = i.read('leads', lead_id, sub_type='tasks')
        emails = i.read('leads', lead_id, sub_type='emails')
        i.delete('leads', lead_id)
    leadsources = i.read('leadsources')
    lead_source = i.create('leadsources', {u'LEAD_SOURCE':u'Foozle Barzle'})
    if lead_source is not None:
        lead_source['LEAD_SOURCE'] = 'Barzle Foozle'
        lead_source_id = lead_source['LEAD_SOURCE_ID']
        lead_source = i.update('leadsources', lead_source)
        i.delete('leadsources', lead_source_id)
    lead_statuses = i.read('leadstatuses')
    lead_status = i.create('leadstatuses', {u'LEAD_STATUS':u'Foozle'})
    if lead_status is not None:
        lead_status_id = lead_status['LEAD_STATUS_ID']
        lead_status['LEAD_STATUS']='Barzle'
        lead_status['STATUS_TYPE']=1
        lead_status = i.update('leadstatuses', lead_status)
        i.delete('leadstatuses', lead_status_id)
    notes = i.read('notes')
    if notes is not None:
        note_id = notes[0]['NOTE_ID']
        note = i.read('notes', note_id)
        file_attachments = i.read('notes', note_id, sub_type='fileattachments')
        i.create_child('notes', note_id, 'follow', {})
        i.delete('notes', note_id, sub_type='follow')
        comments = i.read('notes', note_id, sub_type='comments')
    opportunities = i.read('opportunities')
    if opportunities is not None:
        opportunity_id = opportunities[0]['OPPORTUNITY_ID']
        opportunity = i.read('opportunities', opportunity_id)
        opportunity = i.create('opportunities', {u'OPPORTUNITY_NAME':u'Foozle',u'OPPORTUNITY_STATE':u'OPEN'})
        if opportunity is not None:
            opportunity['OPPORTUNITY_NAME'] = 'Barzle'
            opportunity_id = opportunity['OPPORTUNITY_ID']
            opportunity = i.update('opportunities', opportunity)
            i.upload_image('opportunities', opportunity_id, 'apollo17.jpg')
            i.delete('opportunities', opportunity_id, 'image')
            i.create_child('opportunities', opportunity_id, 'tags', {u'TAG_NAME':u'foo'})
            i.delete('opportunities', opportunity_id, sub_type='tags', sub_type_id='foo')
            notes = i.read('opportunities', opportunity_id, sub_type='notes')
            i.create_child('opportunities', opportunity_id, 'notes', {u'TITLE':'foo',u'BODY':'This is a test'})
            events = i.read('opportunities', opportunity_id, sub_type='events')
            file_attachments = i.read('opportunities', opportunity_id, sub_type='fileattachments')
            i.upload('opportunities', opportunity_id, 'apollo17.jpg')
            i.create_child('opportunities', opportunity_id, 'follow', {})
            i.delete('opportunities', opportunity_id, sub_type='follow')
            # add call to update opportunity state/state reason here
            opportunity_state_reasons = i.read('opportunities', opportunity_id, sub_type='statehistory')
            tasks = i.read('opportunities', opportunity_id, sub_type='tasks')
            emails = i.read('opportunities', opportunity_id, sub_type='emails')
            email = i.read('opportunities', opportunity_id, sub_type='linkemailaddress')
            i.delete('opportunities', opportunity_id, sub_type='pipeline')
            i.delete('opportunities', opportunity_id)
    opportunity_categories = i.read('opportunitycategories')
    opportunity_state_reasons = i.read('opportunitystatereasons')
    
    organisations = i.read('organisations')
    if organisations is not None:
        organisation_id = organisations[0]['ORGANISATION_ID']
        organisation = i.read('organisations', organisation_id)
        organisation = i.create('organisations', dummy_organisation)
        if organisation is not None:
            organisation_id = organisation['ORGANISATION_ID']
            organisation['ORGANISATION_NAME']='Bar Corporation'
            organisation = i.update('organisations', organisation)
            address = i.create_child('organisations', organisation_id, 'addresses', {u'CITY':u'San Francisco', u'STATE':u'CA', u'COUNTRY':u'United States', 'ADDRESS_TYPE':'Work'})
            if address is not None:
                address_id = address['ADDRESS_ID']
                i.delete('organisations', organisation_id, sub_type='addresses', sub_type_id=address_id)
            contactinfo = i.create_child('organisations', organisation_id, 'contactinfos', {u'TYPE':u'EMAIL',u'SUBTYPE':u'Home',u'DETAIL':u'*****@*****.**'})
            if contactinfo is not None:
                contact_info_id = contactinfo['CONTACT_INFO_ID']
                i.delete('organisations', organisation_id, sub_type='contactinfos', sub_type_id=contact_info_id)
            odate = i.create_child('organisations', organisation_id, 'dates', {u'OCCASION_NAME':u'Birthday','OCCASION_DATE':'2016-05-02T12:00:00Z'})
            if odate is not None:
                date_id = odate['DATE_ID']
                i.delete('organisations', organisation_id, sub_type='dates', sub_type_id=date_id)
            i.create_child('organisations', organisation_id, 'tags', {u'TAG_NAME':u'foo'})
            i.delete('organisations',organisation_id, sub_type='tags', sub_type_id='foo')
            i.upload_image('organisations', organisation_id, 'apollo17.jpg')
            i.delete('organisations', organisation_id, sub_type='image')
            notes = i.read('organisations', organisation_id, sub_type='notes')
            i.create_child('organisations', organisation_id, 'notes', {u'TITLE':'Title',u'BODY':'This is the body'})
            events = i.read('organisations', organisation_id, sub_type='events')
            file_attachments = i.read('organisations', organisation_id, sub_type='fileattachments')
            i.upload('organisations', organisation_id, 'apollo17.jpg')
            i.create_child('organisations', organisation_id, 'follow', {})
            i.delete('organisations', organisation_id, sub_type='follow')
            emails = i.read('organisations', organisation_id, sub_type='emails')
            tasks = i.read('organisations', organisation_id, sub_type='tasks')
            i.delete('organisations', organisation_id)
    
    pipelines = i.read('pipelines')
    if pipelines is not None:
        pipeline_id = pipelines[0]['PIPELINE_ID']
        pipeline = i.read('pipelines', pipeline_id)
        
    pipeline_stages = i.read('pipelinestages')
    if pipeline_stages is not None:
        stage_id = pipeline_stages[0]['STAGE_ID']
        pipeline_stage = i.read('pipelinestages', stage_id)
    else:
        stage_id = None
        pipeline_id = None
    
    projects = i.read('projects')
    if projects is not None:
        project_id = projects[0]['PROJECT_ID']
        project = i.read('projects', project_id)
        project = i.create('projects', {u'PROJECT_NAME':u'Foo Corporation',u'STATUS':u'Not Started'})
        if project is not None:
            project_id = project['PROJECT_ID']
            project['PROJECT_NAME']='Barzle Corporation'
            if stage_id is not None:
                project['PIPELINE_ID'] = pipeline_id
                project['STAGE_ID'] = stage_id
            project = i.update('projects', project)
            i.upload_image('projects', project_id, 'apollo17.jpg')
            i.delete('projects', project_id, sub_type='image')
            i.create_child('projects', project_id, 'tags', {'TAG_NAME':'foo'})
            i.delete('projects', project_id, sub_type='tags', sub_type_id='foo')
            notes = i.read('projects', project_id, sub_type='notes')
            i.create_child('projects', project_id, 'notes', {'TITLE':'Foo','BODY':'This is the body'})
            events = i.read('projects', project_id, sub_type='events')
            file_attachments = i.read('projects', project_id, sub_type='fileattachments')
            i.create_child('projects', project_id, 'follow', {})
            i.delete('projects', project_id, sub_type='follow')
            milestones = i.read('projects', project_id, sub_type='milestones')
            tasks = i.read('projects', project_id, sub_type='tasks')
            emails = i.read('projects', project_id, sub_type='emails')
            email = i.read('projects', project_id, sub_type='linkemailaddress')
            i.delete('projects', project_id, sub_type='pipeline')
            i.delete('projects', project_id)
    relationships = i.read('relationships')
    tags = i.read('tags?record_type=contacts')
    task_categories = i.read('taskcategories')
    tasks = i.read('tasks')
    if tasks is not None:
        task_id = tasks[0]['TASK_ID']
        task = i.read('tasks', task_id)
    users = i.read('users')
    if users is not None:
        user_id = users[0]['USER_ID']
        user = i.read('users', user_id)
    else:
        user_id = None
    me = i.read('users/me')
    if user_id is not None:
        task = i.create('tasks', {u'TITLE':u'こんにちは世界',u'STATUS':u'NOT STARTED',u'COMPLETED':False,u'PUBLICLY_VISIBLE':True,u'RESPONSIBLE_USER_ID':user_id})
        if task is not None:
            tasks = i.search('tasks','title=' + task['TITLE'])
            task['TITLE'] = task['TITLE'] + 'foo'
            task_id = task['TASK_ID']
            task = i.update('tasks', task)
            i.create_child('tasks', task_id, 'follow', {})
            i.delete('tasks', task_id, sub_type='follow')
            comments = i.read('tasks', task_id, sub_type='comments')
            i.delete('tasks', task_id)
    team_members = i.read('teammembers')
    if team_members is not None:
        team_member_id = team_members[0]['PERMISSION_ID']
        team_member = i.read('teammembers', team_member_id)
    
    teams = i.read('teams')
    if teams is not None:
        team_id = teams[0]['TEAM_ID']
        team = i.read('teams', team_id)
        team = i.create('teams',{u'TEAM_NAME':u'Team Foo',u'ANONYMOUS_TEAM':False})
        if team is not None:
            team_id = team['TEAM_ID']
            team['TEAM_NAME'] = 'Team Bar'
            team = i.update('teams', team)
            i.delete('teams', team_id)
            
    #
    # Next, create a few objects, add links between them, and then delete them
    #
    
    contact_id = None
    organisation_id = None
    project_id = None
    opportunity_id = None
    
    contact = i.create('contacts',{u'FIRST_NAME':u'Foo',u'LAST_NAME':u'Bar'})
    if contact is not None:
        contact_id = contact['CONTACT_ID']
    organisation = i.create('organisations',{u'ORGANISATION_NAME':u'Foo Corporation'})
    if organisation is not None:
        organisation_id = organisation['ORGANISATION_ID']
    project = i.create('projects',{u'PROJECT_NAME':u'Foo Corporation',u'STATUS':u'NOT STARTED'})
    if project is not None:
        project_id = project[u'PROJECT_ID']
    opportunity = i.create('opportunities',{u'OPPORTUNITY_NAME':u'Foo Corporation',u'OPPORTUNITY_STATE':u'OPEN'})
    if opportunity is not None:
        opportunity_id = opportunity['OPPORTUNITY_ID']
    
    contact = i.create_child('contacts', contact_id, 'links', {u'ORGANISATION_ID':organisation_id})
    organisation = i.create_child('organisations', organisation_id, 'links', {u'PROJECT_ID':project_id})
    project = i.create_child('projects', project_id, 'links', {u'ORGANISATION_ID':organisation_id})
    opportunity = i.create_child('opportunities', opportunity_id, 'links', {u'CONTACT_ID':contact_id})
    
    if contact_id is not None:
        i.delete('contacts', contact_id)
    if organisation_id is not None:
        i.delete('organisations', organisation_id)
    if project_id is not None:
        i.delete('projects', project_id)
    if opportunity_id is not None:
        i.delete('opportunities', opportunity_id)
            
    failures = list()
    
    print(str(i.tests_passed) + ' out of ' + str(i.tests_run) + ' passed')
    if len(i.test_failures) > 0:
        print ('')
        print ('Test Failures')
        for f in i.test_failures:
            print (f)
            failures.append(f)
            
    print(str(len(i.slow_endpoints)) + ' slow endpoints') 
    for s in i.slow_endpoints:
        print(s)
        
    return i.test_failures
Пример #2
0
def test_mobile(apikey='', dev='https://mobileapi.insightly.com'):
    i = Insightly(apikey=apikey, version='mobile', dev=dev, test=True)
    i.tests_run = 0
    i.tests_passed = 0
    
    # Check incremental update endpoints
    stats = i.read('IncrementalUpdateStats?updated_after_utc=2015-11-01')
    # TODO: Ask Evgeny about behavior for CheckRecords
    
    # Get a user id for use with endpoints that need a user assigned
    users = i.read('users', top=1)
    user_id = users[0]['USER_ID']
    responsible_user_id = user_id
    
    # Check commments endpoints
    comments = i.read('Comments?updated_after_utc=2015-11-01&top=10')
    i.record_count('comments')
    if len(comments) > 0:
        comment = comments[0]
        comment_id = comment['COMMENT_ID']
        comment = i.read('Comments', comment_id)
        if type(comment) is list:
            comment = comment[0]
        details = i.read('Comments', comment_id, 'full')
        comment = i.update('comments', comment)
        i.upload('comments', comment_id, 'apollo17.jpg')
        i.delete('comments', comment_id)
    
    # Check contacts endpoints
    
    contacts = i.read('Contacts?updated_after_utc=2015-10-01&top=10')
    i.record_count('contacts')
    if len(contacts) > 0:
        contact = contacts[0]
        contact = i.update('contacts', contact)
        contact_id = contact['CONTACT_ID']
        contact = i.read('Contacts', contact_id)
        if type(contact) is list:
            contact = contact[0]
        i.create_child('contacts', contact_id, 'follow', {})
        i.delete('contacts', contact_id, 'follow')
        i.create_child('contacts', contact_id, 'notes', dummy_note)
        i.upload('contacts', contact_id, 'apollo17.jpg')
        i.upload_image('contacts', contact_id, 'apollo17.jpg')
        i.delete('contacts', contact_id, 'image')
        details = i.read('Contacts', contact_id, 'full')
        contact = i.update('Contacts', contact)
        contact = dummy_contact
        contact = i.create('Contacts', contact)
        contact_id = contact['CONTACT_ID']
        organizations = i.read('organisations',top=5)
        if organizations is not None:
            if len(organizations) > 0:
                organization = organizations[0]
                organization_id = organization['ORGANISATION_ID']
                link = i.create_child('contacts',contact_id,'links',{'ORGANISATION_ID':organization_id})
                if link is not None:
                    i.delete('contacts',contact_id,sub_type='links',sub_type_id=link['LINK_ID'])
        try:
            second_contact_id = contacts[1]['CONTACT_ID']
            contact_link = i.create_child('contacts', contact_id, 'contactlinks',
                                  {'FIRST_CONTACT_ID':contact_id, 'SECOND_CONTACT_ID': second_contact_id,
                                   'RELATIONSHIP_ID':1})
            if link is not None:
                i.delete('contacts', contact_id, 'contactlinks', contact_link['CONTACT_LINK_ID'])
        except:
            pass
        # add test for contactlinks child endpoint, not clear for docs how to implement this one
        i.delete('Contacts', contact_id)

    # Check /emails endpoints
    
    emails = i.read('emails')
    i.record_count('emails')
    if len(emails) > 0:
        email = emails[0]
        email_id = email['EMAIL_ID']
        email = i.get('emails', email_id)
        details = i.read('emails', email_id, 'full')
        i.create_child('emails', email_id, 'follow', {})
        i.delete('emails', email_id, sub_type='follow')
        i.create_child('emails', email_id, 'comments', dummy_comment)
        
        contacts = i.read('contacts', top=1)
        contact_id = contacts[0]['CONTACT_ID']
        email_link = i.create_child('emails', email_id, 'emaillinks', {u'CONTACT_ID':contact_id})
        if email_link is not None:
            email_link_id = email_link['EMAIL_LINK_ID']
            i.delete('emails', email_id, 'emaillinks', email_link_id)
        
    # Check /events endpoints
    i.record_count('events')
    events = i.read('events')
    if len(events) > 0:
        event_id = events[0]['EVENT_ID']
        event = i.get('events', event_id)
        details = i.read('events', event_id, 'full')
        event = i.update('events', event)
        event = i.create('events',dummy_event)
        if event is not None:
            event_id = event['EVENT_ID']
            contacts = i.read('contacts', top=1)
            contact_id = contacts[0]['CONTACT_ID']
            event_link = i.create_child('events', event_id, 'eventlinks',{'CONTACT_ID':contact_id})
            if event_link is not None:
                i.delete('events', event_id, sub_type='eventlinks', sub_type_id=event_link['EVENT_LINK_ID'])
            i.delete('events',event['EVENT_ID'])
            
    # Check /fileattachments endpoints   
    file_attachments = i.read('fileattachments')
    if len(file_attachments) > 0:
        file_id = file_attachments[0]['FILE_ID']
        file_attachment = i.read('fileattachments', file_id)
        i.delete('fileattachments', file_id)
        
    # Check /leads endpoints
    i.record_count('leads')
    leads = i.read('leads')
    if len(leads) > 0:
        lead_id = leads[0]['LEAD_ID']
        lead = i.get('leads', lead_id)
        lead = i.update('leads', lead)
        i.create_child('leads', lead_id, 'follow', {})
        i.delete('leads', lead_id, sub_type='follow')
    lead = i.create('leads',dummy_lead)
    if lead is not None:
        i.upload('leads', lead_id, 'apollo17.jpg')
        i.upload_image('leads', lead_id, 'apollo17.jpg')
        i.create_child('leads', lead_id, 'notes', dummy_note)
        i.delete('leads', lead_id)    

    # Check /notes endpoints
    i.record_count('notes')
    notes = i.read('notes')
    if len(notes) > 0:
        note_id = notes[0]['NOTE_ID']
        details = i.get('notes', note_id, 'full')
        note = i.get('notes', note_id)
        note = i.update('notes', note)
        i.create_child('notes', note_id, 'follow', {})
        i.delete('notes', note_id, sub_type='follow')
        i.create_child('notes', note_id, 'comments', dummy_comment)
        i.upload('notes', note_id, 'apollo17.jpg')
        contacts = i.read('contacts')
        if len(contacts) > 0:
            contact_id = contacts[0]['CONTACT_ID']
            link = i.create_child('notes', note_id, 'notelinks', {'CONTACT_ID':contact_id})
            if link is not None:
                i.delete('notes', note_id, sub_type='notelinks', sub_type_id=link['NOTE_LINK_ID'])
                
    opportunities = i.read('opportunities')
    i.record_count('opportunities')
    if len(opportunities) > 0:
        opportunity_id = opportunities[0]['OPPORTUNITY_ID']
        opportunity = i.get('opportunities', opportunity_id)
        details = i.get('opportunities', opportunity_id, 'full')
    opportunity = dummy_opportunity
    opportunity['RESPONSIBLE_USER_ID'] = responsible_user_id
    opportunity = i.create('opportunities', opportunity)
    if opportunity is not None:
        opportunity = i.update('opportunities', opportunity)
        opportunity_id = opportunity['OPPORTUNITY_ID']
        i.update('opportunities/' + str(opportunity_id) + '/state', {'FOR_OPPORTUNITY_STATE':'Abandoned'})
        statehistory = i.read('opportunities', opportunity_id, 'statehistory')
        i.create_child('opportunities', opportunity_id, 'follow', {})
        i.delete('opportunities', opportunity_id, sub_type='follow')
        i.create_child('opportunities', opportunity_id, 'notes', dummy_note)
        i.upload('opportunities', opportunity_id, 'apollo17.jpg')
        contacts = i.read('contacts')
        if len(contacts) > 0:
            contact_id = contacts[0]['CONTACT_ID']
            link = i.create_child('opportunities', opportunity_id, 'links', {'CONTACT_ID':contact_id})
            if link is not None:
                i.delete('opportunities', opportunity_id, sub_type='links', sub_type_id=link['LINK_ID'])
        i.delete('opportunities', opportunity_id)
        
    # Check /Organisations endpoints    
    
    organisations = i.read('organisations')
    i.record_count('organisations')
    if len(organisations) > 0:
        organisation_id = organisations[0]['ORGANISATION_ID']
        link_organisation_id = organisation_id
        organisation = i.get('organisations', organisation_id)
        details = i.get('organisations', organisation_id, 'full')
    organisation = i.create('organisations', dummy_organisation)
    if organisation is not None:
        organisation = i.update('organisations', organisation)
        organisation_id = organisation['ORGANISATION_ID']
        i.create_child('organisations', organisation_id, 'follow', {})
        i.delete('organisations', organisation_id, sub_type='follow')
        i.upload_image('organisations', organisation_id, 'apollo17.jpg')
        i.upload('organisations', organisation_id, 'apollo17.jpg')
        i.create_child('organisations', organisation_id, 'notes', dummy_note)
        link = i.create_child('organisations', organisation_id, 'links', {'CONTACT_ID': contact_id})
        if link is not None:
            i.delete('organisations', organisation_id, sub_type='links', sub_type_id=link['LINK_ID'])
        link = i.create_child('organisations', organisation_id, 'organisationlinks',
                              {'FIRST_ORGANISATION_ID':organisation_id, 'SECOND_ORGANISATION_ID':link_organisation_id,
                               'RELATIONSHIP_ID':1})
        if link is not None:
            i.delete('organisations', organisation_id, sub_type='organisationlinks', sub_type_id=link['ORG_LINK_ID'])
        i.delete('organisations', organisation_id)
    
    projects = i.read('projects')
    i.record_count('projects')
    if projects is not None:
        project = projects[0]
        project_id = project['PROJECT_ID']
        project = i.get('projects', project_id)
        details = i.read('projects', project_id, 'full')
    pipeline_stages = i.read('pipelinestages')
    if pipeline_stages is not None:
        pipeline_id = pipeline_stages[0]['PIPELINE_ID']
        stage_id = pipeline_stages[0]['STAGE_ID']
    else:
        pipeline_id = None
        stage_id = None
    project = dummy_project
    project['RESPONSIBLE_USER_ID'] = responsible_user_id
    project = i.create('projects', project)
    if project is not None:
        if pipeline_id is not None:
            project['PIPELINE_ID'] = pipeline_id
            project['STAGE_ID'] = stage_id
        project = i.update('projects', project)
        project_id = project['PROJECT_ID']
        i.create_child('projects', project_id, 'follow', {})
        i.delete('projects', project_id, sub_type='follow')
        i.create_child('projects', project_id, 'notes', dummy_note)
        file_attachments = i.read('projects', project_id, 'fileattachments')
        i.upload('projects', project_id, 'apollo17.jpg')
        contacts = i.read('contacts', top=1)
        contact_id = contacts[0]['CONTACT_ID']
        link = i.create_child('projects', project_id, 'links', {'CONTACT_ID':contact_id})
        if link is not None:
            i.delete('projects', project_id, sub_type='links', sub_type_id=link['LINK_ID'])
        i.delete('projects', project_id)
        
    # Check /tags/{object} endpoints
    
    tagged_objects = ['contacts', 'leads', 'opportunities', 'organisations', 'projects']
    
    for t in tagged_objects:
        i.read('tags/' + t)
        
    # Check tasks endpoints
    
    tasks = i.read('tasks/myopen')
    tasks = i.read('tasks')
    i.record_count('tasks')
    if len(tasks) > 0:
        task = tasks[0]
        task_id = task['TASK_ID']
        tasks = i.read('tasks/' + str(task_id) + '/full')
        task = i.get('tasks', task_id)
        task = i.update('tasks', task)
        task = i.create('tasks', {u'TITLE':'Test',u'STATUS':u'NOT STARTED',u'COMPLETED':False,u'PUBLICLY_VISIBLE':True,u'RESPONSIBLE_USER_ID':user_id})
        if task is not None:
            task = i.update('tasks', task)
            task_id = task['TASK_ID']
            i.create_child('tasks', task_id, 'follow', {})
            i.delete('tasks', task_id, sub_type='follow')
            comment = i.create_child('tasks', task_id, 'comments', {'TITLE':'Foo','BODY':'Bar'})
            contacts = i.read('contacts', top=1)
            contact_id = contacts[0]['CONTACT_ID']
            link = i.create_child('tasks', task_id, 'tasklinks', {'CONTACT_ID':contact_id})
            if link is not None:
                link_id = link['TASK_LINK_ID']
                i.delete('tasks', task_id, sub_type='tasklinks', sub_type_id=link_id)
            i.delete('tasks', task_id)
        
    # Check system tables endpoints
    
    countries = i.read('countries')
    currencies = i.read('currencies')
    custom_fields = i.read('customfields')
    custom_field_groups = i.read('customfieldgroups')
    file_categories = i.read('filecategories')
    lead_sources = i.read('leadsources')
    lead_statuses = i.read('leadstatuses')
    opportunity_categories = i.read('opportunitycategories')
    opportunity_state_reasons = i.read('opportunitystatereasons')
    pipelines = i.read('pipelines')
    pipeline_stages = i.read('pipelinestages')
    project_categories = i.read('projectcategories')
    relationships = i.read('relationships')
    task_categories = i.read('taskcategories')
    teams = i.read('teams')
    team_id = teams[0]['TEAM_ID']
    team = i.read('teams', team_id)
    team_members = i.read('teammembers/my')
    users = i.read('users')
    user_id = users[0]['USER_ID']
    user = i.read('users', user_id)
    
    # Check misc/other endpoints
    
    accounts = i.read('accounts')
    task_links = i.read('tasklinks')
    note_links = i.read('notelinks')
    event_links = i.read('eventlinks')
    links = i.read('links')
    contact_links = i.read('contactlinks')
    organization_links = i.read('organisationlinks')
        
    print str(i.tests_passed) + ' of ' + str(i.tests_run) + ' passed for mobile API'
    print ''
    print 'Slow Endpoints ' + str(len(i.slow_endpoints))
    for s in i.slow_endpoints:
        print s
    print ''
    if len(i.test_failures) > 0:
        print 'Test Failures'
        print ''
        for f in i.test_failures:
            print f
            
    return i.test_failures
Пример #3
0
def test_v21(apikey='', dev=None):
    i = Insightly(apikey=apikey, version='2.1', dev=dev, test=True)
    i.tests_run = 0
    i.tests_passed = 0
    
    # Get a user id for use with endpoints that need a user assigned
    users = i.read('users', top=1)
    user_id = users[0]['USER_ID']    

    # test contacts
    contacts = i.read('contacts')
    if contacts is not None:
        contact_id = contacts[0]['CONTACT_ID']
        contact = i.get('contacts', contact_id)
    contact = i.create('contacts', dummy_contact)
    if contact is not None:
        contact = i.update('contacts', contact)
        contact_id = contact['CONTACT_ID']
        i.upload_image('contacts', contact_id, 'apollo17.jpg')
        tasks = i.read('contacts', contact_id, sub_type='tasks')
        emails = i.read('contacts', contact_id, sub_type='emails')
        organizations = i.read('organisations',top=5)
        if organizations is not None:
            if len(organizations) > 0:
                organization = organizations[0]
                organization_id = organization['ORGANISATION_ID']
                contact['LINKS'] = [{'ORGANISATION_ID':organization_id}]
                contact = i.update('contacts', contact)
        i.delete('contacts', contact_id)
    countries = i.read('countries')
    currencies = i.read('currencies')
    custom_fields = i.read('customfields')
    if custom_fields is not None:
        custom_field_id = custom_fields[0]['CUSTOM_FIELD_ID']
        custom_field = i.read('customfields', custom_field_id)
    emails = i.read('emails')
    if emails is not None:
        email_id = emails[0]['EMAIL_ID']
        email = i.read('emails', email_id)
        comments = i.read('emails', email_id, sub_type='/comments')
    events = i.read('events')
    file_categories = i.read('filecategories')
    if file_categories is not None:
        file_category_id = file_categories[0]['CATEGORY_ID']
        file_category = i.read('filecategories', file_category_id)
    leads = i.read('leads')
    if leads is not None:
        lead_id = leads[0]['LEAD_ID']
        lead = i.read('leads', lead_id)
    lead = i.create('leads', dummy_lead)
    if lead is not None:
        lead_id = lead['LEAD_ID']
        lead['FIRST_NAME']='foozle'
        lead = i.update('leads', lead)
        i.upload_image('leads', lead_id, 'apollo17.jpg')
        i.delete('leads', lead_id, sub_type='image')
        notes = i.read('leads', lead_id, sub_type='notes')
        tasks = i.read('leads', lead_id, sub_type='tasks')
        emails = i.read('leads', lead_id, sub_type='emails')
        i.delete('leads', lead_id)
    lead = i.create('leads', dummy_lead)
    if lead is not None:
        lead_id = lead['LEAD_ID']
        response = i.create_child('leads', lead_id, 'convert', {'OPPORTUNITY_NAME':'Convert Me'})
    leadsources = i.read('leadsources')
    lead_source = i.create('leadsources', {u'LEAD_SOURCE':u'Foozle Barzle'})
    if lead_source is not None:
        lead_source['LEAD_SOURCE'] = 'Barzle Foozle'
        lead_source_id = lead_source['LEAD_SOURCE_ID']
        lead_source = i.update('leadsources', lead_source)
        i.delete('leadsources', lead_source_id)
    lead_statuses = i.read('leadstatuses')
    lead_status = i.create('leadstatuses', {u'LEAD_STATUS':u'Foozle'})
    if lead_status is not None:
        lead_status_id = lead_status['LEAD_STATUS_ID']
        lead_status['LEAD_STATUS']='Barzle'
        lead_status['STATUS_TYPE']=1
        lead_status = i.update('leadstatuses', lead_status)
        i.delete('leadstatuses', lead_status_id)
    notes = i.read('notes')
    if notes is not None:
        note_id = notes[0]['NOTE_ID']
        note = i.read('notes', note_id)
        comments = i.read('notes', note_id, sub_type='comments')
    opportunities = i.read('opportunities')
    if opportunities is not None:
        opportunity_id = opportunities[0]['OPPORTUNITY_ID']
        opportunity = i.read('opportunities', opportunity_id)
        opportunity = i.create('opportunities', dummy_opportunity)
        if opportunity is not None:
            opportunity['OPPORTUNITY_NAME'] = 'Barzle'
            opportunity_id = opportunity['OPPORTUNITY_ID']
            opportunity = i.update('opportunities', opportunity)
            i.upload_image('opportunities', opportunity_id, 'apollo17.jpg')
            i.delete('opportunities', opportunity_id, 'image')
            notes = i.read('opportunities', opportunity_id, sub_type='notes')
            opportunity_state_reasons = i.read('opportunities', opportunity_id, sub_type='statehistory')
            tasks = i.read('opportunities', opportunity_id, sub_type='tasks')
            emails = i.read('opportunities', opportunity_id, sub_type='emails')
            i.delete('opportunities', opportunity_id)
    opportunity_categories = i.read('opportunitycategories')
    opportunity_state_reasons = i.read('opportunitystatereasons')
    
    organisations = i.read('organisations')
    if organisations is not None:
        organisation_id = organisations[0]['ORGANISATION_ID']
        organisation = i.read('organisations', organisation_id)
        organisation = i.create('organisations', dummy_organisation)
        if organisation is not None:
            organisation_id = organisation['ORGANISATION_ID']
            organisation['ORGANISATION_NAME']='Bar Corporation'
            organisation = i.update('organisations', organisation)
            i.upload_image('organisations', organisation_id, 'apollo17.jpg')
            i.delete('organisations', organisation_id, sub_type='image')
            notes = i.read('organisations', organisation_id, sub_type='notes')
            emails = i.read('organisations', organisation_id, sub_type='emails')
            tasks = i.read('organisations', organisation_id, sub_type='tasks')
            i.delete('organisations', organisation_id)
    
    pipelines = i.read('pipelines')
    if pipelines is not None:
        pipeline_id = pipelines[0]['PIPELINE_ID']
        pipeline = i.read('pipelines', pipeline_id)
        
    pipeline_stages = i.read('pipelinestages')
    if pipeline_stages is not None:
        stage_id = pipeline_stages[0]['STAGE_ID']
        pipeline_stage = i.read('pipelinestages', stage_id)
    else:
        stage_id = None
        pipeline_id = None
    
    projects = i.read('projects')
    if projects is not None:
        project_id = projects[0]['PROJECT_ID']
        project = i.read('projects', project_id)
        project = i.create('projects', dummy_project)
        if project is not None:
            project_id = project['PROJECT_ID']
            project['PROJECT_NAME']='Barzle Corporation'
            if stage_id is not None:
                project['PIPELINE_ID'] = pipeline_id
                project['STAGE_ID'] = stage_id
            project = i.update('projects', project)
            i.upload_image('projects', project_id, 'apollo17.jpg')
            i.delete('projects', project_id, sub_type='image')
            notes = i.read('projects', project_id, sub_type='notes')
            tasks = i.read('projects', project_id, sub_type='tasks')
            emails = i.read('projects', project_id, sub_type='emails')
            i.delete('projects', project_id)
    relationships = i.read('relationships')
    task_categories = i.read('taskcategories')
    tasks = i.read('tasks')
    if tasks is not None:
        task_id = tasks[0]['TASK_ID']
        task = i.read('tasks', task_id)
    users = i.read('users')
    if users is not None:
        user_id = users[0]['USER_ID']
        user = i.read('users', user_id)
    else:
        user_id = None
    #me = i.read('users/me')
    if user_id is not None:
        task = i.create('tasks', {u'TITLE':'Test',u'STATUS':u'NOT STARTED',u'COMPLETED':False,u'PUBLICLY_VISIBLE':True,u'RESPONSIBLE_USER_ID':user_id, u'OWNER_USER_ID':user_id})
        if task is not None:
            task_id = task['TASK_ID']
            task = i.update('tasks', task)
            comments = i.read('tasks', task_id, sub_type='comments')
            i.delete('tasks', task_id)
    team_members = i.read('teammembers')
    if team_members is not None:
        team_member_id = team_members[0]['PERMISSION_ID']
        team_member = i.read('teammembers', team_member_id)
    
    teams = i.read('teams')
    if teams is not None:
        team_id = teams[0]['TEAM_ID']
        team = i.read('teams', team_id)
        team = i.create('teams',{u'TEAM_NAME':u'Team Foo',u'ANONYMOUS_TEAM':False})
        if team is not None:
            team_id = team['TEAM_ID']
            team['TEAM_NAME'] = 'Team Bar'
            team = i.update('teams', team)
            i.delete('teams', team_id)
        
    failures = list()
    
    print(str(i.tests_passed) + ' out of ' + str(i.tests_run) + ' passed')
    if len(i.test_failures) > 0:
        print ('')
        print ('Test Failures')
        for f in i.test_failures:
            print (f)
            failures.append(f)
            
    return i.test_failures