Skip to content

Commit

Permalink
Make storage mock clients able to generate sas (Azure#17349)
Browse files Browse the repository at this point in the history
  • Loading branch information
amnguye authored and annelo-msft committed Feb 17, 2021
1 parent e931a81 commit c7261f9
Show file tree
Hide file tree
Showing 29 changed files with 439 additions and 384 deletions.
10 changes: 5 additions & 5 deletions sdk/storage/Azure.Storage.Blobs/src/BlobBaseClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ public virtual string Name
/// Determines whether the client is able to generate a SAS.
/// If the client is authenticated with a <see cref="StorageSharedKeyCredential"/>.
/// </summary>
public bool CanGenerateSasUri => _storageSharedKeyCredential != null;
public bool CanGenerateSasUri => SharedKeyCredential != null;

#region ctors
/// <summary>
Expand Down Expand Up @@ -470,7 +470,7 @@ protected virtual BlobBaseClient WithSnapshotCore(string snapshot)
return new BlobBaseClient(
blobUriBuilder.ToUri(),
Pipeline,
_storageSharedKeyCredential,
SharedKeyCredential,
Version,
ClientDiagnostics,
CustomerProvidedKey,
Expand Down Expand Up @@ -510,7 +510,7 @@ private protected virtual BlobBaseClient WithVersionCore(string versionId)
return new BlobBaseClient(
blobUriBuilder.ToUri(),
Pipeline,
_storageSharedKeyCredential,
SharedKeyCredential,
Version,
ClientDiagnostics,
CustomerProvidedKey,
Expand Down Expand Up @@ -4266,7 +4266,7 @@ public virtual Uri GenerateSasUri(BlobSasBuilder builder)
}
BlobUriBuilder sasUri = new BlobUriBuilder(Uri)
{
Query = builder.ToSasQueryParameters(_storageSharedKeyCredential).ToString()
Query = builder.ToSasQueryParameters(SharedKeyCredential).ToString()
};
return sasUri.ToUri();
}
Expand Down Expand Up @@ -4298,7 +4298,7 @@ protected internal virtual BlobContainerClient GetParentBlobContainerClientCore(
_parentBlobContainerClient = new BlobContainerClient(
blobUriBuilder.ToUri(),
Pipeline,
_storageSharedKeyCredential,
SharedKeyCredential,
Version,
ClientDiagnostics,
CustomerProvidedKey,
Expand Down
21 changes: 13 additions & 8 deletions sdk/storage/Azure.Storage.Blobs/src/BlobContainerClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,11 +155,16 @@ public virtual string Name
/// </summary>
private readonly StorageSharedKeyCredential _storageSharedKeyCredential;

/// <summary>
/// Gets the The <see cref="StorageSharedKeyCredential"/> used to authenticate and generate SAS.
/// </summary>
internal virtual StorageSharedKeyCredential SharedKeyCredential => _storageSharedKeyCredential;

/// <summary>
/// Determines whether the client is able to generate a SAS.
/// If the client is authenticated with a <see cref="StorageSharedKeyCredential"/>.
/// </summary>
public bool CanGenerateSasUri => _storageSharedKeyCredential != null;
public bool CanGenerateSasUri => SharedKeyCredential != null;

#region ctor
/// <summary>
Expand Down Expand Up @@ -420,7 +425,7 @@ protected internal virtual BlobBaseClient GetBlobBaseClientCore(string blobName)
return new BlobBaseClient(
blobUriBuilder.ToUri(),
_pipeline,
_storageSharedKeyCredential,
SharedKeyCredential,
Version,
ClientDiagnostics,
CustomerProvidedKey,
Expand All @@ -446,7 +451,7 @@ public virtual BlobClient GetBlobClient(string blobName)
return new BlobClient(
blobUriBuilder.ToUri(),
_pipeline,
_storageSharedKeyCredential,
SharedKeyCredential,
Version,
ClientDiagnostics,
CustomerProvidedKey,
Expand Down Expand Up @@ -479,7 +484,7 @@ protected internal virtual BlockBlobClient GetBlockBlobClientCore(string blobNam
return new BlockBlobClient(
blobUriBuilder.ToUri(),
Pipeline,
_storageSharedKeyCredential,
SharedKeyCredential,
Version,
ClientDiagnostics,
CustomerProvidedKey,
Expand Down Expand Up @@ -511,7 +516,7 @@ protected internal virtual AppendBlobClient GetAppendBlobClientCore(string blobN
return new AppendBlobClient(
blobUriBuilder.ToUri(),
Pipeline,
_storageSharedKeyCredential,
SharedKeyCredential,
Version,
ClientDiagnostics,
CustomerProvidedKey,
Expand Down Expand Up @@ -543,7 +548,7 @@ protected internal virtual PageBlobClient GetPageBlobClientCore(string blobName)
return new PageBlobClient(
blobUriBuilder.ToUri(),
Pipeline,
_storageSharedKeyCredential,
SharedKeyCredential,
Version,
ClientDiagnostics,
CustomerProvidedKey,
Expand Down Expand Up @@ -3000,7 +3005,7 @@ public virtual Uri GenerateSasUri(BlobSasBuilder builder)
}
BlobUriBuilder sasUri = new BlobUriBuilder(Uri)
{
Query = builder.ToSasQueryParameters(_storageSharedKeyCredential).ToString()
Query = builder.ToSasQueryParameters(SharedKeyCredential).ToString()
};
return sasUri.ToUri();
}
Expand Down Expand Up @@ -3039,7 +3044,7 @@ protected internal virtual BlobServiceClient GetParentBlobServiceClientCore()
ClientSideEncryption,
EncryptionScope,
Pipeline,
_storageSharedKeyCredential);
SharedKeyCredential);
}

return _parentBlobServiceClient;
Expand Down
11 changes: 8 additions & 3 deletions sdk/storage/Azure.Storage.Blobs/src/BlobServiceClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,13 +130,18 @@ public string AccountName
/// <summary>
/// The <see cref="StorageSharedKeyCredential"/> used to authenticate and generate SAS
/// </summary>
private StorageSharedKeyCredential _storageSharedKeyCredential;
private readonly StorageSharedKeyCredential _storageSharedKeyCredential;

/// <summary>
/// Gets the The <see cref="StorageSharedKeyCredential"/> used to authenticate and generate SAS.
/// </summary>
internal virtual StorageSharedKeyCredential SharedKeyCredential => _storageSharedKeyCredential;

/// <summary>
/// Determines whether the client is able to generate a SAS.
/// If the client is authenticated with a <see cref="StorageSharedKeyCredential"/>.
/// </summary>
public bool CanGenerateAccountSasUri => _storageSharedKeyCredential != null;
public bool CanGenerateAccountSasUri => SharedKeyCredential != null;

#region ctors
/// <summary>
Expand Down Expand Up @@ -1859,7 +1864,7 @@ public Uri GenerateAccountSasUri(AccountSasBuilder builder)
nameof(AccountSasServices.Blobs));
}
UriBuilder sasUri = new UriBuilder(Uri);
sasUri.Query = builder.ToSasQueryParameters(_storageSharedKeyCredential).ToString();
sasUri.Query = builder.ToSasQueryParameters(SharedKeyCredential).ToString();
return sasUri.Uri;
}
#endregion
Expand Down
80 changes: 40 additions & 40 deletions sdk/storage/Azure.Storage.Blobs/tests/BlobBaseClientTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5773,39 +5773,39 @@ public void CanGenerateSas_ClientConstructors()
string connectionString = storageConnectionString.ToString(true);

// Act - BlobBaseClient(string connectionString, string blobContainerName, string blobName)
BlobBaseClient blob = new BlobBaseClient(
BlobBaseClient blob = InstrumentClient(new BlobBaseClient(
connectionString,
GetNewContainerName(),
GetNewBlobName());
GetNewBlobName()));
Assert.IsTrue(blob.CanGenerateSasUri);

// Act - BlobBaseClient(string connectionString, string blobContainerName, string blobName, BlobClientOptions options)
BlobBaseClient blob2 = new BlobBaseClient(
BlobBaseClient blob2 = InstrumentClient(new BlobBaseClient(
connectionString,
GetNewContainerName(),
GetNewBlobName(),
GetOptions());
GetOptions()));
Assert.IsTrue(blob2.CanGenerateSasUri);

// Act - BlobBaseClient(Uri blobContainerUri, BlobClientOptions options = default)
BlobBaseClient blob3 = new BlobBaseClient(
BlobBaseClient blob3 = InstrumentClient(new BlobBaseClient(
blobEndpoint,
GetOptions());
GetOptions()));
Assert.IsFalse(blob3.CanGenerateSasUri);

// Act - BlobBaseClient(Uri blobContainerUri, StorageSharedKeyCredential credential, BlobClientOptions options = default)
BlobBaseClient blob4 = new BlobBaseClient(
BlobBaseClient blob4 = InstrumentClient(new BlobBaseClient(
blobEndpoint,
constants.Sas.SharedKeyCredential,
GetOptions());
GetOptions()));
Assert.IsTrue(blob4.CanGenerateSasUri);

// Act - BlobBaseClient(Uri blobContainerUri, TokenCredential credential, BlobClientOptions options = default)
var tokenCredentials = new DefaultAzureCredential();
BlobBaseClient blob5 = new BlobBaseClient(
BlobBaseClient blob5 = InstrumentClient(new BlobBaseClient(
blobEndpoint,
tokenCredentials,
GetOptions());
GetOptions()));
Assert.IsFalse(blob5.CanGenerateSasUri);
}

Expand All @@ -5820,43 +5820,43 @@ public void CanGenerateSas_GetParentBlobContainerClient()
string connectionString = storageConnectionString.ToString(true);

// Act - BlobBaseClient(string connectionString, string blobContainerName, string blobName)
BlobBaseClient blob = new BlobBaseClient(
BlobBaseClient blob = InstrumentClient(new BlobBaseClient(
connectionString,
GetNewContainerName(),
GetNewBlobName());
GetNewBlobName()));
BlobContainerClient container = blob.GetParentBlobContainerClient();
Assert.IsTrue(container.CanGenerateSasUri);

// Act - BlobBaseClient(string connectionString, string blobContainerName, string blobName, BlobClientOptions options)
BlobBaseClient blob2 = new BlobBaseClient(
BlobBaseClient blob2 = InstrumentClient(new BlobBaseClient(
connectionString,
GetNewContainerName(),
GetNewBlobName(),
GetOptions());
GetOptions()));
BlobContainerClient container2 = blob2.GetParentBlobContainerClient();
Assert.IsTrue(container2.CanGenerateSasUri);

// Act - BlobBaseClient(Uri blobContainerUri, BlobClientOptions options = default)
BlobBaseClient blob3 = new BlobBaseClient(
BlobBaseClient blob3 = InstrumentClient(new BlobBaseClient(
blobEndpoint,
GetOptions());
GetOptions()));
BlobContainerClient container3 = blob3.GetParentBlobContainerClient();
Assert.IsFalse(container3.CanGenerateSasUri);

// Act - BlobBaseClient(Uri blobContainerUri, StorageSharedKeyCredential credential, BlobClientOptions options = default)
BlobBaseClient blob4 = new BlobBaseClient(
BlobBaseClient blob4 = InstrumentClient(new BlobBaseClient(
blobEndpoint,
constants.Sas.SharedKeyCredential,
GetOptions());
GetOptions()));
BlobContainerClient container4 = blob4.GetParentBlobContainerClient();
Assert.IsTrue(container4.CanGenerateSasUri);

// Act - BlobBaseClient(Uri blobContainerUri, TokenCredential credential, BlobClientOptions options = default)
var tokenCredentials = new DefaultAzureCredential();
BlobBaseClient blob5 = new BlobBaseClient(
BlobBaseClient blob5 = InstrumentClient(new BlobBaseClient(
blobEndpoint,
tokenCredentials,
GetOptions());
GetOptions()));
BlobContainerClient container5 = blob5.GetParentBlobContainerClient();
Assert.IsFalse(container5.CanGenerateSasUri);
}
Expand All @@ -5872,10 +5872,10 @@ public void CanGenerateSas_WithSnapshot_True()
string connectionString = storageConnectionString.ToString(true);

