Skip to content

Commit 7e24aee

Browse files
committed
Fixing Windows unit tests
1 parent 80a2c4c commit 7e24aee

File tree

1 file changed

+49
-29
lines changed

1 file changed

+49
-29
lines changed

ds3-sdk/src/test/java/com/spectralogic/ds3client/metadata/WindowsMetadataRestore_Test.java

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import com.spectralogic.ds3client.commands.interfaces.MetadataImpl;
2222
import com.spectralogic.ds3client.networking.Headers;
2323
import com.spectralogic.ds3client.networking.Metadata;
24+
import com.spectralogic.ds3client.utils.ResourceUtils;
25+
import org.apache.commons.io.FileUtils;
2426
import org.apache.http.Header;
2527
import org.apache.http.message.BasicHeader;
2628
import org.junit.Assert;
@@ -32,6 +34,7 @@
3234
import java.lang.reflect.Method;
3335
import java.nio.file.Files;
3436
import java.nio.file.Path;
37+
import java.nio.file.Paths;
3538
import java.nio.file.attribute.BasicFileAttributes;
3639
import java.util.List;
3740
import java.util.Set;
@@ -41,57 +44,72 @@
4144
import static com.spectralogic.ds3client.metadata.MetadataKeyConstants.METADATA_PREFIX;
4245

