001/* 002 * The contents of this file are subject to the license and copyright 003 * detailed in the LICENSE and NOTICE files at the root of the source 004 * tree. 005 */ 006package org.fcrepo.kernel.impl.operations; 007 008import static org.junit.Assert.assertEquals; 009 010import org.apache.commons.io.IOUtils; 011 012import org.fcrepo.kernel.api.Transaction; 013import org.fcrepo.kernel.api.identifiers.FedoraId; 014import org.fcrepo.kernel.api.models.ExternalContent; 015import org.fcrepo.kernel.api.operations.NonRdfSourceOperation; 016import org.fcrepo.kernel.api.operations.NonRdfSourceOperationBuilder; 017import org.junit.Before; 018import org.junit.Test; 019import org.junit.runner.RunWith; 020import org.mockito.Mock; 021import org.mockito.junit.MockitoJUnitRunner; 022 023import java.io.InputStream; 024import java.net.URI; 025import java.util.Collection; 026import java.util.HashSet; 027import java.util.stream.Collectors; 028import java.util.stream.Stream; 029 030/** 031 * @author bseeger 032 */ 033@RunWith(MockitoJUnitRunner.Silent.class) 034public class CreateNonRdfSourceOperationBuilderTest { 035 036 private InputStream stream; 037 038 private NonRdfSourceOperationBuilder internalBuilder; 039 040 final FedoraId resourceId = FedoraId.create("info:fedora/test-subject"); 041 042 @Mock 043 private Transaction tx; 044 045 @Before 046 public void setUp() throws Exception { 047 stream = IOUtils.toInputStream("This is some test data", "UTF-8"); 048 internalBuilder = new CreateNonRdfSourceOperationBuilderImpl(tx, resourceId, stream); 049 } 050 051 @Test 052 public void testContent() throws Exception { 053 final NonRdfSourceOperation op = internalBuilder.build(); 054 assertEquals(stream, op.getContentStream()); 055 } 056 057 @Test 058 public void testExternal() { 059 final URI uri = URI.create("http://example.org/test/location"); 060 final String handling = ExternalContent.PROXY; 061 final NonRdfSourceOperationBuilder builder = 062 new CreateNonRdfSourceOperationBuilderImpl(tx, resourceId, handling, uri); 063 final NonRdfSourceOperation op = builder.build(); 064 assertEquals(uri, op.getContentUri()); 065 assertEquals(handling, op.getExternalHandling()); 066 } 067 068 @Test 069 public void testMimeType() { 070 final String mimeType = "text/plain"; 071 final NonRdfSourceOperation op = internalBuilder.mimeType(mimeType).build(); 072 assertEquals(mimeType, op.getMimeType()); 073 } 074 075 @Test 076 public void testFilename() { 077 final String filename = "someFile.txt"; 078 final NonRdfSourceOperation op = internalBuilder.filename(filename).build(); 079 assertEquals(filename, op.getFilename()); 080 } 081 082 @Test 083 public void testSize() { 084 final long filesize = 123l; 085 final NonRdfSourceOperation op = internalBuilder.contentSize(filesize).build(); 086 assertEquals(filesize, op.getContentSize()); 087 } 088 089 @Test 090 public void testDigests() { 091 final Collection<URI> digests = Stream.of("urn:sha1:1234abcd", "urn:md5:zyxw9876").map(URI::create) 092 .collect(Collectors.toCollection(HashSet::new)); 093 final NonRdfSourceOperation op = internalBuilder.contentDigests(digests).build(); 094 assertEquals(digests, op.getContentDigests()); 095 } 096}