def test_052_check_dosmode_create_smb1(request, dm): """ This tests the setting of different DOS attributes through SMB1 create. after setting """ depends(request, ["SHARE_IS_WRITABLE"]) if dm.value > DOSmode.SYSTEM.value: return c = SMB() c.connect(host=ip, share=SMB_NAME, username=SMB_USER, password=SMB_PWD, smb1=True) if dm == DOSmode.READONLY: c.create_file(f'{dm.name}_smb1', "w", "r") elif dm == DOSmode.HIDDEN: c.create_file(f'{dm.name}_smb1', "w", "h") elif dm == DOSmode.SYSTEM: c.create_file(f'{dm.name}_smb1', "w", "s") dir_listing = c.ls("/") for f in dir_listing: if f['name'] != f'{dm.name}_smb1': continue # Archive is automatically set by kernel to_check = f['attrib'] & ~DOSmode.ARCHIVE.value c.disconnect() assert (to_check & dm.value) != 0, f
def test_069_normal_rename(request): """ This verifies that renames are successfully completed """ depends(request, ["SHARE_IS_WRITABLE"]) c = SMB() c.connect(host=ip, share=SMB_NAME, username=SMB_USER, password=SMB_PWD, smb1=True) fd = c.create_file("old_file_to_rename", "w") c.close(fd) c.rename("old_file_to_rename", "renamed_new_file") files = [x['name'] for x in c.ls('\\')] c.disconnect() assert ("renamed_new_file" in files)
def test_068_case_insensitive_rename(request): """ ZFS is case sensitive, but case preserving when casesensitivity == insensitive rename of to_rename -> To_rename should succeed and new file appear correctly in directory listing. Will fail with NT_STATUS_OBJECT_NAME_COLLISION if we have regression and samba identifies files as same. """ depends(request, ["SHARE_IS_WRITABLE"]) c = SMB() c.connect(host=ip, share=SMB_NAME, username=SMB_USER, password=SMB_PWD, smb1=True) fd = c.create_file("to_rename", "w") c.close(fd) c.rename("to_rename", "To_rename") files = [x['name'] for x in c.ls('\\')] c.disconnect() assert ("To_rename" in files)