From 29655f3149f151a834ed5a724e91e32994b28d89 Mon Sep 17 00:00:00 2001 From: Mat Mannion Date: Tue, 4 Apr 2017 13:52:26 +0100 Subject: [PATCH] JCLOUDS-1263: Add live integration test for manipulating objects through the Swift ObjectApi with unicode characters in their path --- .../swift/v1/features/ObjectApiLiveTest.java | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiLiveTest.java b/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiLiveTest.java index 98a546e500..02116f6354 100644 --- a/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiLiveTest.java +++ b/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiLiveTest.java @@ -61,21 +61,40 @@ public class ObjectApiLiveTest extends BaseSwiftApiLiveTest { private String containerName = getClass().getSimpleName() + "Container"; static final Payload PAYLOAD = newByteSourcePayload(ByteSource.wrap("swifty".getBytes())); + protected void assertCanCreateReadUpdateDeleteList(String regionId, String containerName, String objectName) throws Exception { + assertNotNull(getApi().getContainerApi(regionId).create(containerName)); + assertNotNull(getApi().getObjectApi(regionId, containerName).put(objectName, PAYLOAD)); + + SwiftObject object = getApi().getObjectApi(regionId, containerName).get(objectName); + assertEquals(object.getName(), objectName); + checkObject(object); + assertEquals(toStringAndClose(object.getPayload().openStream()), "swifty"); + + String lexicographicallyBeforeName = objectName.substring(0, objectName.length() - 1); + object = getApi().getObjectApi(regionId, containerName) + .list(marker(lexicographicallyBeforeName)).get(0); + assertEquals(object.getName(), objectName); + checkObject(object); + + getApi().getObjectApi(regionId, containerName).delete(objectName); + getApi().getContainerApi(regionId).deleteIfEmpty(containerName); + } + public void testCreateWithSpacesAndSpecialCharacters() throws Exception { final String containerName = "container # ! special"; final String objectName = "object # ! special"; for (String regionId : regions) { - assertNotNull(getApi().getContainerApi(regionId).create(containerName)); - assertNotNull(getApi().getObjectApi(regionId, containerName).put(objectName, PAYLOAD)); + assertCanCreateReadUpdateDeleteList(regionId, containerName, objectName); + } + } - SwiftObject object = getApi().getObjectApi(regionId, containerName).get(objectName); - assertEquals(object.getName(), objectName); - checkObject(object); - assertEquals(toStringAndClose(object.getPayload().openStream()), "swifty"); + public void testCreateAndListWithUnicodeCharacters() throws Exception { + final String containerName = "container-unic₪de"; + final String objectName = "object-unic₪de"; - getApi().getObjectApi(regionId, containerName).delete(objectName); - getApi().getContainerApi(regionId).deleteIfEmpty(containerName); + for (String regionId : regions) { + assertCanCreateReadUpdateDeleteList(regionId, containerName, objectName); } }