|
4 | 4 | package net.snowflake.client.jdbc;
|
5 | 5 |
|
6 | 6 | import static net.snowflake.client.jdbc.SnowflakeUtil.createCaseInsensitiveMap;
|
| 7 | +import static net.snowflake.client.jdbc.SnowflakeUtil.createOwnerOnlyPermissionDir; |
7 | 8 | import static net.snowflake.client.jdbc.SnowflakeUtil.extractColumnMetadata;
|
8 | 9 | import static net.snowflake.client.jdbc.SnowflakeUtil.getSnowflakeType;
|
9 | 10 | import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
15 | 16 | import com.fasterxml.jackson.databind.ObjectMapper;
|
16 | 17 | import com.fasterxml.jackson.databind.node.ArrayNode;
|
17 | 18 | import com.fasterxml.jackson.databind.node.ObjectNode;
|
| 19 | +import java.io.File; |
| 20 | +import java.io.IOException; |
| 21 | +import java.nio.file.Files; |
| 22 | +import java.nio.file.Path; |
| 23 | +import java.nio.file.attribute.PosixFileAttributes; |
| 24 | +import java.nio.file.attribute.PosixFilePermission; |
| 25 | +import java.nio.file.attribute.PosixFilePermissions; |
18 | 26 | import java.sql.Types;
|
19 | 27 | import java.util.ArrayList;
|
20 | 28 | import java.util.Arrays;
|
21 | 29 | import java.util.HashMap;
|
22 | 30 | import java.util.Map;
|
| 31 | +import java.util.Set; |
23 | 32 | import java.util.TreeMap;
|
| 33 | +import net.snowflake.client.annotations.DontRunOnWindows; |
24 | 34 | import net.snowflake.client.category.TestTags;
|
25 | 35 | import net.snowflake.client.core.ObjectMapperFactory;
|
26 | 36 | import org.apache.http.Header;
|
27 | 37 | import org.apache.http.message.BasicHeader;
|
28 | 38 | import org.junit.jupiter.api.Tag;
|
29 | 39 | import org.junit.jupiter.api.Test;
|
| 40 | +import org.junit.jupiter.api.io.TempDir; |
30 | 41 |
|
31 | 42 | @Tag(TestTags.CORE)
|
32 | 43 | public class SnowflakeUtilTest extends BaseJDBCTest {
|
@@ -117,6 +128,33 @@ public void shouldConvertHeadersCreateCaseInsensitiveMap() {
|
117 | 128 | assertEquals("value2", map.get("Key2"));
|
118 | 129 | }
|
119 | 130 |
|
| 131 | + @Test |
| 132 | + @DontRunOnWindows |
| 133 | + public void testCreateOwnerOnlyPermissionDir(@TempDir Path tempDir) |
| 134 | + throws IOException, UnsupportedOperationException { |
| 135 | + Path tmp = tempDir.resolve("folder-permission-testing"); |
| 136 | + String folderPath = tmp.toString(); |
| 137 | + boolean isDirCreated = createOwnerOnlyPermissionDir(folderPath); |
| 138 | + assertTrue(isDirCreated); |
| 139 | + assertTrue(tmp.toFile().isDirectory()); |
| 140 | + PosixFileAttributes attributes = Files.readAttributes(tmp, PosixFileAttributes.class); |
| 141 | + Set<PosixFilePermission> permissions = attributes.permissions(); |
| 142 | + assertEquals(PosixFilePermissions.toString(permissions), "rw-------"); |
| 143 | + } |
| 144 | + |
| 145 | + @Test |
| 146 | + @DontRunOnWindows |
| 147 | + public void testValidateFilePermission(@TempDir Path tempDir) |
| 148 | + throws IOException, UnsupportedOperationException { |
| 149 | + Path tmp = tempDir.resolve("fileTesting.txt"); |
| 150 | + File file = tmp.toFile(); |
| 151 | + assertTrue(file.createNewFile()); |
| 152 | + SnowflakeUtil.assureOnlyUserAccessibleFilePermissions(file); |
| 153 | + PosixFileAttributes attributes = Files.readAttributes(tmp, PosixFileAttributes.class); |
| 154 | + Set<PosixFilePermission> permissions = attributes.permissions(); |
| 155 | + assertEquals(PosixFilePermissions.toString(permissions), "rw-------"); |
| 156 | + } |
| 157 | + |
120 | 158 | private static SnowflakeColumnMetadata createExpectedMetadata(
|
121 | 159 | JsonNode rootNode, JsonNode fieldOne, JsonNode fieldTwo) throws SnowflakeSQLLoggedException {
|
122 | 160 | ColumnTypeInfo columnTypeInfo =
|
|
0 commit comments