Skip to content

Commit

Permalink
commit for manage resumeable signedURL uploads googleapis#2462
Browse files Browse the repository at this point in the history
  • Loading branch information
abhinav-qlogic committed Apr 1, 2019
1 parent 57cc1a0 commit bd991a0
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,29 +16,19 @@

package com.google.cloud.storage.contrib.nio.testing;

import com.google.api.services.storage.model.Bucket;
import com.google.api.services.storage.model.BucketAccessControl;
import com.google.api.services.storage.model.Notification;
import com.google.api.services.storage.model.ObjectAccessControl;
import com.google.api.services.storage.model.Policy;
import com.google.api.services.storage.model.ServiceAccount;
import com.google.api.services.storage.model.StorageObject;
import com.google.api.services.storage.model.TestIamPermissionsResponse;
import com.google.api.services.storage.model.*;
import com.google.cloud.Tuple;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageException;
import com.google.cloud.storage.spi.v1.RpcBatch;
import com.google.cloud.storage.spi.v1.StorageRpc;

import javax.annotation.concurrent.NotThreadSafe;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
import java.nio.file.FileAlreadyExistsException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.concurrent.NotThreadSafe;
import java.util.*;

/**
* A bare-bones in-memory implementation of StorageRpc, meant for testing.
Expand Down Expand Up @@ -312,6 +302,11 @@ public String open(StorageObject object, Map<Option, ?> options) throws StorageE
return fullname(object);
}

@Override
public String getUploadId(String signURL) {
return null;
}

@Override
public void write(
String uploadId, byte[] toWrite, int toWriteOffset, long destOffset, int length, boolean last)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,11 @@
package com.google.cloud.storage.spi.v1;

import com.google.api.core.InternalApi;
import com.google.api.services.storage.model.Bucket;
import com.google.api.services.storage.model.BucketAccessControl;
import com.google.api.services.storage.model.Notification;
import com.google.api.services.storage.model.ObjectAccessControl;
import com.google.api.services.storage.model.Policy;
import com.google.api.services.storage.model.ServiceAccount;
import com.google.api.services.storage.model.StorageObject;
import com.google.api.services.storage.model.TestIamPermissionsResponse;
import com.google.api.services.storage.model.*;
import com.google.cloud.ServiceRpc;
import com.google.cloud.Tuple;
import com.google.cloud.storage.StorageException;

import java.io.InputStream;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -290,7 +284,7 @@ StorageObject compose(
String open(StorageObject object, Map<Option, ?> options);

/**
* Opens a resumable upload channel for a given storage object.
* Opens a resumable upload channel for a given signURL.
*
* @throws StorageException upon failure
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public class BlobWriteChannelTest {
private static final int DEFAULT_CHUNK_SIZE = 8 * MIN_CHUNK_SIZE;
private static final int CUSTOM_CHUNK_SIZE = 4 * MIN_CHUNK_SIZE;
private static final Random RANDOM = new Random();
private static final String SIGN_URL = "https://storage.googleapis.com/abc-upload/test1.txt?GoogleAccessId=testClient-test@test.com&Expires=1553839761&Signature=MJUBXAZ7";
private static final String SIGN_URL = "http://www.test.com/test-bucket/test1.txt?GoogleAccessId=testClient-test@test.com&Expires=1553839761&Signature=MJUBXAZ7";

@Rule public ExpectedException thrown = ExpectedException.none();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,6 @@

package com.google.cloud.storage;

import static com.google.cloud.storage.testing.ApiPolicyMatcher.eqApiPolicy;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;

import com.google.api.client.googleapis.json.GoogleJsonError;
import com.google.api.core.ApiClock;
import com.google.api.gax.paging.Page;
Expand All @@ -35,19 +25,12 @@
import com.google.auth.oauth2.ServiceAccountCredentials;
import com.google.cloud.Identity;
import com.google.cloud.Policy;
import com.google.cloud.ReadChannel;
import com.google.cloud.ServiceOptions;
import com.google.cloud.Tuple;
import com.google.cloud.WriteChannel;
import com.google.cloud.*;
import com.google.cloud.storage.Acl.Project;
import com.google.cloud.storage.Acl.Project.ProjectRole;
import com.google.cloud.storage.Acl.Role;
import com.google.cloud.storage.Acl.User;
import com.google.cloud.storage.Storage.BlobSourceOption;
import com.google.cloud.storage.Storage.BlobTargetOption;
import com.google.cloud.storage.Storage.BlobWriteOption;
import com.google.cloud.storage.Storage.BucketSourceOption;
import com.google.cloud.storage.Storage.CopyRequest;
import com.google.cloud.storage.Storage.*;
import com.google.cloud.storage.spi.StorageRpcFactory;
import com.google.cloud.storage.spi.v1.RpcBatch;
import com.google.cloud.storage.spi.v1.StorageRpc;
Expand All @@ -56,20 +39,21 @@
import com.google.common.collect.Iterables;
import com.google.common.io.BaseEncoding;
import com.google.common.net.UrlEscapers;
import org.easymock.Capture;
import org.easymock.EasyMock;
import org.junit.Test;
import org.junit.*;
import org.junit.rules.ExpectedException;

import javax.crypto.spec.SecretKeySpec;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;
import java.nio.ByteBuffer;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
import java.security.*;
import java.security.spec.EncodedKeySpec;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
Expand All @@ -78,15 +62,12 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.crypto.spec.SecretKeySpec;
import org.easymock.Capture;
import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

import static com.google.cloud.storage.testing.ApiPolicyMatcher.eqApiPolicy;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.junit.Assert.*;

public class StorageImplTest {

Expand Down Expand Up @@ -344,6 +325,8 @@ public long millisTime() {
private Blob expectedBlob1, expectedBlob2, expectedBlob3;
private Bucket expectedBucket1, expectedBucket2, expectedBucket3;

private static final String SIGN_URL = "http://www.test.com/test-bucket/test1.txt?GoogleAccessId=testClient-test@test.com&Expires=1553839761&Signature=MJUBXAZ7";

@Rule public ExpectedException thrown = ExpectedException.none();

@BeforeClass
Expand Down Expand Up @@ -2835,4 +2818,14 @@ public void testRuntimeException() {
thrown.expectMessage(exceptionMessage);
storage.get(blob);
}

@Test
public void testWriterWithSignURL() throws MalformedURLException {
expect(storageRpcMock.getUploadId(SIGN_URL)).andReturn("upload-id");
replay(storageRpcMock);
initializeService();
WriteChannel writer = new BlobWriteChannel(options,new URL(SIGN_URL));
assertNotNull(writer);
assertTrue(writer.isOpen());
}
}

0 comments on commit bd991a0

Please sign in to comment.