1# -*- coding: utf-8 -*- 2 3import os, urllib, urllib2, time, random 4from StringIO import StringIO 5from smb.SMBHandler import SMBHandler 6import util 7 8 9try: 10 import hashlib 11 def MD5(): return hashlib.md5() 12except ImportError: 13 import md5 14 def MD5(): return md5.new() 15 16 17 18def test_basic(): 19 # Basic test for smb URLs 20 director = urllib2.build_opener(SMBHandler) 21 fh = director.open('smb://%(user)s:%(password)s@%(server_ip)s/smbtest/rfc1001.txt' % util.getConnectionInfo()) 22 23 s = fh.read() 24 md = MD5() 25 md.update(s) 26 assert md.hexdigest() == '5367c2bbf97f521059c78eab65309ad3' 27 assert len(s) == 158437 28 29 fh.close() 30 31 32def test_unicode(): 33 # Test smb URLs with unicode paths 34 director = urllib2.build_opener(SMBHandler) 35 fh = director.open(u'smb://%(user)s:%(password)s@%(server_ip)s/smbtest/测试文件夹/垃圾文件.dat' % util.getConnectionInfo()) 36 37 s = fh.read() 38 md = MD5() 39 md.update(s) 40 assert md.hexdigest() == '8a44c1e80d55e91c92350955cdf83442' 41 assert len(s) == 256000 42 43 fh.close() 44 45 46 47TEST_FILENAME = os.path.join(os.path.dirname(__file__), os.pardir, 'SupportFiles', 'binary.dat') 48TEST_FILESIZE = 256000 49TEST_DIGEST = 'bb6303f76e29f354b6fdf6ef58587e48' 50 51def test_upload(): 52 info = util.getConnectionInfo() 53 info['filename'] = os.sep + 'StoreTest-%d-%d.dat' % ( time.time(), random.randint(0, 10000) ) 54 55 director = urllib2.build_opener(SMBHandler) 56 upload_fh = director.open('smb://%(user)s:%(password)s@%(server_ip)s/smbtest/%(filename)s' % info, data = open(TEST_FILENAME, 'rb')) 57 58 retr_fh = director.open('smb://%(user)s:%(password)s@%(server_ip)s/smbtest/%(filename)s' % info) 59 60 s = retr_fh.read() 61 md = MD5() 62 md.update(s) 63 64 assert md.hexdigest() == TEST_DIGEST 65 assert len(s) == TEST_FILESIZE 66 67