package org.peerbox.server.utils;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.junit.Test;
import org.peerbox.BaseJUnitTest;
import org.peerbox.server.servlets.messages.FileRecoveryMessage;
import org.peerbox.utils.OsUtils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class PathDeserializerTest extends BaseJUnitTest {
@Test
public void testDeserialize() {
Path file = Paths.get("/this/is/a/path/to/a/file.txt");
String fileString = file.toString();
if (OsUtils.isWindows()) {
// on windows, double excape is required. once for java and once for json.
fileString = fileString.replace("\\", "\\\\");
}
String jsonMessage = String.format("{\"path\":\"%s\"}", fileString);
FileRecoveryMessage message = null;
Gson gson = createGsonInstance();
message = gson.fromJson(jsonMessage, FileRecoveryMessage.class);
assertNotNull(message);
assertEquals(file, message.getPath());
}
private Gson createGsonInstance() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Path.class, new PathDeserializer());
return gsonBuilder.create();
}
}