// Create blob
BlobBaseClient blob = new BlobBaseClient(
BlobBaseClient blob = InstrumentClient(new BlobBaseClient(
connectionString,
GetNewContainerName(),
GetNewBlobName());
GetNewBlobName()));
Assert.IsTrue(blob.CanGenerateSasUri);

// Act
Expand All @@ -5894,9 +5894,9 @@ public void CanGenerateSas_WithSnapshot_False()
var blobEndpoint = new Uri("https://127.0.0.1/" + constants.Sas.Account);

// Create blob
BlobBaseClient blob = new BlobBaseClient(
BlobBaseClient blob = InstrumentClient(new BlobBaseClient(
blobEndpoint,
GetOptions());
GetOptions()));
Assert.IsFalse(blob.CanGenerateSasUri);

// Act
Expand All @@ -5918,10 +5918,10 @@ public void CanGenerateSas_WithVersion_True()
string connectionString = storageConnectionString.ToString(true);

// Create blob
BlobBaseClient blob = new BlobBaseClient(
BlobBaseClient blob = InstrumentClient(new BlobBaseClient(
connectionString,
GetNewContainerName(),
GetNewBlobName());
GetNewBlobName()));
Assert.IsTrue(blob.CanGenerateSasUri);

// Act
Expand All @@ -5940,9 +5940,9 @@ public void CanGenerateSas_WithVersion_False()
var blobEndpoint = new Uri("https://127.0.0.1/" + constants.Sas.Account);

