addPermissions(permissions, bits); perms.getSharedAccessPolicies().put("readwrite" + bits, createSharedAccessPolicy(permissions, 3600)); containers.get(bits).uploadPermissions(perms); String sasToken = containers.get(bits).generateSharedAccessSignature(null, "readwrite" + bits); permissions = EnumSet.noneOf(SharedAccessBlobPermissions.class); addPermissions(permissions, bits); testAccess(sasToken, permissions, null, containers.get(bits), testAppendBlob); testAccess(sasToken, permissions, null, containers.get(bits), testBlockBlob); testAccess(sasToken, permissions, null, containers.get(bits), testPageBlob);
@Test public void testAppendBlobSASCombinations() throws URISyntaxException, StorageException, InvalidKeyException, IOException { for (int bits = 0x1; bits < 0x20; bits++) { final EnumSet<SharedAccessBlobPermissions> permissions = EnumSet.noneOf(SharedAccessBlobPermissions.class); addPermissions(permissions, bits); testBlobAccess(this.container, BlobType.APPEND_BLOB, permissions, null); } }
private static void testBlobAccess(CloudBlobContainer container, BlobType type, EnumSet<SharedAccessBlobPermissions> permissions, SharedAccessBlobHeaders headers) throws StorageException, IOException, URISyntaxException, InvalidKeyException { CloudBlob blob = BlobTestHelper.uploadNewBlob(container, type, SR.BLOB, 512, null); SharedAccessBlobPolicy policy = createSharedAccessPolicy(permissions, 3600); String sasToken = blob.generateSharedAccessSignature(policy, headers, null); testAccess(sasToken, permissions, headers, null, blob); }
@Test public void testApiVersion() throws InvalidKeyException, StorageException, URISyntaxException { SharedAccessBlobPolicy sp1 = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.WRITE, SharedAccessBlobPermissions.LIST, SharedAccessBlobPermissions.DELETE), 3600); String sas = this.blob.generateSharedAccessSignature(sp1, null); // should not be appended before signing assertEquals(-1, sas.indexOf(Constants.QueryConstants.API_VERSION)); OperationContext ctx = new OperationContext(); ctx.getResponseReceivedEventHandler().addListener(new StorageEvent<ResponseReceivedEvent>() { @Override public void eventOccurred(ResponseReceivedEvent eventArg) { // should be appended after signing HttpURLConnection conn = (HttpURLConnection) eventArg.getConnectionObject(); assertTrue(conn.getURL().toString().indexOf(Constants.QueryConstants.API_VERSION) != -1); } }); CloudBlockBlob sasBlob = new CloudBlockBlob(new URI(this.blob.getUri().toString() + "?" + sas)); sasBlob.uploadMetadata(null, null, ctx); }
@Test @Category(SlowTests.class) public void testContainerPublicAccess() throws StorageException, IOException, URISyntaxException, InterruptedException { CloudBlockBlob testBlockBlob = (CloudBlockBlob) BlobTestHelper.uploadNewBlob( this.container, BlobType.BLOCK_BLOB, "blockblob", 64, null); CloudPageBlob testPageBlob = (CloudPageBlob) BlobTestHelper.uploadNewBlob( this.container, BlobType.PAGE_BLOB, "pageblob", 512, null); BlobContainerPermissions permissions = new BlobContainerPermissions(); permissions.setPublicAccess(BlobContainerPublicAccessType.CONTAINER); this.container.uploadPermissions(permissions); Thread.sleep(35000); testAccess(null, EnumSet.of(SharedAccessBlobPermissions.LIST, SharedAccessBlobPermissions.READ), null, this.container, testBlockBlob); testAccess(null, EnumSet.of(SharedAccessBlobPermissions.LIST, SharedAccessBlobPermissions.READ), null, this.container, testPageBlob); permissions.setPublicAccess(BlobContainerPublicAccessType.BLOB); this.container.uploadPermissions(permissions); Thread.sleep(30000); testAccess(null, EnumSet.of(SharedAccessBlobPermissions.READ), null, this.container, testBlockBlob); testAccess(null, EnumSet.of(SharedAccessBlobPermissions.READ), null, this.container, testPageBlob); }
public void testContainerSaS() throws IllegalArgumentException, StorageException, URISyntaxException, InvalidKeyException, InterruptedException { SharedAccessBlobPolicy sp1 = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.WRITE, SharedAccessBlobPermissions.LIST, SharedAccessBlobPermissions.DELETE), 3600); SharedAccessBlobPolicy sp2 = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.LIST), 3600); BlobContainerPermissions perms = new BlobContainerPermissions();
InterruptedException { SharedAccessBlobPolicy policy = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.WRITE), 3600); BlobContainerPermissions perms = new BlobContainerPermissions(); testAccess(sasToken, EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.WRITE), null, this.container, blob); SharedAccessBlobPolicy policy2 = createSharedAccessPolicy(EnumSet.of(SharedAccessBlobPermissions.READ), 3600); perms = new BlobContainerPermissions();
@Test public void testBlockBlobSASCombinations() throws URISyntaxException, StorageException, InvalidKeyException, IOException { for (int bits = 0x1; bits < 0x20; bits++) { final EnumSet<SharedAccessBlobPermissions> permissions = EnumSet.noneOf(SharedAccessBlobPermissions.class); addPermissions(permissions, bits); testBlobAccess(this.container, BlobType.BLOCK_BLOB, permissions, null); } }
@Test @Category(SlowTests.class) public void testBlobSaS() throws InvalidKeyException, IllegalArgumentException, StorageException, URISyntaxException, InterruptedException { SharedAccessBlobPolicy sp = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.LIST), 3600); BlobContainerPermissions perms = new BlobContainerPermissions(); perms.getSharedAccessPolicies().put("readperm", sp); this.container.uploadPermissions(perms); Thread.sleep(30000); CloudBlockBlob sasBlob = new CloudBlockBlob(new URI(this.blob.getUri().toString() + "?" + this.blob.generateSharedAccessSignature(null, "readperm"))); sasBlob.download(new ByteArrayOutputStream()); // do not give the client and check that the new blob's client has the correct perms CloudBlob blobFromUri = new CloudBlockBlob(PathUtility.addToQuery(this.blob.getStorageUri(), this.blob.generateSharedAccessSignature(null, "readperm"))); assertEquals(StorageCredentialsSharedAccessSignature.class.toString(), blobFromUri.getServiceClient() .getCredentials().getClass().toString()); // create credentials from sas StorageCredentials creds = new StorageCredentialsSharedAccessSignature( this.blob.generateSharedAccessSignature(null, "readperm")); CloudBlobClient bClient = new CloudBlobClient(sasBlob.getServiceClient().getStorageUri(), creds); CloudBlockBlob blobFromClient = bClient.getContainerReference(this.blob.getContainer().getName()) .getBlockBlobReference(this.blob.getName()); assertEquals(StorageCredentialsSharedAccessSignature.class.toString(), blobFromClient.getServiceClient() .getCredentials().getClass().toString()); assertEquals(bClient, blobFromClient.getServiceClient()); }
@Test public void testPageBlobSASCombinations() throws InvalidKeyException, StorageException, IOException, URISyntaxException { for (int bits = 0x1; bits < 0x20; bits++) { final EnumSet<SharedAccessBlobPermissions> permissions = EnumSet.noneOf(SharedAccessBlobPermissions.class); addPermissions(permissions, bits); testBlobAccess(this.container, BlobType.PAGE_BLOB, permissions, null); } }
public void testBlobSaSWithSharedAccessBlobHeaders() throws InvalidKeyException, IllegalArgumentException, StorageException, URISyntaxException, InterruptedException { SharedAccessBlobPolicy sp = createSharedAccessPolicy(EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.WRITE, SharedAccessBlobPermissions.LIST), 3600); BlobContainerPermissions perms = new BlobContainerPermissions();
SharedAccessBlobPolicy sp = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.LIST), 3600);
SharedAccessBlobPolicy sp = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.LIST), 3600); IPRange range1 = new IPRange("0.0.0.0", "255.255.255.255");
source.uploadMetadata(); SharedAccessBlobPolicy policy = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.WRITE, SharedAccessBlobPermissions.LIST, SharedAccessBlobPermissions.DELETE), 5000);
source.uploadMetadata(); SharedAccessBlobPolicy policy = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.WRITE, SharedAccessBlobPermissions.LIST, SharedAccessBlobPermissions.DELETE), 5000);
source.uploadMetadata(); SharedAccessBlobPolicy policy = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.WRITE, SharedAccessBlobPermissions.LIST, SharedAccessBlobPermissions.DELETE), 5000);