ckan2zenodo-library/src/test/java/org/gcube/tests/ZenodoTests.java

141 lines
4.9 KiB
Java
Raw Normal View History

2019-11-26 14:55:20 +01:00
package org.gcube.tests;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
2019-11-26 14:55:20 +01:00
2019-12-05 11:56:51 +01:00
import org.gcube.common.resources.gcore.GenericResource;
import org.gcube.common.resources.gcore.Resources;
2019-12-10 17:06:52 +01:00
import org.gcube.data.publishing.ckan2zenodo.Translator;
2019-11-26 14:55:20 +01:00
import org.gcube.data.publishing.ckan2zenodo.clients.Zenodo;
2019-12-05 11:56:51 +01:00
import org.gcube.data.publishing.ckan2zenodo.commons.IS;
2019-12-02 18:02:11 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor;
2019-12-16 18:49:29 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.CkanRelatedIdentifier;
2019-12-10 17:06:52 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.CkanResource;
2019-11-27 18:21:01 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.ZenodoCredentials;
2019-12-05 11:56:51 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.faults.ConfigurationException;
2019-11-26 14:55:20 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.faults.ZenodoException;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Creator;
2019-11-27 18:21:01 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata.AccessRights;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata.UploadType;
2019-12-10 17:06:52 +01:00
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.FileDeposition;
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition;
2019-12-16 18:49:29 +01:00
import org.junit.Assert;
import org.junit.BeforeClass;
2019-11-26 14:55:20 +01:00
import org.junit.Test;
import com.fasterxml.jackson.core.JsonProcessingException;
2019-12-16 18:49:29 +01:00
import com.jayway.jsonpath.JsonPath;
2019-11-26 14:55:20 +01:00
public class ZenodoTests {
2019-12-02 18:02:11 +01:00
private static ZenodoCredentials credentials;
@BeforeClass
public static final void init() throws IOException {
2019-12-02 18:02:11 +01:00
credentials=TestCommons.loadCredentials();
}
@Test
public void readFromZenodo() throws IOException, ZenodoException {
// private static final String BASE_URL="https://zenodo.org/api/";
Zenodo z=new Zenodo(credentials);
2019-11-27 18:21:01 +01:00
2019-12-16 18:49:29 +01:00
System.out.println(z.readDeposition(426312));
2019-11-27 18:21:01 +01:00
2019-11-26 14:55:20 +01:00
}
@Test
public void createDeposition() throws ZenodoException, JsonProcessingException {
Zenodo z=new Zenodo(credentials);
ZenodoDeposition dep=z.createNew();
dep.setMetadata(new DepositionMetadata(UploadType.dataset,
new Date(System.currentTimeMillis()),
"Test",
Arrays.asList(new Creator("simpleMan")),
"Simple description",
AccessRights.open));
2019-12-10 17:06:52 +01:00
System.out.println(z.updateMetadata(dep));
}
2019-12-02 18:02:11 +01:00
2019-12-05 11:56:51 +01:00
@Test
public void createFromSimpleItem() throws ConfigurationException, Exception {
Zenodo z=new Zenodo(credentials);
GenericResource res=Resources.unmarshal(GenericResource.class, TransformationTests.class.getResourceAsStream("/ResearchObject.xml"));
ZenodoDeposition dep=z.createNew();
2019-12-10 17:06:52 +01:00
Translator tran=new Translator(IS.readMappings(res),IS.readResourceFilters(res));
dep=TestCommons.readAndTransform("/ResearchObject.json", tran,dep);
dep=z.updateMetadata(dep);
2019-12-05 11:56:51 +01:00
2019-12-10 17:06:52 +01:00
System.out.println("Resulting Deposition with metadata : ");
System.out.println();
String json=TestCommons.convertStreamToString(TransformationTests.class.getResourceAsStream("/ResearchObject.json"));
CkanItemDescriptor desc=new CkanItemDescriptor(json);
2019-12-05 11:56:51 +01:00
2019-12-10 17:06:52 +01:00
for(CkanResource cRes:tran.filterResources(desc)) {
FileDeposition file=z.uploadFile(dep, cRes.getName(), cRes.getUrl());
System.out.println("Published "+file);
}
dep=z.publish(dep);
System.out.println();
2019-12-05 11:56:51 +01:00
}
2019-12-16 18:49:29 +01:00
@Test
public void updateExisting() throws ConfigurationException, Exception {
// publish new
Zenodo z=new Zenodo(credentials);
GenericResource res=Resources.unmarshal(GenericResource.class, TransformationTests.class.getResourceAsStream("/ResearchObject.xml"));
ZenodoDeposition dep=z.createNew();
Translator tran=new Translator(IS.readMappings(res),IS.readResourceFilters(res));
dep=TestCommons.readAndTransform("/ResearchObject.json", tran,dep);
dep=z.updateMetadata(dep);
System.out.println("Resulting Deposition with metadata : ");
System.out.println();
String json=TestCommons.convertStreamToString(TransformationTests.class.getResourceAsStream("/ResearchObject.json"));
CkanItemDescriptor desc=new CkanItemDescriptor(json);
for(CkanResource cRes:tran.filterResources(desc)) {
FileDeposition file=z.uploadFile(dep, cRes.getName(), cRes.getUrl());
System.out.println("Published "+file);
}
dep=z.publish(dep);
desc.setZenodoDoi(CkanRelatedIdentifier.getZenodo(dep.getDoi()));
// Change title
String fakeTitle="Dummy Title";
String modifiedJson=JsonPath.parse(desc.getContent()).put("$", "title", fakeTitle).jsonString();
desc=new CkanItemDescriptor(modifiedJson);
// Publish logic :
Assert.assertNotNull(desc);
Assert.assertNotNull(desc.getZenodoDoi());
Assert.assertEquals(fakeTitle, desc.getTitle());
dep=z.readDeposition(desc.getZenodoDoi().getZenodoId());
dep=tran.transform(desc, dep);
z.unlockPublished(dep.getId());
System.out.println(z.updateMetadata(dep));
dep=z.publish(dep);
Assert.assertEquals(fakeTitle, dep.getTitle());
System.out.println(dep);
}
2019-11-26 14:55:20 +01:00
}