// Create blob
BlobBaseClient blob = new BlobBaseClient(
BlobBaseClient blob = InstrumentClient(new BlobBaseClient(
blobEndpoint,
GetOptions());
GetOptions()));
Assert.IsFalse(blob.CanGenerateSasUri);

// Act
Expand All @@ -5966,11 +5966,11 @@ public void GenerateSas_RequiredParameters()
string blobName = GetNewBlobName();
BlobSasPermissions permissions = BlobSasPermissions.Read;
DateTimeOffset expiresOn = Recording.UtcNow.AddHours(+1);
BlobBaseClient blobClient = new BlobBaseClient(
BlobBaseClient blobClient = InstrumentClient(new BlobBaseClient(
connectionString,
containerName,
blobName,
GetOptions());
GetOptions()));

//Act
Uri sasUri = blobClient.GenerateSasUri(permissions, expiresOn);
Expand Down Expand Up @@ -6003,11 +6003,11 @@ public void GenerateSas_Builder()
BlobSasPermissions permissions = BlobSasPermissions.Read;
DateTimeOffset expiresOn = Recording.UtcNow.AddHours(+1);
DateTimeOffset startsOn = Recording.UtcNow.AddHours(-1);
BlobBaseClient blobClient = new BlobBaseClient(
BlobBaseClient blobClient = InstrumentClient(new BlobBaseClient(
connectionString,
containerName,
blobName,
GetOptions());
GetOptions()));

