package cc.arduino.contributions; import cc.arduino.contributions.libraries.LibrariesIndex; import cc.arduino.utils.MultiStepProgress; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.module.mrbean.MrBeanModule; import org.junit.After; import org.junit.Before; import org.junit.Test; import processing.app.helpers.FileUtils; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.URL; import static org.junit.Assert.assertTrue; public class GzippedJsonDownloaderTest { private File tempFolder; private File tempFile; private DownloadableContributionsDownloader downloader; @Before public void setUp() throws Exception { tempFolder = FileUtils.createTempFolder(); tempFile = File.createTempFile("test", ".json"); downloader = new DownloadableContributionsDownloader(tempFolder); } @After public void tearDown() throws Exception { FileUtils.recursiveDelete(tempFolder); FileUtils.recursiveDelete(tempFile); } @Test public void testJsonDownload() throws Exception { new GZippedJsonDownloader(downloader, new URL("http://downloads.arduino.cc/libraries/library_index.json"), new URL("http://downloads.arduino.cc/libraries/library_index.json.gz")).download(tempFile, new MultiStepProgress(1), "", new NoopProgressListener()); InputStream indexIn = new FileInputStream(tempFile); ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new MrBeanModule()); mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); mapper.configure(DeserializationFeature.EAGER_DESERIALIZER_FETCH, true); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); LibrariesIndex librariesIndex = mapper.readValue(indexIn, LibrariesIndex.class); assertTrue(librariesIndex != null); } }