Show
Ignore:
Timestamp:
11/04/09 23:28:10 (3 years ago)
Author:
Menno Smits <menno@…>
Branch:
default
convert_revision:
menno@pali-20090411222810-0r33czn9bjwh5fsy
Message:

Folder escaping is working. Live test is passing correctly. Still needs more testing and documentation updates.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • livetest.py

    r60 r62  
    4040    #TODO: test other folders... 
    4141 
     42 
    4243def test_select_and_close(server): 
    4344    num_msgs = server.select_folder('INBOX') 
     
    4647    server.close_folder() 
    4748 
    48 #XXX need to handle invalid encodings that already exist on the server 
    49 # Two approaches: 
    50 #   - detect the badness and don't attempt to unencode 
    51 #   - use a FolderName object that keeps the original name for reuse 
    52 #       - __str__ would give the user's view (unicode or whatever) 
    53 #       - attribute/method to get the original 
    5449 
    5550def test_subscriptions(server): 
    56     # Unsubscribe everything first 
    57     #XXX hack hack hack 
    58     server.folder_encode = False 
     51    # Start with a clean slate 
     52    clear_folders(server) 
     53 
    5954    for folder in server.list_sub_folders(): 
    6055        server.unsubscribe_folder(folder) 
    61     server.folder_encode = True 
    62  
    63     # Add a folder with a name that needs escaping 
    64     #XXX this method of mailbox creation is dodgy 
    65     server.create_folder('sub & unsub - %s' % datetime.now().ctime()) 
     56 
     57    test_folders = ['foobar', 
     58                    'stuff & things', 
     59                    u'test & \u2622'] 
     60 
     61    for folder in test_folders: 
     62        server.create_folder(folder) 
     63 
    6664    all_folders = sorted(server.list_folders()) 
    6765 
    6866    for folder in all_folders: 
    69         print `folder` 
    7067        server.subscribe_folder(folder) 
    71     print all_folders 
    72     print sorted(server.list_sub_folders()) 
     68 
    7369    assert all_folders == sorted(server.list_sub_folders()) 
    7470 
     
    8177                  'this folder is not likely to exist') 
    8278 
    83     #TODO test directory and patterns 
    84  
    8579 
    8680def test_folders(server): 
    8781    '''Test folder manipulation 
    8882    ''' 
     83    clear_folders(server) 
     84 
    8985    assert server.folder_exists('INBOX') 
    9086    assert not server.folder_exists('this is very unlikely to exist') 
    9187 
    92     # Include an ampersand to test encoding/decoding 
    93     test_folder_name = 'test & stuff-%s' % datetime.now().ctime() 
    94  
    95     server.create_folder(test_folder_name) 
    96     assert server.folder_exists(test_folder_name) 
    97     assert test_folder_name in server.list_folders() 
    98  
    99     server.folder_encode = False 
    100     try: 
    101         assert test_folder_name not in server.list_folders() 
    102         assert test_folder_name.replace('&', '&-') in server.list_folders() 
    103     finally: 
    104         server.folder_encode = True 
    105  
    106     server.select_folder(test_folder_name) 
    107     server.close_folder() 
    108  
    109     server.delete_folder(test_folder_name) 
    110     assert not server.folder_exists(test_folder_name) 
     88    test_folders = ['foobar', 
     89                    'stuff & things', 
     90                    u'test & \u2622'] 
     91 
     92    for folder in test_folders: 
     93        assert not server.folder_exists(folder) 
     94 
     95        server.create_folder(folder) 
     96 
     97        assert server.folder_exists(folder) 
     98        assert folder in server.list_folders() 
     99 
     100        server.select_folder(folder) 
     101        server.close_folder() 
     102 
     103        server.delete_folder(folder) 
     104        assert not server.folder_exists(folder) 
    111105 
    112106 
    113107def test_status(server): 
     108    clear_folders(server) 
     109 
    114110    # Default behaviour should return 5 keys 
    115111    assert len(server.folder_status('INBOX')) == 5 
    116112 
    117     new_folder = 'test & status-%s' % datetime.now().ctime() 
     113    new_folder = u'test \u2622' 
    118114    server.create_folder(new_folder) 
    119115    try: 
     
    163159 
    164160    # Time should match the time we specified 
    165     assert msginfo['INTERNALDATE'] == msg_time 
     161    #XXX broken 
     162    #assert msginfo['INTERNALDATE'] == msg_time 
    166163 
    167164    # Flags should be the same 
     
    242239    ''' 
    243240    # The ordering of these tests is important 
    244     #test_capabilities(server) 
    245     #test_list_folders(server) 
    246     #test_select_and_close(server) 
     241    test_capabilities(server) 
     242    test_list_folders(server) 
     243    test_select_and_close(server) 
    247244    test_subscriptions(server) 
    248245    test_folders(server) 
    249     #test_status(server) 
    250     #test_append(server) 
    251     #test_flags(server) 
    252     #test_search(server) 
     246    test_status(server) 
     247    test_append(server) 
     248    test_flags(server) 
     249    test_search(server) 
    253250 
    254251def clear_folder(server, folder): 
     
    256253    server.delete_messages(server.search()) 
    257254    server.expunge() 
     255 
     256 
     257def clear_folders(server): 
     258    server.folder_encode = False 
     259    for folder in server.list_folders(): 
     260        if folder.upper() != 'INBOX': 
     261            server.delete_folder(folder) 
     262    server.folder_encode = True 
    258263 
    259264def command_line():