BlobSasBuilder sasBuilder = new BlobSasBuilder(permissions, expiresOn)
{
Expand Down Expand Up @@ -6046,10 +6046,10 @@ public void GenerateSas_BuilderWrongContainerName()
blobUriBuilder.Path += constants.Sas.Account + "/" + GetNewContainerName() + "/" + blobName;
BlobSasPermissions permissions = BlobSasPermissions.Read;
DateTimeOffset expiresOn = Recording.UtcNow.AddHours(+1);
BlobBaseClient blobClient = new BlobBaseClient(
BlobBaseClient blobClient = InstrumentClient(new BlobBaseClient(
blobUriBuilder.Uri,
constants.Sas.SharedKeyCredential,
GetOptions());
GetOptions()));

BlobSasBuilder sasBuilder = new BlobSasBuilder(permissions, expiresOn)
{
Expand Down Expand Up @@ -6083,10 +6083,10 @@ public void GenerateSas_BuilderWrongBlobName()
blobUriBuilder.Path += constants.Sas.Account + "/" + containerName + "/" + GetNewBlobName();
BlobSasPermissions permissions = BlobSasPermissions.Read;
DateTimeOffset expiresOn = Recording.UtcNow.AddHours(+1);
BlobBaseClient blobClient = new BlobBaseClient(
BlobBaseClient blobClient = InstrumentClient(new BlobBaseClient(
blobUriBuilder.Uri,
constants.Sas.SharedKeyCredential,
GetOptions());
GetOptions()));

BlobSasBuilder sasBuilder = new BlobSasBuilder(permissions, expiresOn)
{
Expand Down Expand Up @@ -6123,10 +6123,10 @@ public void GenerateSas_BuilderWrongSnapshot()
blobUriBuilder.Path += constants.Sas.Account + "/" + containerName + "/" + blobName;
BlobSasPermissions permissions = BlobSasPermissions.Read;
DateTimeOffset expiresOn = Recording.UtcNow.AddHours(+1);
BlobBaseClient blobClient = new BlobBaseClient(
BlobBaseClient blobClient = InstrumentClient(new BlobBaseClient(
blobUriBuilder.Uri,
constants.Sas.SharedKeyCredential,
GetOptions());
GetOptions()));

BlobSasBuilder sasBuilder = new BlobSasBuilder(permissions, expiresOn)
{
Expand Down Expand Up @@ -6164,10 +6164,10 @@ public void GenerateSas_BuilderWrongVersion()
blobUriBuilder.Path += constants.Sas.Account + "/" + containerName + "/" + blobName;
BlobSasPermissions permissions = BlobSasPermissions.Read;
DateTimeOffset expiresOn = Recording.UtcNow.AddHours(+1);
BlobBaseClient blobClient = new BlobBaseClient(
BlobBaseClient blobClient = InstrumentClient(new BlobBaseClient(
blobUriBuilder.Uri,
constants.Sas.SharedKeyCredential,
GetOptions());
GetOptions()));

BlobSasBuilder sasBuilder = new BlobSasBuilder(permissions, expiresOn)
{
Expand Down
Loading

0 comments on commit c7261f9

Please sign in to comment.