| package org.apache.taverna.robundle.manifest; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertNotEquals; |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.io.InputStream; |
| import java.net.URI; |
| import java.util.Arrays; |
| import java.util.List; |
| import java.util.Map; |
| |
| import org.apache.taverna.robundle.Bundle; |
| import org.apache.taverna.robundle.Bundles; |
| import org.junit.Test; |
| |
| import com.github.jsonldjava.core.DocumentLoader; |
| |
| //import com.github.jsonldjava.core.DocumentLoader; |
| |
| public class TestRDFToManifest { |
| private static final String CONTEXT = "https://w3id.org/bundle/context"; |
| |
| @Test |
| public void contextLoadedFromJarCache() throws Exception { |
| // RDFToManifest.makeBaseURI(); // trigger static{} block |
| @SuppressWarnings("unchecked") |
| Map<String, Object> context = (Map<String, Object>) new DocumentLoader() |
| .loadDocument(CONTEXT).getDocument(); |
| // FIXME: jsonld-java 0.3 and later uses DocumentLoader instead of |
| // JSONUtils |
| // Map<String, Object> context = (Map<String, Object>) |
| // JSONUtils.fromURL(new URL(CONTEXT)); |
| Object retrievedFrom = context.get("http://purl.org/pav/retrievedFrom"); |
| assertNotNull("Did not load context from cache: " + CONTEXT, |
| retrievedFrom); |
| |
| } |
| |
| @Test |
| public void multipleConformsTo() throws Exception { |
| try (Bundle ro = Bundles.createBundle(); |
| InputStream json = getClass().getResourceAsStream("/bag-of-bags-manifest.json")) { |
| // Make a new, empty manifest we can inspect |
| assertNotNull("Can't find bag-of-bags-manifest.json", json); |
| Manifest manifest = new Manifest(ro); |
| |
| // NOTE: Uses RO-BagIt folder metadata/ instead of .ro/ |
| URI baseURI = ro.getPath("metadata/manifest.json").toUri(); |
| new RDFToManifest().readTo(json, manifest, baseURI); |
| |
| // Check basic metadata |
| assertEquals(URI.create("https://github.com/ini-bdds/bdbag"), |
| manifest.getCreatedBy().getUri()); |
| assertEquals(1, manifest.getAuthoredBy().size()); |
| Agent author = manifest.getAuthoredBy().get(0); |
| assertEquals("Stian Soiland-Reyes", |
| author.getName()); |
| assertEquals(URI.create("mbox:stain@apache.org"), |
| author.getUri()); |
| assertEquals(URI.create("https://orcid.org/0000-0001-9842-9718"), |
| author.getOrcid()); |
| |
| // FIXME: The BDBag got this wrong and used "uri" instead of "content", and so |
| // data/README accidentally became the ID of the annotation. |
| // That means that we can't find any annotations as we only pick up |
| // on those that have a "content" |
| // assertEquals(1, manifest.getAnnotations().size()); |
| // PathAnnotation ann = manifest.getAnnotations().get(0); |
| // assertEquals(ro.getRoot().toUri(), |
| // ann.getAbout()); |
| // assertEquals(ro.getPath("data/README").toUri(), ann.getContent()); |
| |
| // Now let's check aggregations |
| assertEquals(1, manifest.getAggregates().size()); |
| // As aggregates order is not preserved, for simplicity this test |
| // has only one aggregation |
| PathMetadata a1 = manifest.getAggregates().get(0); |
| URI uri = URI.create("http://n2t.net/ark:/57799/b90h3c"); |
| assertEquals(uri, a1.getUri()); |
| assertEquals(a1, manifest.getAggregation(uri)); |
| |
| // FIXME: More than one? |
| assertEquals(URI.create("https://w3id.org/ro/bagit/profile"), |
| a1.getConformsTo()); |
| // assertEquals(URI.create("https://tools.ietf.org/html/draft-kunze-bagit-14"), |
| // a1.getConformsTo()); |
| |
| |
| Proxy bundledAs = a1.getBundledAs(); |
| assertNotNull(bundledAs); |
| // FIXME: Why is there no bundledAs data? |
| assertEquals(ro.getPath("data"), |
| bundledAs.getFolder()); |
| assertEquals("bag1.zip", a1.getBundledAs().getFilename()); |
| |
| // TODO: Enable fetching based on bundledAs URI? |
| //ro.getRoot().resolve("data/bag1.zip") |
| |
| } |
| } |
| } |