1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-03 01:18:10 +03:00

tests: test POSIX file type on reparse point

Create a symlink reparse point over SMB2. Then query file info over SMB2 and
check the POSIX file type is correctly assigned in the POSIX info levels.

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
This commit is contained in:
Ralph Boehme 2024-11-27 15:14:32 +01:00
parent 26e8105518
commit 21ef00d0f0
2 changed files with 29 additions and 0 deletions

View File

@ -441,6 +441,34 @@ class ReparsePoints(samba.tests.libsmb.LibsmbTests):
"""Test SOCK reparse tag"""
self.do_test_nfs_reparse('sock', stat.S_IFSOCK, 'NFS_SPECFILE_SOCK')
def test_reparsepoint_posix_type(self):
conn = self.connection(posix=True)
filename = 'reparse'
self.clean_file(conn, filename)
fd,_,_ = conn.create_ex(
filename,
DesiredAccess=sec.SEC_FILE_WRITE_ATTRIBUTE,
CreateDisposition=libsmb.FILE_CREATE,
CreateContexts=[posix_context(0o600)])
b = reparse_symlink.symlink_put("y", "y", 0, 0)
conn.fsctl(fd, libsmb.FSCTL_SET_REPARSE_POINT, b, 0)
conn.close(fd)
dirents = conn.list("", filename,info_level=libsmb.SMB2_FIND_POSIX_INFORMATION)
self.assertEqual(
dirents[0]["attrib"],
libsmb.FILE_ATTRIBUTE_REPARSE_POINT|
libsmb.FILE_ATTRIBUTE_ARCHIVE)
self.assertEqual(
dirents[0]["reparse_tag"],
libsmb.IO_REPARSE_TAG_SYMLINK)
type, perms = self.wire_mode_to_unix(dirents[0]['perms'])
self.assertEqual(type, stat.S_IFLNK)
self.clean_file(conn, filename)
if __name__ == '__main__':
import unittest
unittest.main()

View File

@ -1,2 +1,3 @@
^samba.tests.reparsepoints.samba.tests.reparsepoints.ReparsePoints.test_fifo_reparse\(fileserver_smb1\)
^samba.tests.reparsepoints.samba.tests.reparsepoints.ReparsePoints.test_sock_reparse\(fileserver_smb1\)
^samba.tests.reparsepoints.samba.tests.reparsepoints.ReparsePoints.test_reparsepoint_posix_type\(fileserver_smb1\)