Fix test problems and re-enable AssetResourceIT tests.
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/47db44c8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/47db44c8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/47db44c8 Branch: refs/heads/USERGRID-703 Commit: 47db44c8930f91dc9aa77eb3142b6a8da3f57e37 Parents: b51b668 Author: Dave Johnson <[email protected]> Authored: Thu Jun 18 11:15:48 2015 -0400 Committer: Dave Johnson <[email protected]> Committed: Thu Jun 18 11:15:48 2015 -0400 ---------------------------------------------------------------------- .../applications/assets/AssetsResource.java | 41 +++++----------- .../applications/assets/AssetResourceIT.java | 50 +++++++++++--------- .../assets/data/LocalFileBinaryStore.java | 5 ++ 3 files changed, 46 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/47db44c8/stack/rest/src/main/java/org/apache/usergrid/rest/applications/assets/AssetsResource.java ---------------------------------------------------------------------- diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/assets/AssetsResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/assets/AssetsResource.java index b43827b..ef43cfd 100644 --- a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/assets/AssetsResource.java +++ b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/assets/AssetsResource.java @@ -18,32 +18,8 @@ package org.apache.usergrid.rest.applications.assets; import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.InputStream; -import java.util.Date; -import java.util.Map; -import java.util.UUID; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.PathSegment; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; +import com.sun.jersey.api.json.JSONWithPadding; +import com.sun.jersey.multipart.FormDataParam; import org.apache.usergrid.persistence.EntityManager; import org.apache.usergrid.persistence.entities.Asset; import org.apache.usergrid.rest.AbstractContextResource; @@ -52,9 +28,18 @@ import org.apache.usergrid.rest.security.annotations.RequireApplicationAccess; import org.apache.usergrid.services.assets.data.AssetUtils; import org.apache.usergrid.services.assets.data.BinaryStore; import org.apache.usergrid.utils.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; -import com.sun.jersey.api.json.JSONWithPadding; -import com.sun.jersey.multipart.FormDataParam; +import javax.ws.rs.*; +import javax.ws.rs.core.*; +import java.io.InputStream; +import java.util.Date; +import java.util.Map; +import java.util.UUID; /** @deprecated */ http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/47db44c8/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java ---------------------------------------------------------------------- diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java index 5c49709..2b0cbf7 100644 --- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java +++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/assets/AssetResourceIT.java @@ -58,7 +58,6 @@ public class AssetResourceIT extends AbstractRestIT { /** @Deprecated Tests legacy API */ @Test - @Ignore public void verifyBinaryCrud() throws Exception { userRepo.load(); @@ -102,7 +101,6 @@ public class AssetResourceIT extends AbstractRestIT { @Test - @Ignore public void octetStreamOnDynamicEntity() throws Exception { this.refreshIndex(); @@ -111,8 +109,10 @@ public class AssetResourceIT extends AbstractRestIT { String orgAppPath = clientSetup.getOrganizationName() + "/" + clientSetup.getAppName(); - JsonNode node = mapper.readTree( resource().path( orgAppPath + "/foos" ).queryParam( "access_token", access_token ) - .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE ) + JsonNode node = mapper.readTree( resource().path( orgAppPath + "/foos" ) + .queryParam( "access_token", access_token ) + .accept( MediaType.APPLICATION_JSON ) + .type( MediaType.APPLICATION_JSON_TYPE ) .post( String.class, payload ) ); JsonNode idNode = node.get( "entities" ).get( 0 ).get( "uuid" ); @@ -120,21 +120,28 @@ public class AssetResourceIT extends AbstractRestIT { assertNotNull( uuid ); byte[] data = IOUtils.toByteArray( this.getClass().getResourceAsStream( "/cassandra_eye.jpg" ) ); - resource().path( orgAppPath + "/foos/" + uuid ).queryParam( "access_token", access_token ) - .type( MediaType.APPLICATION_OCTET_STREAM_TYPE ).put( data ); + resource().path( orgAppPath + "/foos/" + uuid ) + .queryParam( "access_token", access_token ) + .type( MediaType.APPLICATION_OCTET_STREAM_TYPE ) + .put( data ); // get entity - node = mapper.readTree( resource().path( orgAppPath + "/foos/" + uuid ).queryParam( "access_token", access_token ) - .accept( MediaType.APPLICATION_JSON_TYPE ).get( String.class )); + node = mapper.readTree( resource().path( orgAppPath + "/foos/" + uuid ) + .queryParam( "access_token", access_token ) + .accept( MediaType.APPLICATION_JSON_TYPE ) + .get( String.class )); + LOG.info( "Node: " + mapToFormattedJsonString( node ) ); + Assert.assertEquals( "image/jpeg", node.findValue( AssetUtils.CONTENT_TYPE ).textValue() ); Assert.assertEquals( 7979, node.findValue( "content-length" ).intValue() ); idNode = node.get( "entities" ).get( 0 ).get( "uuid" ); assertEquals( uuid, idNode.textValue() ); // get data by UUID - InputStream is = - resource().path( orgAppPath + "/foos/" + uuid ).queryParam( "access_token", access_token ) - .accept( MediaType.APPLICATION_OCTET_STREAM_TYPE ).get( InputStream.class ); + InputStream is = resource().path( orgAppPath + "/foos/" + uuid ) + .queryParam( "access_token", access_token ) + .accept( MediaType.APPLICATION_OCTET_STREAM_TYPE ) + .get( InputStream.class ); byte[] foundData = IOUtils.toByteArray( is ); assertEquals( 7979, foundData.length ); @@ -151,7 +158,6 @@ public class AssetResourceIT extends AbstractRestIT { @Test - @Ignore public void multipartPostFormOnDynamicEntity() throws Exception { this.refreshIndex(); @@ -199,13 +205,14 @@ public class AssetResourceIT extends AbstractRestIT { assertEquals( 5324800, foundData.length ); // delete - node = mapper.readTree( resource().path( orgAppPath + "/foos/" + uuid ).queryParam( "access_token", access_token ) - .accept( MediaType.APPLICATION_JSON_TYPE ).delete( String.class )); + node = mapper.readTree( resource().path( orgAppPath + "/foos/" + uuid ) + .queryParam( "access_token", access_token ) + .accept( MediaType.APPLICATION_JSON_TYPE ) + .delete( String.class )); } @Test - @Ignore public void multipartPutFormOnDynamicEntity() throws Exception { this.refreshIndex(); @@ -214,9 +221,11 @@ public class AssetResourceIT extends AbstractRestIT { String orgAppPath = clientSetup.getOrganizationName() + "/" + clientSetup.getAppName(); - JsonNode node = mapper.readTree( resource().path( orgAppPath + "/foos" ).queryParam( "access_token", access_token ) - .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE ) - .post( String.class, payload )); + JsonNode node = mapper.readTree( resource().path( orgAppPath + "/foos" ) + .queryParam( "access_token", access_token ) + .accept( MediaType.APPLICATION_JSON ) + .type( MediaType.APPLICATION_JSON_TYPE ) + .post( String.class, payload )); JsonNode idNode = node.get( "entities" ).get( 0 ).get( "uuid" ); String uuid = idNode.textValue(); @@ -272,7 +281,6 @@ public class AssetResourceIT extends AbstractRestIT { @Test - @Ignore public void largeFileInS3() throws Exception { this.refreshIndex(); @@ -319,7 +327,6 @@ public class AssetResourceIT extends AbstractRestIT { } @Test - @Ignore public void fileTooLargeShouldResultInError() throws Exception { this.refreshIndex(); @@ -378,7 +385,6 @@ public class AssetResourceIT extends AbstractRestIT { * Deleting a connection to an asset should not delete the asset or the asset's data */ @Test - @Ignore public void deleteConnectionToAsset() throws IOException { this.refreshIndex(); @@ -393,7 +399,7 @@ public class AssetResourceIT extends AbstractRestIT { Map<String, String> payload = hashMap("name", "cassandra_eye.jpg"); - JsonNode node = resource().path("/test-organization/test-app/foos") + JsonNode node = resource().path(orgAppPath + "/foos") .queryParam("access_token", access_token) .accept(MediaType.APPLICATION_JSON) .type(MediaType.APPLICATION_JSON_TYPE) http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/47db44c8/stack/services/src/main/java/org/apache/usergrid/services/assets/data/LocalFileBinaryStore.java ---------------------------------------------------------------------- diff --git a/stack/services/src/main/java/org/apache/usergrid/services/assets/data/LocalFileBinaryStore.java b/stack/services/src/main/java/org/apache/usergrid/services/assets/data/LocalFileBinaryStore.java index f4cc735..85711b1 100644 --- a/stack/services/src/main/java/org/apache/usergrid/services/assets/data/LocalFileBinaryStore.java +++ b/stack/services/src/main/java/org/apache/usergrid/services/assets/data/LocalFileBinaryStore.java @@ -111,6 +111,11 @@ public class LocalFileBinaryStore implements BinaryStore { fileMetadata.put( AssetUtils.LAST_MODIFIED, System.currentTimeMillis() ); fileMetadata.put( AssetUtils.E_TAG, RandomStringUtils.randomAlphanumeric( 10 ) ); + // if we were successful, write the mime type + if ( file.exists() ) { + fileMetadata.put( AssetUtils.CONTENT_TYPE , AssetMimeHandler.get().getMimeType( entity, file )); + } + try { em.update( entity ); } catch (Exception e) {