4346
public class WindowsMetadataRestore_Test {
47+
private static final String FILE_NAME = "LoremIpsum.txt";
48+
private static final String localOS = MetaDataUtil.getOS();
49+
4450
@Before
4551
public void checkPreconditions() {
4652
Assume.assumeTrue(org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS);
4753
}
48-
49-
private final File file = new File(getClass().getClassLoader().getResource("LoremIpsum.txt").getFile());
50-
private final String localOS = MetaDataUtil.getOS();
51-
54+
5255
@Test
5356
public void restoreFileTimes_Test() throws Exception {
5457
final BasicHeader basicHeader[] = new BasicHeader[3];
55-
final BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
58+
59+
final Path filePath = ResourceUtils.loadFileResource(FILE_NAME);
60+
61+
final BasicFileAttributes attr = Files.readAttributes(filePath, BasicFileAttributes.class);
5662
basicHeader[0] = new BasicHeader(METADATA_PREFIX + MetadataKeyConstants.KEY_CREATION_TIME, String.valueOf(attr.creationTime().toMillis()));
5763
basicHeader[1] = new BasicHeader(METADATA_PREFIX + MetadataKeyConstants.KEY_ACCESS_TIME, String.valueOf(attr.lastAccessTime().toMillis()));
5864
basicHeader[2] = new BasicHeader(METADATA_PREFIX + MetadataKeyConstants.KEY_LAST_MODIFIED_TIME, String.valueOf(attr.lastModifiedTime().toMillis()));
5965
final Metadata metadata = genMetadata(basicHeader);
60-
final WindowsMetadataRestore windowsMetadataRestore = new WindowsMetadataRestore(metadata, file.getPath(), MetaDataUtil.getOS());
66+
final WindowsMetadataRestore windowsMetadataRestore = new WindowsMetadataRestore(metadata, filePath.toString(), MetaDataUtil.getOS());
6167
windowsMetadataRestore.restoreFileTimes();
62-
final BasicFileAttributes fileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
68+
final BasicFileAttributes fileAttributes = Files.readAttributes(filePath, BasicFileAttributes.class);
6369
Assert.assertEquals(String.valueOf(fileAttributes.creationTime().toMillis()), String.valueOf(basicHeader[0].getValue()));
6470
Assert.assertEquals(String.valueOf(fileAttributes.lastModifiedTime().toMillis()), String.valueOf(basicHeader[2].getValue()));
6571
}
6672

6773

6874
@Test
6975
public void restoreUserAndOwner_Test() throws Exception {
70-
final ImmutableMap.Builder<String, String> mMetadataMap = new ImmutableMap.Builder<>();
71-
final WindowsMetadataStore windowsMetadataStore = new WindowsMetadataStore(mMetadataMap);
76+
final ImmutableMap.Builder<String, String> metadataMap = new ImmutableMap.Builder<>();
77+
final WindowsMetadataStore windowsMetadataStore = new WindowsMetadataStore(metadataMap);
7278
final Class aClass = WindowsMetadataStore.class;
7379
final Method method = aClass.getDeclaredMethod("saveWindowsDescriptors", new Class[]{Path.class});
7480
method.setAccessible(true);
75-
method.invoke(windowsMetadataStore, file.toPath());
7681

77-
final BasicHeader basicHeader[] = new BasicHeader[3];
78-
basicHeader[0] = new BasicHeader(METADATA_PREFIX + KEY_OWNER, mMetadataMap.build().get(METADATA_PREFIX + KEY_OWNER));
79-
basicHeader[1] = new BasicHeader(METADATA_PREFIX + KEY_GROUP, mMetadataMap.build().get(METADATA_PREFIX + KEY_GROUP));
80-
basicHeader[2] = new BasicHeader(METADATA_PREFIX + MetadataKeyConstants.KEY_OS, localOS);
81-
final Metadata metadata = genMetadata(basicHeader);
82-
final WindowsMetadataRestore windowsMetadataRestore = new WindowsMetadataRestore(metadata, file.getPath(), MetaDataUtil.getOS());
83-
windowsMetadataRestore.restoreOSName();
84-
windowsMetadataRestore.restoreUserAndOwner();
85-
86-
final ImmutableMap.Builder<String, String> mMetadataMapAfterRestore = new ImmutableMap.Builder<>();
87-
final WindowsMetadataStore windowsMetadataStoreAfterRestore = new WindowsMetadataStore(mMetadataMapAfterRestore);
88-
final Class aClassAfterRestore = WindowsMetadataStore.class;
89-
final Method methodAfterRestore = aClassAfterRestore.getDeclaredMethod("saveWindowsDescriptors", new Class[]{Path.class});
90-
methodAfterRestore.setAccessible(true);
91-
methodAfterRestore.invoke(windowsMetadataStoreAfterRestore, file.toPath());
92-
93-
Assert.assertEquals(mMetadataMapAfterRestore.build().get(METADATA_PREFIX + KEY_OWNER), basicHeader[0].getValue());
94-
Assert.assertEquals(mMetadataMapAfterRestore.build().get(METADATA_PREFIX + KEY_GROUP), basicHeader[1].getValue());
82+
final String tempPathPrefix = null;
83+
final Path tempDirectory = Files.createTempDirectory(Paths.get("."), tempPathPrefix);
84+
85+
final String fileName = "Gracie.txt";
86+
87+
try {
88+
final Path filePath = Files.createFile(Paths.get(tempDirectory.toString(), fileName));
89+
90+
method.invoke(windowsMetadataStore, filePath);
91+
92+
final BasicHeader basicHeader[] = new BasicHeader[3];
93+
basicHeader[0] = new BasicHeader(METADATA_PREFIX + KEY_OWNER, metadataMap.build().get(METADATA_PREFIX + KEY_OWNER));
94+
basicHeader[1] = new BasicHeader(METADATA_PREFIX + KEY_GROUP, metadataMap.build().get(METADATA_PREFIX + KEY_GROUP));
95+
basicHeader[2] = new BasicHeader(METADATA_PREFIX + MetadataKeyConstants.KEY_OS, localOS);
96+
final Metadata metadata = genMetadata(basicHeader);
97+
final WindowsMetadataRestore windowsMetadataRestore = new WindowsMetadataRestore(metadata, filePath.toString(), MetaDataUtil.getOS());
98+
windowsMetadataRestore.restoreOSName();
99+
windowsMetadataRestore.restoreUserAndOwner();
100+
101+
final ImmutableMap.Builder<String, String> mMetadataMapAfterRestore = new ImmutableMap.Builder<>();
102+
final WindowsMetadataStore windowsMetadataStoreAfterRestore = new WindowsMetadataStore(mMetadataMapAfterRestore);
103+
final Class aClassAfterRestore = WindowsMetadataStore.class;
104+
final Method methodAfterRestore = aClassAfterRestore.getDeclaredMethod("saveWindowsDescriptors", new Class[]{Path.class});
105+
methodAfterRestore.setAccessible(true);
106+
methodAfterRestore.invoke(windowsMetadataStoreAfterRestore, filePath);
107+
108+
Assert.assertEquals(mMetadataMapAfterRestore.build().get(METADATA_PREFIX + KEY_OWNER), basicHeader[0].getValue());
109+
Assert.assertEquals(mMetadataMapAfterRestore.build().get(METADATA_PREFIX + KEY_GROUP), basicHeader[1].getValue());
110+
} finally {
111+
FileUtils.deleteDirectory(tempDirectory.toFile());
112+
}
95113
}
96114

97115

@@ -103,6 +121,9 @@ public void restorePermissions_Test() {
103121
final Class aClass = WindowsMetadataStore.class;
104122
final Method method = aClass.getDeclaredMethod("saveFlagMetaData", new Class[]{Path.class});
105123
method.setAccessible(true);
124+
125+
final File file = ResourceUtils.loadFileResource(FILE_NAME).toFile();
126+
106127
method.invoke(windowsMetadataStore, file.toPath());
107128

108129
final Method methodWindowsfilePermissions = aClass.getDeclaredMethod("saveWindowsfilePermissions", new Class[]{Path.class});
@@ -130,7 +151,6 @@ public void restorePermissions_Test() {
130151

131152

132153
private Metadata genMetadata(final Header... headers) {
133-
134154
final ImmutableMultimap.Builder<String, String> mapBuilder = ImmutableMultimap.builder();
135155
for (final Header header : headers) {
136156
mapBuilder.put(header.getName(), header.getValue());

0 commit comments

Comments
 (0)