dll: FspAccessCheckEx: fix #190: add test

This commit is contained in:
Bill Zissimopoulos 2018-11-05 10:45:11 -08:00
parent 1bebbcf634
commit 55955b8514
No known key found for this signature in database
GPG Key ID: 3D4F95D52C7B3EA3

View File

@ -352,6 +352,58 @@ static void create_fileattr_test(void)
create_fileattr_dotest(MemfsNet, L"\\\\memfs\\share");
}
static void create_readonlydir_dotest(ULONG Flags, PWSTR Prefix)
{
void *memfs = memfs_start(Flags);
HANDLE Handle;
BOOLEAN Success;
DWORD FileAttributes;
WCHAR DirPath[MAX_PATH], FilePath[MAX_PATH];
StringCbPrintfW(DirPath, sizeof DirPath, L"%s%s\\dir0",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\dir0\\file0",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
Success = CreateDirectoryW(DirPath, 0);
ASSERT(Success);
Success = SetFileAttributesW(DirPath, FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_READONLY);
ASSERT(Success);
FileAttributes = GetFileAttributesW(DirPath);
ASSERT((FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_READONLY) == FileAttributes);
Handle = CreateFileW(FilePath,
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle);
CloseHandle(Handle);
Success = DeleteFileW(FilePath);
ASSERT(Success);
Success = RemoveDirectoryW(DirPath);
TEST(create_fileattr_test);
memfs_stop(memfs);
}
static void create_readonlydir_test(void)
{
if (NtfsTests)
{
WCHAR DirBuf[MAX_PATH];
GetTestDirectory(DirBuf);
create_readonlydir_dotest(-1, DirBuf);
}
if (WinFspDiskTests)
create_readonlydir_dotest(MemfsDisk, 0);
if (WinFspNetTests)
create_readonlydir_dotest(MemfsNet, L"\\\\memfs\\share");
}
void create_related_dotest(ULONG Flags, PWSTR Prefix)
{
void *memfs = memfs_start(Flags);
@ -1265,6 +1317,7 @@ void create_tests(void)
{
TEST(create_test);
TEST(create_fileattr_test);
TEST(create_readonlydir_test);
TEST(create_related_test);
TEST(create_allocation_test);
TEST(create_sd_test);