package com.github.marschall.memoryfilesystem; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.attribute.FileAttribute; import java.nio.file.attribute.PosixFilePermission; import java.nio.file.attribute.PosixFilePermissions; import java.util.Set; import org.junit.Rule; import org.junit.Test; public final class UmaskTest { private static final Set<PosixFilePermission> UMASK = PosixFilePermissions.fromString("----w-rwx"); // ie, 027 @Rule public final PosixFileSystemRule rule = new PosixFileSystemRule(UMASK); /** * Tests creating a file without permissions respects umask. * * @throws IOException if the test fails */ @Test public void creatingFileWithoutPermissions() throws IOException { Path path = this.rule.getFileSystem().getPath("/fileWithoutPerms"); Path created = Files.createFile(path); Set<PosixFilePermission> actual = Files.getPosixFilePermissions(created); assertEquals("rwxr-x---", PosixFilePermissions.toString(actual)); } /** * Tests creating a file with permissions respects umask. * * @throws IOException if the test fails */ @Test public void creatingFileWithPermissions() throws IOException { Set<PosixFilePermission> permissions = PosixFilePermissions.fromString("rw-rw-rw-"); FileAttribute<?> attr = PosixFilePermissions.asFileAttribute(permissions); Path file = this.rule.getFileSystem().getPath("/fileWithPerms"); Path created = Files.createFile(file, attr); Set<PosixFilePermission> actual = Files.getPosixFilePermissions(created); assertEquals("rw-r-----", PosixFilePermissions.toString(actual)); } /** * Tests creating a directory without permissions respects umask. * * @throws IOException if the test fails */ @Test public void creatingDirectoryWithoutPermissions() throws IOException { Path path = this.rule.getFileSystem().getPath("/dirWithoutPerms"); Path created = Files.createDirectory(path); Set<PosixFilePermission> actual = Files.getPosixFilePermissions(created); assertEquals("rwxr-x---", PosixFilePermissions.toString(actual)); } /** * Tests creating a directory with permissions respects umask. * * @throws IOException if the test fails */ @Test public void creatingDirectoryWithPermissions() throws IOException { Set<PosixFilePermission> permissions = PosixFilePermissions.fromString("rwxrwx-w-"); FileAttribute<?> attribute = PosixFilePermissions.asFileAttribute(permissions); Path file = this.rule.getFileSystem().getPath("/dirWithPerms"); Path created = Files.createDirectory(file, attribute); Set<PosixFilePermission> actual = Files.getPosixFilePermissions(created); assertEquals("rwxr-x---", PosixFilePermissions.toString(actual)); } }