1# -*- coding: utf-8 -*- 2 3import os, time, random 4from io import BytesIO 5from smb.SMBConnection import SMBConnection 6from .util import getConnectionInfo 7from nose.tools import with_setup 8from smb import smb_structs 9 10conn = None 11 12def setup_func_SMB1(): 13 global conn 14 smb_structs.SUPPORT_SMB2 = False 15 info = getConnectionInfo() 16 conn = SMBConnection(info['user'], info['password'], info['client_name'], info['server_name'], use_ntlm_v2 = True) 17 assert conn.connect(info['server_ip'], info['server_port']) 18 19def setup_func_SMB2(): 20 global conn 21 smb_structs.SUPPORT_SMB2 = True 22 info = getConnectionInfo() 23 conn = SMBConnection(info['user'], info['password'], info['client_name'], info['server_name'], use_ntlm_v2 = True) 24 assert conn.connect(info['server_ip'], info['server_port']) 25 26def teardown_func(): 27 global conn 28 conn.close() 29 30@with_setup(setup_func_SMB1, teardown_func) 31def test_rename_english_file_SMB1(): 32 global conn 33 34 old_path = '/RenameTest %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 35 new_path = '/RenameTest %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 36 37 conn.storeFile('smbtest', old_path, BytesIO(b'Rename file test')) 38 39 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 40 filenames = [e.filename for e in entries] 41 assert os.path.basename(old_path.replace('/', os.sep)) in filenames 42 assert os.path.basename(new_path.replace('/', os.sep)) not in filenames 43 44 conn.rename('smbtest', old_path, new_path) 45 46 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 47 filenames = [e.filename for e in entries] 48 assert os.path.basename(old_path.replace('/', os.sep)) not in filenames 49 assert os.path.basename(new_path.replace('/', os.sep)) in filenames 50 51 conn.deleteFiles('smbtest', new_path) 52 53@with_setup(setup_func_SMB2, teardown_func) 54def test_rename_english_file_SMB2(): 55 global conn 56 57 old_path = '/RenameTest %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 58 new_path = '/RenameTest %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 59 60 conn.storeFile('smbtest', old_path, BytesIO(b'Rename file test')) 61 62 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 63 filenames = [e.filename for e in entries] 64 assert os.path.basename(old_path.replace('/', os.sep)) in filenames 65 assert os.path.basename(new_path.replace('/', os.sep)) not in filenames 66 67 conn.rename('smbtest', old_path, new_path) 68 69 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 70 filenames = [e.filename for e in entries] 71 assert os.path.basename(old_path.replace('/', os.sep)) not in filenames 72 assert os.path.basename(new_path.replace('/', os.sep)) in filenames 73 74 conn.deleteFiles('smbtest', new_path) 75 76@with_setup(setup_func_SMB1, teardown_func) 77def test_rename_unicode_file_SMB1(): 78 global conn 79 80 old_path = '/改名测试 %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 81 new_path = '/改名测试 %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 82 83 conn.storeFile('smbtest', old_path, BytesIO(b'Rename file test')) 84 85 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 86 filenames = [e.filename for e in entries] 87 assert os.path.basename(old_path.replace('/', os.sep)) in filenames 88 assert os.path.basename(new_path.replace('/', os.sep)) not in filenames 89 90 conn.rename('smbtest', old_path, new_path) 91 92 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 93 filenames = [e.filename for e in entries] 94 assert os.path.basename(old_path.replace('/', os.sep)) not in filenames 95 assert os.path.basename(new_path.replace('/', os.sep)) in filenames 96 97 conn.deleteFiles('smbtest', new_path) 98 99@with_setup(setup_func_SMB2, teardown_func) 100def test_rename_unicode_file_SMB2(): 101 global conn 102 103 old_path = '/改名测试 %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 104 new_path = '/改名测试 %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 105 106 conn.storeFile('smbtest', old_path, BytesIO(b'Rename file test')) 107 108 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 109 filenames = [e.filename for e in entries] 110 assert os.path.basename(old_path.replace('/', os.sep)) in filenames 111 assert os.path.basename(new_path.replace('/', os.sep)) not in filenames 112 113 conn.rename('smbtest', old_path, new_path) 114 115 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 116 filenames = [e.filename for e in entries] 117 assert os.path.basename(old_path.replace('/', os.sep)) not in filenames 118 assert os.path.basename(new_path.replace('/', os.sep)) in filenames 119 120 conn.deleteFiles('smbtest', new_path) 121 122@with_setup(setup_func_SMB1, teardown_func) 123def test_rename_english_directory_SMB1(): 124 global conn 125 126 old_path = '/RenameTest %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 127 new_path = '/RenameTest %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 128 129 conn.createDirectory('smbtest', old_path) 130 131 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 132 filenames = [e.filename for e in entries] 133 assert os.path.basename(old_path.replace('/', os.sep)) in filenames 134 assert os.path.basename(new_path.replace('/', os.sep)) not in filenames 135 136 conn.rename('smbtest', old_path, new_path) 137 138 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 139 filenames = [e.filename for e in entries] 140 assert os.path.basename(old_path.replace('/', os.sep)) not in filenames 141 assert os.path.basename(new_path.replace('/', os.sep)) in filenames 142 143 conn.deleteDirectory('smbtest', new_path) 144 145@with_setup(setup_func_SMB2, teardown_func) 146def test_rename_english_directory_SMB2(): 147 global conn 148 149 old_path = '/RenameTest %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 150 new_path = '/RenameTest %d-%d.txt' % ( time.time(), random.randint(1000, 9999) ) 151 152 conn.createDirectory('smbtest', old_path) 153 154 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 155 filenames = [e.filename for e in entries] 156 assert os.path.basename(old_path.replace('/', os.sep)) in filenames 157 assert os.path.basename(new_path.replace('/', os.sep)) not in filenames 158 159 conn.rename('smbtest', old_path, new_path) 160 161 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 162 filenames = [e.filename for e in entries] 163 assert os.path.basename(old_path.replace('/', os.sep)) not in filenames 164 assert os.path.basename(new_path.replace('/', os.sep)) in filenames 165 166 conn.deleteDirectory('smbtest', new_path) 167 168@with_setup(setup_func_SMB1, teardown_func) 169def test_rename_unicode_directory_SMB1(): 170 global conn 171 172 old_path = '/改名测试 %d-%d' % ( time.time(), random.randint(1000, 9999) ) 173 new_path = '/改名测试 %d-%d' % ( time.time(), random.randint(1000, 9999) ) 174 175 conn.createDirectory('smbtest', old_path) 176 177 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 178 filenames = [e.filename for e in entries] 179 assert os.path.basename(old_path.replace('/', os.sep)) in filenames 180 assert os.path.basename(new_path.replace('/', os.sep)) not in filenames 181 182 conn.rename('smbtest', old_path, new_path) 183 184 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 185 filenames = [e.filename for e in entries] 186 assert os.path.basename(old_path.replace('/', os.sep)) not in filenames 187 assert os.path.basename(new_path.replace('/', os.sep)) in filenames 188 189 conn.deleteDirectory('smbtest', new_path) 190 191@with_setup(setup_func_SMB2, teardown_func) 192def test_rename_unicode_directory_SMB2(): 193 global conn 194 195 old_path = '/改名测试 %d-%d' % ( time.time(), random.randint(1000, 9999) ) 196 new_path = '/改名测试 %d-%d' % ( time.time(), random.randint(1000, 9999) ) 197 198 conn.createDirectory('smbtest', old_path) 199 200 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 201 filenames = [e.filename for e in entries] 202 assert os.path.basename(old_path.replace('/', os.sep)) in filenames 203 assert os.path.basename(new_path.replace('/', os.sep)) not in filenames 204 205 conn.rename('smbtest', old_path, new_path) 206 207 entries = conn.listPath('smbtest', os.path.dirname(old_path.replace('/', os.sep))) 208 filenames = [e.filename for e in entries] 209 assert os.path.basename(old_path.replace('/', os.sep)) not in filenames 210 assert os.path.basename(new_path.replace('/', os.sep)) in filenames 211 212 conn.deleteDirectory('smbtest', new_path) 213