diff --git a/sdk/storage/Azure.Storage.Blobs.Batch/tests/BlobBatchClientTests.cs b/sdk/storage/Azure.Storage.Blobs.Batch/tests/BlobBatchClientTests.cs
index 6c11da0c6d7b..4a7c13577248 100644
--- a/sdk/storage/Azure.Storage.Blobs.Batch/tests/BlobBatchClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs.Batch/tests/BlobBatchClientTests.cs
@@ -208,6 +208,24 @@ public async Task Batch_SasUri_NotOwner()
Assert.AreEqual(403, ex.Status);
}
+ [Test]
+ [LiveOnly]
+ public async Task Batch_AzureSasCredential()
+ {
+ // Create a container using SAS for Auth
+ await using DisposingContainer test = await GetTestContainerAsync();
+
+ var serviceClient = GetServiceClient_SharedKey();
+ var sas = GetAccountSasCredentials().SasToken;
+ var sasServiceClient = InstrumentClient(new BlobServiceClient(serviceClient.Uri, new AzureSasCredential(sas), GetOptions()));
+ await using TestScenario scenario = Scenario(sasServiceClient);
+ Uri[] blobs = await scenario.CreateBlobUrisAsync(test.Container, 2);
+ BlobBatchClient client = scenario.GetBlobBatchClient();
+ Response[] responses = await client.DeleteBlobsAsync(blobs);
+
+ scenario.AssertStatus(202, responses);
+ }
+
// TODO: Add a requirement that one of the test tenants is in a
// different account so we can verify batch requests fail across
// multiple storage accounts
diff --git a/sdk/storage/Azure.Storage.Blobs.ChangeFeed/api/Azure.Storage.Blobs.ChangeFeed.netstandard2.0.cs b/sdk/storage/Azure.Storage.Blobs.ChangeFeed/api/Azure.Storage.Blobs.ChangeFeed.netstandard2.0.cs
index b865063e4a1c..d2f973c01ebb 100644
--- a/sdk/storage/Azure.Storage.Blobs.ChangeFeed/api/Azure.Storage.Blobs.ChangeFeed.netstandard2.0.cs
+++ b/sdk/storage/Azure.Storage.Blobs.ChangeFeed/api/Azure.Storage.Blobs.ChangeFeed.netstandard2.0.cs
@@ -5,6 +5,7 @@ public partial class BlobChangeFeedClient
protected BlobChangeFeedClient() { }
public BlobChangeFeedClient(string connectionString) { }
public BlobChangeFeedClient(string connectionString, Azure.Storage.Blobs.BlobClientOptions options) { }
+ public BlobChangeFeedClient(System.Uri serviceUri, Azure.AzureSasCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobChangeFeedClient(System.Uri serviceUri, Azure.Core.TokenCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobChangeFeedClient(System.Uri serviceUri, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobChangeFeedClient(System.Uri serviceUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
diff --git a/sdk/storage/Azure.Storage.Blobs.ChangeFeed/src/BlobChangeFeedClient.cs b/sdk/storage/Azure.Storage.Blobs.ChangeFeed/src/BlobChangeFeedClient.cs
index f5ada5deee13..ca8c2d582dc7 100644
--- a/sdk/storage/Azure.Storage.Blobs.ChangeFeed/src/BlobChangeFeedClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs.ChangeFeed/src/BlobChangeFeedClient.cs
@@ -111,6 +111,31 @@ public BlobChangeFeedClient(Uri serviceUri, StorageSharedKeyCredential credentia
_blobServiceClient = new BlobServiceClient(serviceUri, credential, options);
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the blob service.
+ /// This is likely to be similar to "https://{account_name}.blob.core.windows.net".
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public BlobChangeFeedClient(Uri serviceUri, AzureSasCredential credential, BlobClientOptions options = default)
+ {
+ _blobServiceClient = new BlobServiceClient(serviceUri, credential, options);
+ }
+
///
/// Initializes a new instance of the
/// class.
diff --git a/sdk/storage/Azure.Storage.Blobs/CHANGELOG.md b/sdk/storage/Azure.Storage.Blobs/CHANGELOG.md
index 1831cc4ca348..8692585a8719 100644
--- a/sdk/storage/Azure.Storage.Blobs/CHANGELOG.md
+++ b/sdk/storage/Azure.Storage.Blobs/CHANGELOG.md
@@ -3,6 +3,7 @@
## 12.8.0-beta.2 (Unreleased)
- Fixed bug where the Stream returned by BlobBaseClient.OpenRead() would return a different Length after calls to Seek().
- Fixed bug where BlobBaseClient.Exists() did not function correctly for blob encrypted with Customer Provided Key or Encryption Scope.
+- Added support for AzureSasCredential. That allows SAS rotation for long living clients.
## 12.8.0-beta.1 (2020-12-07)
- Added support for service version 2020-04-08.
diff --git a/sdk/storage/Azure.Storage.Blobs/api/Azure.Storage.Blobs.netstandard2.0.cs b/sdk/storage/Azure.Storage.Blobs/api/Azure.Storage.Blobs.netstandard2.0.cs
index b8dda3af5a3b..5853aa3df98d 100644
--- a/sdk/storage/Azure.Storage.Blobs/api/Azure.Storage.Blobs.netstandard2.0.cs
+++ b/sdk/storage/Azure.Storage.Blobs/api/Azure.Storage.Blobs.netstandard2.0.cs
@@ -5,6 +5,7 @@ public partial class BlobClient : Azure.Storage.Blobs.Specialized.BlobBaseClient
protected BlobClient() { }
public BlobClient(string connectionString, string blobContainerName, string blobName) { }
public BlobClient(string connectionString, string blobContainerName, string blobName, Azure.Storage.Blobs.BlobClientOptions options) { }
+ public BlobClient(System.Uri blobUri, Azure.AzureSasCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobClient(System.Uri blobUri, Azure.Core.TokenCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobClient(System.Uri blobUri, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobClient(System.Uri blobUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
@@ -60,6 +61,7 @@ public partial class BlobContainerClient
protected BlobContainerClient() { }
public BlobContainerClient(string connectionString, string blobContainerName) { }
public BlobContainerClient(string connectionString, string blobContainerName, Azure.Storage.Blobs.BlobClientOptions options) { }
+ public BlobContainerClient(System.Uri blobContainerUri, Azure.AzureSasCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobContainerClient(System.Uri blobContainerUri, Azure.Core.TokenCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobContainerClient(System.Uri blobContainerUri, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobContainerClient(System.Uri blobContainerUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
@@ -119,6 +121,7 @@ public partial class BlobServiceClient
protected BlobServiceClient() { }
public BlobServiceClient(string connectionString) { }
public BlobServiceClient(string connectionString, Azure.Storage.Blobs.BlobClientOptions options) { }
+ public BlobServiceClient(System.Uri serviceUri, Azure.AzureSasCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobServiceClient(System.Uri serviceUri, Azure.Core.TokenCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobServiceClient(System.Uri serviceUri, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobServiceClient(System.Uri serviceUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
@@ -1224,6 +1227,7 @@ public partial class AppendBlobClient : Azure.Storage.Blobs.Specialized.BlobBase
protected AppendBlobClient() { }
public AppendBlobClient(string connectionString, string blobContainerName, string blobName) { }
public AppendBlobClient(string connectionString, string blobContainerName, string blobName, Azure.Storage.Blobs.BlobClientOptions options) { }
+ public AppendBlobClient(System.Uri blobUri, Azure.AzureSasCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public AppendBlobClient(System.Uri blobUri, Azure.Core.TokenCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public AppendBlobClient(System.Uri blobUri, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public AppendBlobClient(System.Uri blobUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
@@ -1257,6 +1261,7 @@ public partial class BlobBaseClient
protected BlobBaseClient() { }
public BlobBaseClient(string connectionString, string blobContainerName, string blobName) { }
public BlobBaseClient(string connectionString, string blobContainerName, string blobName, Azure.Storage.Blobs.BlobClientOptions options) { }
+ public BlobBaseClient(System.Uri blobUri, Azure.AzureSasCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobBaseClient(System.Uri blobUri, Azure.Core.TokenCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobBaseClient(System.Uri blobUri, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlobBaseClient(System.Uri blobUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
@@ -1361,6 +1366,7 @@ public partial class BlockBlobClient : Azure.Storage.Blobs.Specialized.BlobBaseC
protected BlockBlobClient() { }
public BlockBlobClient(string connectionString, string containerName, string blobName) { }
public BlockBlobClient(string connectionString, string blobContainerName, string blobName, Azure.Storage.Blobs.BlobClientOptions options) { }
+ public BlockBlobClient(System.Uri blobUri, Azure.AzureSasCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlockBlobClient(System.Uri blobUri, Azure.Core.TokenCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlockBlobClient(System.Uri blobUri, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public BlockBlobClient(System.Uri blobUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
@@ -1407,6 +1413,7 @@ public partial class PageBlobClient : Azure.Storage.Blobs.Specialized.BlobBaseCl
protected PageBlobClient() { }
public PageBlobClient(string connectionString, string blobContainerName, string blobName) { }
public PageBlobClient(string connectionString, string blobContainerName, string blobName, Azure.Storage.Blobs.BlobClientOptions options) { }
+ public PageBlobClient(System.Uri blobUri, Azure.AzureSasCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public PageBlobClient(System.Uri blobUri, Azure.Core.TokenCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public PageBlobClient(System.Uri blobUri, Azure.Storage.Blobs.BlobClientOptions options = null) { }
public PageBlobClient(System.Uri blobUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Blobs.BlobClientOptions options = null) { }
diff --git a/sdk/storage/Azure.Storage.Blobs/src/AppendBlobClient.cs b/sdk/storage/Azure.Storage.Blobs/src/AppendBlobClient.cs
index a75d4863f577..b570b808adc7 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/AppendBlobClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/AppendBlobClient.cs
@@ -149,6 +149,34 @@ public AppendBlobClient(Uri blobUri, StorageSharedKeyCredential credential, Blob
AssertNoClientSideEncryption(options);
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the append blob that includes the
+ /// name of the account, the name of the container, and the name of
+ /// the blob.
+ /// This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}".
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public AppendBlobClient(Uri blobUri, AzureSasCredential credential, BlobClientOptions options = default)
+ : base(blobUri, credential, options)
+ {
+ AssertNoClientSideEncryption(options);
+ }
+
///
/// Initializes a new instance of the
/// class.
diff --git a/sdk/storage/Azure.Storage.Blobs/src/Azure.Storage.Blobs.csproj b/sdk/storage/Azure.Storage.Blobs/src/Azure.Storage.Blobs.csproj
index 53a9f562f694..65f17fbf0637 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/Azure.Storage.Blobs.csproj
+++ b/sdk/storage/Azure.Storage.Blobs/src/Azure.Storage.Blobs.csproj
@@ -24,7 +24,9 @@
+
+
diff --git a/sdk/storage/Azure.Storage.Blobs/src/BlobBaseClient.cs b/sdk/storage/Azure.Storage.Blobs/src/BlobBaseClient.cs
index 92a05e4d0aed..fe9654dafe77 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/BlobBaseClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/BlobBaseClient.cs
@@ -301,6 +301,33 @@ public BlobBaseClient(Uri blobUri, StorageSharedKeyCredential credential, BlobCl
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the blob that includes the
+ /// name of the account, the name of the container, and the name of
+ /// the blob.
+ /// This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}".
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public BlobBaseClient(Uri blobUri, AzureSasCredential credential, BlobClientOptions options = default)
+ : this(blobUri, credential.AsPolicy(blobUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -352,6 +379,7 @@ internal BlobBaseClient(
BlobClientOptions options,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(blobUri, nameof(blobUri));
options ??= new BlobClientOptions();
_uri = blobUri;
if (!string.IsNullOrEmpty(blobUri.Query))
diff --git a/sdk/storage/Azure.Storage.Blobs/src/BlobClient.cs b/sdk/storage/Azure.Storage.Blobs/src/BlobClient.cs
index 4e83b5ad338a..983b4c967f33 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/BlobClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/BlobClient.cs
@@ -130,6 +130,33 @@ public BlobClient(Uri blobUri, StorageSharedKeyCredential credential, BlobClient
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the blob that includes the
+ /// name of the account, the name of the container, and the name of
+ /// the blob.
+ /// This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}".
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public BlobClient(Uri blobUri, AzureSasCredential credential, BlobClientOptions options = default)
+ : base(blobUri, credential, options)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
diff --git a/sdk/storage/Azure.Storage.Blobs/src/BlobContainerClient.cs b/sdk/storage/Azure.Storage.Blobs/src/BlobContainerClient.cs
index de69718e3a33..bce659de7a9b 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/BlobContainerClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/BlobContainerClient.cs
@@ -275,6 +275,32 @@ public BlobContainerClient(Uri blobContainerUri, StorageSharedKeyCredential cred
_storageSharedKeyCredential = credential;
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the blob container that includes the
+ /// name of the account and the name of the container.
+ /// This is likely to be similar to "https://{account_name}.blob.core.windows.net/{container_name}".
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public BlobContainerClient(Uri blobContainerUri, AzureSasCredential credential, BlobClientOptions options = default)
+ : this(blobContainerUri, credential.AsPolicy(blobContainerUri), options)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -317,6 +343,7 @@ public BlobContainerClient(Uri blobContainerUri, TokenCredential credential, Blo
///
internal BlobContainerClient(Uri blobContainerUri, HttpPipelinePolicy authentication, BlobClientOptions options)
{
+ Argument.AssertNotNull(blobContainerUri, nameof(blobContainerUri));
_uri = blobContainerUri;
options ??= new BlobClientOptions();
_pipeline = options.Build(authentication);
diff --git a/sdk/storage/Azure.Storage.Blobs/src/BlobServiceClient.cs b/sdk/storage/Azure.Storage.Blobs/src/BlobServiceClient.cs
index dc901c09e645..7576d91ad0ef 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/BlobServiceClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/BlobServiceClient.cs
@@ -242,6 +242,31 @@ public BlobServiceClient(Uri serviceUri, StorageSharedKeyCredential credential,
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the blob service.
+ /// This is likely to be similar to "https://{account_name}.blob.core.windows.net".
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public BlobServiceClient(Uri serviceUri, AzureSasCredential credential, BlobClientOptions options = default)
+ : this(serviceUri, credential.AsPolicy(serviceUri), options ?? new BlobClientOptions())
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -337,6 +362,7 @@ internal BlobServiceClient(
HttpPipeline pipeline,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(serviceUri, nameof(serviceUri));
_uri = serviceUri;
_authenticationPolicy = authentication;
_pipeline = pipeline;
diff --git a/sdk/storage/Azure.Storage.Blobs/src/BlockBlobClient.cs b/sdk/storage/Azure.Storage.Blobs/src/BlockBlobClient.cs
index 2cbea762261a..cda27c1fe91c 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/BlockBlobClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/BlockBlobClient.cs
@@ -235,6 +235,33 @@ public BlockBlobClient(Uri blobUri, StorageSharedKeyCredential credential, BlobC
AssertNoClientSideEncryption(options);
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the blob that includes the
+ /// name of the account, the name of the container, and the name of
+ /// the blob.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public BlockBlobClient(Uri blobUri, AzureSasCredential credential, BlobClientOptions options = default)
+ : base(blobUri, credential, options)
+ {
+ AssertNoClientSideEncryption(options);
+ }
+
///
/// Initializes a new instance of the
/// class.
diff --git a/sdk/storage/Azure.Storage.Blobs/src/PageBlobClient.cs b/sdk/storage/Azure.Storage.Blobs/src/PageBlobClient.cs
index 5f1b50b68694..13cb1b32ddfe 100644
--- a/sdk/storage/Azure.Storage.Blobs/src/PageBlobClient.cs
+++ b/sdk/storage/Azure.Storage.Blobs/src/PageBlobClient.cs
@@ -150,6 +150,33 @@ public PageBlobClient(Uri blobUri, StorageSharedKeyCredential credential, BlobCl
AssertNoClientSideEncryption(options);
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the page blob that includes the
+ /// name of the account, the name of the blob container, and the name of
+ /// the blob.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public PageBlobClient(Uri blobUri, AzureSasCredential credential, BlobClientOptions options = default)
+ : base(blobUri, credential, options)
+ {
+ AssertNoClientSideEncryption(options);
+ }
+
///
/// Initializes a new instance of the
/// class.
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/AppendBlobClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/AppendBlobClientTests.cs
index 6ae8ed2c3d8d..ebbe623496f5 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/AppendBlobClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/AppendBlobClientTests.cs
@@ -12,6 +12,7 @@
using Azure.Core.TestFramework;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
+using Azure.Storage.Sas;
using Azure.Storage.Test;
using Azure.Storage.Test.Shared;
using NUnit.Framework;
@@ -117,6 +118,39 @@ public void Ctor_CPK_EncryptionScope()
new ArgumentException("CustomerProvidedKey and EncryptionScope cannot both be set"));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetContainerSas(test.Container.Name, BlobContainerSasPermissions.All).ToString();
+ var client = test.Container.GetAppendBlobClient(GetNewBlobName());
+ await client.CreateAsync();
+ Uri blobUri = client.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new AppendBlobClient(blobUri, new AzureSasCredential(sas), GetOptions()));
+ BlobProperties blobProperties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(blobProperties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetContainerSas(test.Container.Name, BlobContainerSasPermissions.All).ToString();
+ Uri blobUri = test.Container.GetAppendBlobClient("foo").Uri;
+ blobUri = new Uri(blobUri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new AppendBlobClient(blobUri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public void WithSnapshot()
{
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/BlobBaseClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/BlobBaseClientTests.cs
index b5da78c8f4b5..b05a0e79de64 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/BlobBaseClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/BlobBaseClientTests.cs
@@ -3,16 +3,13 @@
using System;
using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Linq;
using System.Net;
-using System.Reflection.Metadata;
using System.Security.Cryptography;
using System.Threading;
using System.Threading.Tasks;
using Azure.Core;
-using Azure.Core.Pipeline;
using Azure.Core.TestFramework;
using Azure.Identity;
using Azure.Storage.Blobs.Models;
@@ -178,6 +175,66 @@ public void Ctor_CPK_EncryptionScope()
new ArgumentException("CustomerProvidedKey and EncryptionScope cannot both be set"));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetContainerSas(test.Container.Name, BlobContainerSasPermissions.All).ToString();
+ var client = test.Container.GetBlobClient(GetNewBlobName());
+ await client.UploadAsync(new MemoryStream());
+ Uri blobUri = client.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new BlobBaseClient(blobUri, new AzureSasCredential(sas), GetOptions()));
+ BlobProperties blobProperties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(blobProperties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_UserDelegationSAS()
+ {
+ // Arrange
+ BlobServiceClient oauthService = GetServiceClient_OauthAccount();
+ await using DisposingContainer test = await GetTestContainerAsync(oauthService);
+ var client = test.Container.GetBlobClient(GetNewBlobName());
+ await client.UploadAsync(new MemoryStream());
+ Uri blobUri = client.Uri;
+ Response userDelegationKey = await oauthService.GetUserDelegationKeyAsync(
+ startsOn: null,
+ expiresOn: Recording.UtcNow.AddHours(1));
+ var sasBuilder = new BlobSasBuilder(BlobSasPermissions.All, Recording.UtcNow.AddHours(1))
+ {
+ BlobContainerName = client.BlobContainerName,
+ BlobName = client.Name,
+ };
+ var sas = sasBuilder.ToSasQueryParameters(userDelegationKey.Value, client.AccountName).ToString();
+
+ // Act
+ var sasClient = InstrumentClient(new BlobBaseClient(blobUri, new AzureSasCredential(sas), GetOptions()));
+ BlobProperties blobProperties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(blobProperties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetContainerSas(test.Container.Name, BlobContainerSasPermissions.All).ToString();
+ Uri blobUri = test.Container.GetBlobClient("foo").Uri;
+ blobUri = new Uri(blobUri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new BlobBaseClient(blobUri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
#region Sequential Download
[Test]
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/BlobClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/BlobClientTests.cs
index 86c48143f2a7..99e21d86a820 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/BlobClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/BlobClientTests.cs
@@ -10,6 +10,7 @@
using Azure.Core.TestFramework;
using Azure.Identity;
using Azure.Storage.Blobs.Models;
+using Azure.Storage.Sas;
using Azure.Storage.Test;
using Azure.Storage.Test.Shared;
using Azure.Storage.Tests;
@@ -139,6 +140,39 @@ public void Ctor_CPK_EncryptionScope()
new ArgumentException("CustomerProvidedKey and EncryptionScope cannot both be set"));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetContainerSas(test.Container.Name, BlobContainerSasPermissions.All).ToString();
+ var client = test.Container.GetBlobClient(GetNewBlobName());
+ await client.UploadAsync(new MemoryStream());
+ Uri blobUri = client.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new BlobClient(blobUri, new AzureSasCredential(sas), GetOptions()));
+ BlobProperties blobProperties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(blobProperties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetContainerSas(test.Container.Name, BlobContainerSasPermissions.All).ToString();
+ Uri blobUri = test.Container.GetBlobClient("foo").Uri;
+ blobUri = new Uri(blobUri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new BlobClient(blobUri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
#region Upload
[Test]
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/BlockBlobClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/BlockBlobClientTests.cs
index 93715b99d113..132a1587d729 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/BlockBlobClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/BlockBlobClientTests.cs
@@ -124,6 +124,39 @@ public void Ctor_CPK_EncryptionScope()
new ArgumentException("CustomerProvidedKey and EncryptionScope cannot both be set"));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetContainerSas(test.Container.Name, BlobContainerSasPermissions.All).ToString();
+ var client = test.Container.GetBlobClient(GetNewBlobName());
+ await client.UploadAsync(new MemoryStream());
+ Uri blobUri = client.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new BlockBlobClient(blobUri, new AzureSasCredential(sas), GetOptions()));
+ BlobProperties blobProperties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(blobProperties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetContainerSas(test.Container.Name, BlobContainerSasPermissions.All).ToString();
+ Uri blobUri = test.Container.GetBlobClient("foo").Uri;
+ blobUri = new Uri(blobUri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new BlockBlobClient(blobUri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public void WithSnapshot()
{
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/ContainerClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/ContainerClientTests.cs
index 81acec909cc4..7333c3109b65 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/ContainerClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/ContainerClientTests.cs
@@ -294,6 +294,37 @@ public void Ctor_CPK_EncryptionScope()
new ArgumentException("CustomerProvidedKey and EncryptionScope cannot both be set"));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetAccountSasCredentials().SasToken;
+ Uri uri = test.Container.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new BlobContainerClient(uri, new AzureSasCredential(sas), GetOptions()));
+ BlobContainerProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetAccountSasCredentials().SasToken;
+ Uri uri = test.Container.Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new BlobContainerClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public async Task CreateAsync_WithSharedKey()
{
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/PageBlobClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/PageBlobClientTests.cs
index 75e0b6ed6418..5347001c64fe 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/PageBlobClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/PageBlobClientTests.cs
@@ -14,6 +14,7 @@
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
using Azure.Storage.Blobs.Tests;
+using Azure.Storage.Sas;
using Azure.Storage.Test;
using Azure.Storage.Test.Shared;
using Azure.Storage.Tests;
@@ -108,6 +109,39 @@ public void Ctor_CPK_Http()
new ArgumentException("Cannot use client-provided key without HTTPS."));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetContainerSas(test.Container.Name, BlobContainerSasPermissions.All).ToString();
+ var client = test.Container.GetPageBlobClient(GetNewBlobName());
+ await client.CreateAsync(1024);
+ Uri blobUri = client.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new PageBlobClient(blobUri, new AzureSasCredential(sas), GetOptions()));
+ BlobProperties blobProperties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(blobProperties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetContainerSas(test.Container.Name, BlobContainerSasPermissions.All).ToString();
+ Uri blobUri = test.Container.GetPageBlobClient("foo").Uri;
+ blobUri = new Uri(blobUri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new PageBlobClient(blobUri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public async Task CreateAsync_Min()
{
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/ServiceClientTests.cs b/sdk/storage/Azure.Storage.Blobs/tests/ServiceClientTests.cs
index 4a70b8cdbe68..9fb2e4fa7eae 100644
--- a/sdk/storage/Azure.Storage.Blobs/tests/ServiceClientTests.cs
+++ b/sdk/storage/Azure.Storage.Blobs/tests/ServiceClientTests.cs
@@ -120,6 +120,37 @@ public void Ctor_CPK_EncryptionScope()
new ArgumentException("CustomerProvidedKey and EncryptionScope cannot both be set"));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetAccountSasCredentials().SasToken;
+ Uri uri = test.Container.GetParentBlobServiceClient().Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new BlobServiceClient(uri, new AzureSasCredential(sas), GetOptions()));
+ BlobServiceProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ await using DisposingContainer test = await GetTestContainerAsync();
+ string sas = GetAccountSasCredentials().SasToken;
+ Uri uri = test.Container.GetParentBlobServiceClient().Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new BlobServiceClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public async Task ListContainersSegmentAsync()
{
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..1a6ddc2c9f0b
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,146 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-d113691a-3344-e8ea-85eb-8bed298204ae?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-ea7a4f7714f05b4ba57b41e15749eb18-862ca2ec78419143-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "68d26bf9-b303-5cb6-602a-d3af64e5f3b0",
+ "x-ms-date": "Fri, 18 Dec 2020 21:23:29 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:23:29 GMT",
+ "ETag": "\u00220x8D8A39B2A7CFD9B\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "68d26bf9-b303-5cb6-602a-d3af64e5f3b0",
+ "x-ms-request-id": "55e733d8-801e-0056-4084-d5bc83000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-d113691a-3344-e8ea-85eb-8bed298204ae/test-blob-838dd87f-859d-2d3e-f154-01636640824d",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "traceparent": "00-4e976030688e444d889e81f188603d23-d6dee94c267f934b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "8d2a1ced-a4ab-74e3-2ca5-76afb253f520",
+ "x-ms-date": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:23:29 GMT",
+ "ETag": "\u00220x8D8A39B2AA2E864\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "8d2a1ced-a4ab-74e3-2ca5-76afb253f520",
+ "x-ms-request-id": "55e73461-801e-0056-4084-d5bc83000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-d113691a-3344-e8ea-85eb-8bed298204ae/test-blob-838dd87f-859d-2d3e-f154-01636640824d?sv=2020-04-08\u0026st=2020-12-18T20:23:30Z\u0026se=2020-12-18T22:23:30Z\u0026sr=c\u0026sp=racwdxlt\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-e53b109667a079408138760dfee860ab-3ff6345531a51e4c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "4a7516f9-f515-1fa1-267e-910925fb34c8",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "ETag": "\u00220x8D8A39B2AA2E864\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-blob-committed-block-count": "0",
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "4a7516f9-f515-1fa1-267e-910925fb34c8",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "110d6877-101e-003e-7c84-d5e2d2000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-d113691a-3344-e8ea-85eb-8bed298204ae?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-34fef742431f9e4d8a5752ff46a347f2-681396de586b2c49-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "9bb64d90-abdd-b30a-e5cb-3372a5f7be31",
+ "x-ms-date": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:23:29 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "9bb64d90-abdd-b30a-e5cb-3372a5f7be31",
+ "x-ms-request-id": "55e734aa-801e-0056-7f84-d5bc83000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:23:30.2090858-08:00",
+ "RandomSeed": "366716381",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..ae17c77c9ec4
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,146 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-1fa7ebe7-e6b4-b675-7bfb-220d1dba1509?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-5a592a3cf252c341bdb9d7ac482cf039-b9f41c5e09ad574f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "e038e4be-fb89-0dae-0da0-3c208f8a47f7",
+ "x-ms-date": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:23:29 GMT",
+ "ETag": "\u00220x8D8A39B2ACA0882\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e038e4be-fb89-0dae-0da0-3c208f8a47f7",
+ "x-ms-request-id": "17a7d92f-401e-0026-3c84-d5cf47000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-1fa7ebe7-e6b4-b675-7bfb-220d1dba1509/test-blob-3ae23f72-42a2-1cb2-30cb-5fde3f6e21ac",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "traceparent": "00-1607000add020149b39c988897be34f9-3773ecdcda46ea48-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "5595af8e-47ec-7b7b-311b-afbd9bcfcd9e",
+ "x-ms-date": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:23:29 GMT",
+ "ETag": "\u00220x8D8A39B2AD068D5\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "5595af8e-47ec-7b7b-311b-afbd9bcfcd9e",
+ "x-ms-request-id": "17a7d94b-401e-0026-5384-d5cf47000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-1fa7ebe7-e6b4-b675-7bfb-220d1dba1509/test-blob-3ae23f72-42a2-1cb2-30cb-5fde3f6e21ac?sv=2020-04-08\u0026st=2020-12-18T20:23:30Z\u0026se=2020-12-18T22:23:30Z\u0026sr=c\u0026sp=racwdxlt\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-cda8620852fd614ebf70352540ccd0ff-f02382f6679c344d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "90502a7f-ccd8-31bf-88d3-086685c2f3ca",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "ETag": "\u00220x8D8A39B2AD068D5\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-blob-committed-block-count": "0",
+ "x-ms-blob-type": "AppendBlob",
+ "x-ms-client-request-id": "90502a7f-ccd8-31bf-88d3-086685c2f3ca",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "a881d7de-401e-0069-4084-d50b5f000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-1fa7ebe7-e6b4-b675-7bfb-220d1dba1509?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-8e0d1b4ca90092419da05874258261d0-c1b7d4f9f3c8d44f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "703d1b8d-3d7f-b2c5-d075-0267050eb6fc",
+ "x-ms-date": "Fri, 18 Dec 2020 21:23:30 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:23:29 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "703d1b8d-3d7f-b2c5-d075-0267050eb6fc",
+ "x-ms-request-id": "17a7d996-401e-0026-1784-d5cf47000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:23:30.6646060-08:00",
+ "RandomSeed": "366884494",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..1d81aac02a3a
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-2fa5ce91-f46e-a5a4-1ed6-b69686b9c80b?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-505b541a223bd643a4c5b7b1ab9c3f24-495fedf949c86d4b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "a6da75e9-cf17-bd09-adc3-a048a52394f4",
+ "x-ms-date": "Fri, 18 Dec 2020 21:23:50 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:23:50 GMT",
+ "ETag": "\u00220x8D8A39B36D6A0BD\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:23:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "a6da75e9-cf17-bd09-adc3-a048a52394f4",
+ "x-ms-request-id": "80810a79-e01e-002b-4284-d5204b000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-2fa5ce91-f46e-a5a4-1ed6-b69686b9c80b?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-c31f63c8e93be1489656d3bdc9984422-2f6fe2566e8bdb4b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "10adcaf7-21df-32f3-eb6a-860357a868d2",
+ "x-ms-date": "Fri, 18 Dec 2020 21:23:51 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:23:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "10adcaf7-21df-32f3-eb6a-860357a868d2",
+ "x-ms-request-id": "80810af3-e01e-002b-2d84-d5204b000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:23:50.9577225-08:00",
+ "RandomSeed": "1297111434",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..5d82fc176228
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/AppendBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-24a41bc9-ad8a-b712-8a8d-30f969b0f758?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-f5b5db1707aa1b46b437bd2e301dc75e-e477e2176396d44f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "b19af8c4-1e8a-e3d2-4b7c-aaceae5b7537",
+ "x-ms-date": "Fri, 18 Dec 2020 21:23:51 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:23:51 GMT",
+ "ETag": "\u00220x8D8A39B371D4391\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:23:51 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b19af8c4-1e8a-e3d2-4b7c-aaceae5b7537",
+ "x-ms-request-id": "a8e174ad-a01e-0063-2b84-d512d6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-24a41bc9-ad8a-b712-8a8d-30f969b0f758?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-fe06c39afb00c940a9825d0c342cb72e-3ac426ab228c0a4f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "713596ff-4515-e2ce-6e8d-cd7f270114bb",
+ "x-ms-date": "Fri, 18 Dec 2020 21:23:51 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:23:51 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "713596ff-4515-e2ce-6e8d-cd7f270114bb",
+ "x-ms-request-id": "a8e174cc-a01e-0063-4384-d512d6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:23:51.3397164-08:00",
+ "RandomSeed": "1252667018",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..41319c49a2da
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,151 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-f5bf1ec4-97f3-79c4-ca71-ce560b42ce04?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-d3a09545b0860f41b7252de4bda30861-c085f3f61aacbc4a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "a6cf4cd9-224a-d5bd-53e2-9ed34147960b",
+ "x-ms-date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "ETag": "\u00220x8D8A39A3EA47D64\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "a6cf4cd9-224a-d5bd-53e2-9ed34147960b",
+ "x-ms-request-id": "807dd4e2-e01e-002b-1683-d5204b000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-f5bf1ec4-97f3-79c4-ca71-ce560b42ce04/test-blob-a2841fe7-f650-c631-5843-338dca3c329d",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-995629efa032614aa966f70b5116929d-fb5fa5a65cb72546-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "27a0c2d0-b9a7-e2f4-1b09-4d07ee300b16",
+ "x-ms-date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": [],
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "ETag": "\u00220x8D8A39A3EC6E23C\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "27a0c2d0-b9a7-e2f4-1b09-4d07ee300b16",
+ "x-ms-content-crc64": "AAAAAAAAAAA=",
+ "x-ms-request-id": "807dd57e-e01e-002b-2483-d5204b000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-f5bf1ec4-97f3-79c4-ca71-ce560b42ce04/test-blob-a2841fe7-f650-c631-5843-338dca3c329d?sv=2020-04-08\u0026st=2020-12-18T20:16:54Z\u0026se=2020-12-18T22:16:54Z\u0026sr=c\u0026sp=racwdxlt\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-c1e285f7c37e89458620e8afaa5a053e-a5e751390d219e49-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "07bcb907-0a9c-5af5-9599-a369dab1d647",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "ETag": "\u00220x8D8A39A3EC6E23C\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "07bcb907-0a9c-5af5-9599-a369dab1d647",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "241dce67-e01e-004d-5283-d59211000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-f5bf1ec4-97f3-79c4-ca71-ce560b42ce04?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-11b15e50d036b3409f75476a7f4a8c30-15f266fb27ab054d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "3500e6a1-0373-a57a-0b64-2230342fe4b4",
+ "x-ms-date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "3500e6a1-0373-a57a-0b64-2230342fe4b4",
+ "x-ms-request-id": "807dd5e7-e01e-002b-0a83-d5204b000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:16:54.5238033-08:00",
+ "RandomSeed": "243748226",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..8443591490e4
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,151 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-1d6a7af0-ddec-bb83-7510-adf8646fd6a9?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-521775fa66173a438d87f402c85605fd-89158fb98c29234d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "06b9a890-146e-13c6-8009-1a4b430fecdd",
+ "x-ms-date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "ETag": "\u00220x8D8A39A3EF9BF0B\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "06b9a890-146e-13c6-8009-1a4b430fecdd",
+ "x-ms-request-id": "32024002-801e-005d-2583-d5a4f7000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-1d6a7af0-ddec-bb83-7510-adf8646fd6a9/test-blob-d05bacba-fa19-7026-d375-d180f7b89aeb",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-91404992961dfb469c6af57304bd29e6-b2c675cf8db8494e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "740f0880-1c2f-9544-8148-32f842461bc7",
+ "x-ms-date": "Fri, 18 Dec 2020 21:16:55 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": [],
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "ETag": "\u00220x8D8A39A3EFFD666\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:16:55 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "740f0880-1c2f-9544-8148-32f842461bc7",
+ "x-ms-content-crc64": "AAAAAAAAAAA=",
+ "x-ms-request-id": "32024011-801e-005d-3183-d5a4f7000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-1d6a7af0-ddec-bb83-7510-adf8646fd6a9/test-blob-d05bacba-fa19-7026-d375-d180f7b89aeb?sv=2020-04-08\u0026st=2020-12-18T20:16:55Z\u0026se=2020-12-18T22:16:55Z\u0026sr=c\u0026sp=racwdxlt\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-c4fc4f1807b6fc4eb980f2b12de5f468-e035ddf03162d34d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "ef0095c4-26a9-07bc-0ad2-3a6c9c432134",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 21:16:55 GMT",
+ "ETag": "\u00220x8D8A39A3EFFD666\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:16:55 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "ef0095c4-26a9-07bc-0ad2-3a6c9c432134",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 21:16:55 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "4ecfe747-701e-002e-3883-d5d434000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-1d6a7af0-ddec-bb83-7510-adf8646fd6a9?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-247682a757261842b535cc13767ddfb0-61f5c76752effa4c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "ad33ba3e-2c46-481e-7220-e9d4f4ba4f2c",
+ "x-ms-date": "Fri, 18 Dec 2020 21:16:55 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:16:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "ad33ba3e-2c46-481e-7220-e9d4f4ba4f2c",
+ "x-ms-request-id": "3202404b-801e-005d-6283-d5a4f7000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:16:55.0278038-08:00",
+ "RandomSeed": "498972239",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_UserDelegationSAS.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_UserDelegationSAS.json
new file mode 100644
index 000000000000..b2288ef22f29
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_UserDelegationSAS.json
@@ -0,0 +1,179 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboloauthtest.blob.core.windows.net/test-container-ad86b11e-6e19-031e-8180-6246941649e3?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-069b1afeba48e7438ccc7edebb76478a-1b75ded8a5705e48-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20210105.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "d560afe7-bf62-d719-e256-371c491dcd52",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Tue, 05 Jan 2021 19:24:29 GMT",
+ "ETag": "\u00220x8D8B1AF861920DE\u0022",
+ "Last-Modified": "Tue, 05 Jan 2021 19:24:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "d560afe7-bf62-d719-e256-371c491dcd52",
+ "x-ms-request-id": "6a1d7e2b-701e-0069-1a98-e355a6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboloauthtest.blob.core.windows.net/test-container-ad86b11e-6e19-031e-8180-6246941649e3/test-blob-00ba7077-b438-c125-f27b-de8c5533aa8c",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-0207e6bc772ba94baad1809f12175b81-b8f48c621b61e748-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20210105.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "e872c6bf-6f3a-32d7-899f-e3e6e08c81af",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": [],
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Date": "Tue, 05 Jan 2021 19:24:30 GMT",
+ "ETag": "\u00220x8D8B1AF863A8C00\u0022",
+ "Last-Modified": "Tue, 05 Jan 2021 19:24:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e872c6bf-6f3a-32d7-899f-e3e6e08c81af",
+ "x-ms-content-crc64": "AAAAAAAAAAA=",
+ "x-ms-request-id": "6a1d7fde-701e-0069-1a98-e355a6000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboloauthtest.blob.core.windows.net/?restype=service\u0026comp=userdelegationkey",
+ "RequestMethod": "POST",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "56",
+ "Content-Type": "application/xml",
+ "traceparent": "00-58bb73b5af938745b0f488781b197331-7ceb9ae6fd8e1e42-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20210105.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "8fcd2db9-c1c0-a051-7b2c-5b16909bd19f",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": "\u003CKeyInfo\u003E\u003CExpiry\u003E2021-01-05T20:24:30Z\u003C/Expiry\u003E\u003C/KeyInfo\u003E",
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Type": "application/xml",
+ "Date": "Tue, 05 Jan 2021 19:24:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "8fcd2db9-c1c0-a051-7b2c-5b16909bd19f",
+ "x-ms-request-id": "6a1d801d-701e-0069-4e98-e355a6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CUserDelegationKey\u003E\u003CSignedOid\u003Ee339aa3f-fc6a-402b-973a-31cd8d64b280\u003C/SignedOid\u003E\u003CSignedTid\u003E72f988bf-86f1-41af-91ab-2d7cd011db47\u003C/SignedTid\u003E\u003CSignedStart\u003E2021-01-05T19:24:30Z\u003C/SignedStart\u003E\u003CSignedExpiry\u003E2021-01-05T20:24:30Z\u003C/SignedExpiry\u003E\u003CSignedService\u003Eb\u003C/SignedService\u003E\u003CSignedVersion\u003E2020-04-08\u003C/SignedVersion\u003E\u003CValue\u003ExVaM0/CgW0OcivrblFFVg6wYXjHxI9nqk7FqNUqN3uQ=\u003C/Value\u003E\u003C/UserDelegationKey\u003E"
+ },
+ {
+ "RequestUri": "https://kasoboloauthtest.blob.core.windows.net/test-container-ad86b11e-6e19-031e-8180-6246941649e3/test-blob-00ba7077-b438-c125-f27b-de8c5533aa8c?skoid=e339aa3f-fc6a-402b-973a-31cd8d64b280\u0026sktid=72f988bf-86f1-41af-91ab-2d7cd011db47\u0026skt=2021-01-05T19:24:30Z\u0026ske=2021-01-05T20:24:30Z\u0026sks=b\u0026skv=2020-04-08\u0026sv=2020-04-08\u0026se=2021-01-05T20:24:30Z\u0026sr=b\u0026sp=racwdxltme\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-266ac3a4c1c0dc4ca7535003b84422e7-a4d05224fd35164d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20210105.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b32c9403-f2be-eaee-5a6c-7b928c857353",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Content-Type": "application/octet-stream",
+ "Date": "Tue, 05 Jan 2021 19:24:30 GMT",
+ "ETag": "\u00220x8D8B1AF863A8C00\u0022",
+ "Last-Modified": "Tue, 05 Jan 2021 19:24:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "b32c9403-f2be-eaee-5a6c-7b928c857353",
+ "x-ms-creation-time": "Tue, 05 Jan 2021 19:24:30 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "d2307149-c01e-0052-4998-e317f8000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboloauthtest.blob.core.windows.net/test-container-ad86b11e-6e19-031e-8180-6246941649e3?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-f5d0684a6569844e92c1f853a9ede5a4-33f4bf4caf591b4e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20210105.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "fb1361bd-1d6e-2fe0-5200-20294f604aa3",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Tue, 05 Jan 2021 19:24:30 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "fb1361bd-1d6e-2fe0-5200-20294f604aa3",
+ "x-ms-request-id": "6a1d81b6-701e-0069-3298-e355a6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2021-01-05T11:24:30.4299138-08:00",
+ "RandomSeed": "1363005518",
+ "Storage_TestConfigOAuth": "OAuthTenant\nkasoboloauthtest\nU2FuaXRpemVk\nhttps://kasoboloauthtest.blob.core.windows.net\nhttp://kasoboloauthtest.file.core.windows.net\nhttp://kasoboloauthtest.queue.core.windows.net\nhttp://kasoboloauthtest.table.core.windows.net\n\n\n\n\nhttp://kasoboloauthtest-secondary.blob.core.windows.net\nhttp://kasoboloauthtest-secondary.file.core.windows.net\nhttp://kasoboloauthtest-secondary.queue.core.windows.net\nhttp://kasoboloauthtest-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasoboloauthtest.blob.core.windows.net/;QueueEndpoint=http://kasoboloauthtest.queue.core.windows.net/;FileEndpoint=http://kasoboloauthtest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboloauthtest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboloauthtest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboloauthtest-secondary.file.core.windows.net/;AccountName=kasoboloauthtest;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_UserDelegationSASAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_UserDelegationSASAsync.json
new file mode 100644
index 000000000000..72f41e7e4577
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_UserDelegationSASAsync.json
@@ -0,0 +1,179 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboloauthtest.blob.core.windows.net/test-container-5ce8f271-38d0-4110-dd86-43f26285f0ee?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-49b9eb5e0637704e9f4177fd7448b640-0d3dcc14e25da546-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20210105.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "6e592982-952d-4cef-1e01-ae7cd756c1e9",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Tue, 05 Jan 2021 19:24:53 GMT",
+ "ETag": "\u00220x8D8B1AF94A01B46\u0022",
+ "Last-Modified": "Tue, 05 Jan 2021 19:24:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "6e592982-952d-4cef-1e01-ae7cd756c1e9",
+ "x-ms-request-id": "5f912e45-301e-0003-3698-e3090d000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboloauthtest.blob.core.windows.net/test-container-5ce8f271-38d0-4110-dd86-43f26285f0ee/test-blob-074b7ba1-e9a8-f532-6bda-a223ced20965",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-2feb5189fc704f4c973938a313e11ac9-16b0c249591a6b49-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20210105.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "bc9c80eb-b62c-9916-f764-0352f3cb7d4c",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": [],
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Date": "Tue, 05 Jan 2021 19:24:53 GMT",
+ "ETag": "\u00220x8D8B1AF94BD7F7F\u0022",
+ "Last-Modified": "Tue, 05 Jan 2021 19:24:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "bc9c80eb-b62c-9916-f764-0352f3cb7d4c",
+ "x-ms-content-crc64": "AAAAAAAAAAA=",
+ "x-ms-request-id": "5f912f15-301e-0003-6b98-e3090d000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboloauthtest.blob.core.windows.net/?restype=service\u0026comp=userdelegationkey",
+ "RequestMethod": "POST",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "56",
+ "Content-Type": "application/xml",
+ "traceparent": "00-e14706569e91294fac4e03ece2ba66f8-9e3d7bb452957d42-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20210105.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "4e383ea4-4c35-1238-6ed6-41c77d6f6c31",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": "\u003CKeyInfo\u003E\u003CExpiry\u003E2021-01-05T20:24:54Z\u003C/Expiry\u003E\u003C/KeyInfo\u003E",
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Type": "application/xml",
+ "Date": "Tue, 05 Jan 2021 19:24:53 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "4e383ea4-4c35-1238-6ed6-41c77d6f6c31",
+ "x-ms-request-id": "5f912f48-301e-0003-1b98-e3090d000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CUserDelegationKey\u003E\u003CSignedOid\u003Ee339aa3f-fc6a-402b-973a-31cd8d64b280\u003C/SignedOid\u003E\u003CSignedTid\u003E72f988bf-86f1-41af-91ab-2d7cd011db47\u003C/SignedTid\u003E\u003CSignedStart\u003E2021-01-05T19:24:54Z\u003C/SignedStart\u003E\u003CSignedExpiry\u003E2021-01-05T20:24:54Z\u003C/SignedExpiry\u003E\u003CSignedService\u003Eb\u003C/SignedService\u003E\u003CSignedVersion\u003E2020-04-08\u003C/SignedVersion\u003E\u003CValue\u003EIp9p6VEV9MLmljLzh8LWlxV\u002BVu8RFDSCE9SbHWE7d8g=\u003C/Value\u003E\u003C/UserDelegationKey\u003E"
+ },
+ {
+ "RequestUri": "https://kasoboloauthtest.blob.core.windows.net/test-container-5ce8f271-38d0-4110-dd86-43f26285f0ee/test-blob-074b7ba1-e9a8-f532-6bda-a223ced20965?skoid=e339aa3f-fc6a-402b-973a-31cd8d64b280\u0026sktid=72f988bf-86f1-41af-91ab-2d7cd011db47\u0026skt=2021-01-05T19:24:54Z\u0026ske=2021-01-05T20:24:54Z\u0026sks=b\u0026skv=2020-04-08\u0026sv=2020-04-08\u0026se=2021-01-05T20:24:54Z\u0026sr=b\u0026sp=racwdxltme\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-0369a00e78a0ba469a81d8bf543255ac-5e78d96f3f568147-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20210105.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b5ada23c-2f93-ab16-10a1-e41047f6a24a",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Content-Type": "application/octet-stream",
+ "Date": "Tue, 05 Jan 2021 19:24:54 GMT",
+ "ETag": "\u00220x8D8B1AF94BD7F7F\u0022",
+ "Last-Modified": "Tue, 05 Jan 2021 19:24:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "b5ada23c-2f93-ab16-10a1-e41047f6a24a",
+ "x-ms-creation-time": "Tue, 05 Jan 2021 19:24:54 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "881e74f3-f01e-0037-2898-e3a6a5000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboloauthtest.blob.core.windows.net/test-container-5ce8f271-38d0-4110-dd86-43f26285f0ee?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-dedecef5130ad446a5d0b4ff0ec95936-8e71eb4094302c4a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20210105.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "da8afcab-b7c1-cd9e-18dc-73b6fe6b1acc",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Tue, 05 Jan 2021 19:24:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "da8afcab-b7c1-cd9e-18dc-73b6fe6b1acc",
+ "x-ms-request-id": "5f913075-301e-0003-1c98-e3090d000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2021-01-05T11:24:54.7757768-08:00",
+ "RandomSeed": "1256038034",
+ "Storage_TestConfigOAuth": "OAuthTenant\nkasoboloauthtest\nU2FuaXRpemVk\nhttps://kasoboloauthtest.blob.core.windows.net\nhttp://kasoboloauthtest.file.core.windows.net\nhttp://kasoboloauthtest.queue.core.windows.net\nhttp://kasoboloauthtest.table.core.windows.net\n\n\n\n\nhttp://kasoboloauthtest-secondary.blob.core.windows.net\nhttp://kasoboloauthtest-secondary.file.core.windows.net\nhttp://kasoboloauthtest-secondary.queue.core.windows.net\nhttp://kasoboloauthtest-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasoboloauthtest.blob.core.windows.net/;QueueEndpoint=http://kasoboloauthtest.queue.core.windows.net/;FileEndpoint=http://kasoboloauthtest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboloauthtest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboloauthtest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboloauthtest-secondary.file.core.windows.net/;AccountName=kasoboloauthtest;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..e3c1fad2c0a2
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-590b471e-15e1-38f4-b268-0397db04359f?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-1d27dda67bb71c488beb915faded8082-5b14a492c5faa341-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "c3b5fcab-3923-0270-3a0d-350703489d33",
+ "x-ms-date": "Fri, 18 Dec 2020 21:03:39 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:03:38 GMT",
+ "ETag": "\u00220x8D8A39864C73D1D\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:03:39 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "c3b5fcab-3923-0270-3a0d-350703489d33",
+ "x-ms-request-id": "589f686a-001e-0047-1281-d58b98000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-590b471e-15e1-38f4-b268-0397db04359f?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-34b16d0857ee2e4ca234a051cc681b2b-fd025bbe7ea58f40-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "deec8144-724e-087c-153e-67c0a0d8d2de",
+ "x-ms-date": "Fri, 18 Dec 2020 21:03:39 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:03:38 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "deec8144-724e-087c-153e-67c0a0d8d2de",
+ "x-ms-request-id": "589f68e0-001e-0047-8081-d58b98000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:03:39.4960938-08:00",
+ "RandomSeed": "539016032",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..ad86cb364277
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobBaseClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-2dd3dcaa-f51c-a08f-ceda-1621ea591f11?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-51520bbe8b8fb6489546201eab7bd883-7543c5ae47a03748-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "059fde2e-2d03-77b2-2c72-d729bafacc78",
+ "x-ms-date": "Fri, 18 Dec 2020 21:03:39 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:03:38 GMT",
+ "ETag": "\u00220x8D8A39864FD982C\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:03:39 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "059fde2e-2d03-77b2-2c72-d729bafacc78",
+ "x-ms-request-id": "179b76df-401e-0026-3b81-d5cf47000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-2dd3dcaa-f51c-a08f-ceda-1621ea591f11?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-30371133ec83f341940da57c9245b977-00dfa74202bf4041-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "0cf2c58c-1aba-fb0e-ef42-e662e1a77a8b",
+ "x-ms-date": "Fri, 18 Dec 2020 21:03:39 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:03:38 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "0cf2c58c-1aba-fb0e-ef42-e662e1a77a8b",
+ "x-ms-request-id": "179b7702-401e-0026-5b81-d5cf47000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:03:39.8100954-08:00",
+ "RandomSeed": "845943507",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..8c8562397a88
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,151 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-e2832bab-000a-068d-091a-cfdd5a0b47cb?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-101e5d38a3736e40ba93b653785490a8-617bbdcad0e75845-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "66388100-a8e3-894c-72eb-17a3ccd4780a",
+ "x-ms-date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:18:49 GMT",
+ "ETag": "\u00220x8D8A39A83BD475A\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "66388100-a8e3-894c-72eb-17a3ccd4780a",
+ "x-ms-request-id": "8c16793d-801e-0012-4b83-d560ef000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-e2832bab-000a-068d-091a-cfdd5a0b47cb/test-blob-48868923-e6fc-d568-9a28-abc39ef36b70",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-91ae7545c0d0b84ab8697c2db3556312-4417a583de095145-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "117756ce-b613-1aea-1963-cbbbfd89ea7f",
+ "x-ms-date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": [],
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Date": "Fri, 18 Dec 2020 21:18:49 GMT",
+ "ETag": "\u00220x8D8A39A83E0A52A\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "117756ce-b613-1aea-1963-cbbbfd89ea7f",
+ "x-ms-content-crc64": "AAAAAAAAAAA=",
+ "x-ms-request-id": "8c1679ad-801e-0012-3283-d560ef000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-e2832bab-000a-068d-091a-cfdd5a0b47cb/test-blob-48868923-e6fc-d568-9a28-abc39ef36b70?sv=2020-04-08\u0026st=2020-12-18T20:18:50Z\u0026se=2020-12-18T22:18:50Z\u0026sr=c\u0026sp=racwdxlt\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-e34bd4f64b51044986877a065163bc63-1cc00bba9a94244d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "47f44998-5a7b-645d-ffc3-bf6f142c2ffe",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "ETag": "\u00220x8D8A39A83E0A52A\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "47f44998-5a7b-645d-ffc3-bf6f142c2ffe",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "ed7438a4-701e-006a-7b83-d50858000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-e2832bab-000a-068d-091a-cfdd5a0b47cb?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-49ac1557d6764a43a32c4f126f7e94e5-408886750b371f44-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b3221e4c-a394-2603-4a23-e334dfc82e74",
+ "x-ms-date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b3221e4c-a394-2603-4a23-e334dfc82e74",
+ "x-ms-request-id": "8c1679fc-801e-0012-7783-d560ef000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:18:50.4648211-08:00",
+ "RandomSeed": "334805098",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..b407a8bdbe50
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,151 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-6010c889-af3f-a23c-af1c-344962f24e61?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-413b57ea5ce27343a19c5c73cf03d79f-b40531a5b34be84b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "e4f9faef-5d71-3198-83f3-4545f27c62b4",
+ "x-ms-date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "ETag": "\u00220x8D8A39A840FB2DD\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e4f9faef-5d71-3198-83f3-4545f27c62b4",
+ "x-ms-request-id": "f4b813c5-701e-0048-1883-d5666e000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-6010c889-af3f-a23c-af1c-344962f24e61/test-blob-c0acb495-5c55-9abb-2b5b-5c377fc87bcb",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-0f2223a13b8d9c4b8d74bffb31db355e-79d3357b3991ac4a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "72df7ba5-4937-935b-3e5e-b8150060b2ba",
+ "x-ms-date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": [],
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "ETag": "\u00220x8D8A39A841579FE\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "72df7ba5-4937-935b-3e5e-b8150060b2ba",
+ "x-ms-content-crc64": "AAAAAAAAAAA=",
+ "x-ms-request-id": "f4b813d7-701e-0048-2783-d5666e000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-6010c889-af3f-a23c-af1c-344962f24e61/test-blob-c0acb495-5c55-9abb-2b5b-5c377fc87bcb?sv=2020-04-08\u0026st=2020-12-18T20:18:50Z\u0026se=2020-12-18T22:18:50Z\u0026sr=c\u0026sp=racwdxlt\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-64c636a8dd5b7b44bd11af8dee5624f4-b5b60af42cbdd14b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "0392d69a-08e9-c893-27c7-299ab1da2821",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "ETag": "\u00220x8D8A39A841579FE\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "0392d69a-08e9-c893-27c7-299ab1da2821",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "2664ea82-501e-001b-0a83-d57a61000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-6010c889-af3f-a23c-af1c-344962f24e61?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-4c42b2cf94134f46aca74bbe28720624-346544d823b78b42-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "2a7be36e-aecd-6fd1-e66a-485bd12079ea",
+ "x-ms-date": "Fri, 18 Dec 2020 21:18:51 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:18:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "2a7be36e-aecd-6fd1-e66a-485bd12079ea",
+ "x-ms-request-id": "f4b81413-701e-0048-6083-d5666e000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:18:50.9338201-08:00",
+ "RandomSeed": "1128672756",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..44ffc6ee33f8
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-38a1bb97-46d2-a500-b41a-b78a2f910c6a?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-02c627725075f141a340cb6804d0ebcb-cdd34e7f34157d48-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "4393ba08-1415-ee82-fe1e-5d1a14dd72b7",
+ "x-ms-date": "Fri, 18 Dec 2020 21:19:15 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:19:15 GMT",
+ "ETag": "\u00220x8D8A39A92C41FE2\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:19:15 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "4393ba08-1415-ee82-fe1e-5d1a14dd72b7",
+ "x-ms-request-id": "aa2ca8bb-401e-0004-6e83-d5a171000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-38a1bb97-46d2-a500-b41a-b78a2f910c6a?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-8141b9cfd507b143a7c5c041fc76e247-47141434fefdf64b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "7582e794-c9fd-0354-2825-58671cd92002",
+ "x-ms-date": "Fri, 18 Dec 2020 21:19:15 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:19:15 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "7582e794-c9fd-0354-2825-58671cd92002",
+ "x-ms-request-id": "aa2ca93a-401e-0004-5d83-d5a171000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:19:15.6864583-08:00",
+ "RandomSeed": "1267603308",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..6d8a94c7c5cb
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-d85e8934-d465-6b4e-13ad-3d828bfb3b97?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-fdb04bc646ec4f499b7e7e6d0e1bf933-72d8190858ff6f41-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "88016155-e863-e4d0-3199-cce066d3618d",
+ "x-ms-date": "Fri, 18 Dec 2020 21:19:15 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:19:15 GMT",
+ "ETag": "\u00220x8D8A39A92FE0D9C\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:19:15 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "88016155-e863-e4d0-3199-cce066d3618d",
+ "x-ms-request-id": "68ed05b1-301e-0000-7b83-d554f3000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-d85e8934-d465-6b4e-13ad-3d828bfb3b97?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-003e912cb518e74fb3abca6995112a2f-e1dd5ec5791bae4d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "2a2c5b82-b3fa-8b33-99a7-7998b5484db0",
+ "x-ms-date": "Fri, 18 Dec 2020 21:19:15 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:19:15 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "2a2c5b82-b3fa-8b33-99a7-7998b5484db0",
+ "x-ms-request-id": "68ed05d4-301e-0000-1783-d554f3000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:19:15.9854534-08:00",
+ "RandomSeed": "152962535",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..8e9b46c20776
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,151 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-e73a5e1e-dfff-9a91-0503-1e63bf61e3f6?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-f07c2f44c61004498545d777e907ec41-dc47e30b1779ec40-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "05b38768-2632-1993-9a12-5d4a0e21f5b2",
+ "x-ms-date": "Fri, 18 Dec 2020 21:20:17 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:20:17 GMT",
+ "ETag": "\u00220x8D8A39AB7EDE857\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:20:17 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "05b38768-2632-1993-9a12-5d4a0e21f5b2",
+ "x-ms-request-id": "00f8c72b-d01e-000a-4183-d54d7a000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-e73a5e1e-dfff-9a91-0503-1e63bf61e3f6/test-blob-e5900d34-3990-3711-76d8-0bcb09c0690f",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-8b70f620bec9e84691c43d0f3bfce04a-70ced5df1a44df49-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "229c233e-c065-2f04-767b-8e5a1bc70fda",
+ "x-ms-date": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": [],
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Date": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "ETag": "\u00220x8D8A39AB811FD70\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "229c233e-c065-2f04-767b-8e5a1bc70fda",
+ "x-ms-content-crc64": "AAAAAAAAAAA=",
+ "x-ms-request-id": "00f8c773-d01e-000a-0383-d54d7a000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-e73a5e1e-dfff-9a91-0503-1e63bf61e3f6/test-blob-e5900d34-3990-3711-76d8-0bcb09c0690f?sv=2020-04-08\u0026st=2020-12-18T20:20:18Z\u0026se=2020-12-18T22:20:18Z\u0026sr=c\u0026sp=racwdxlt\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-5f7891834cac884d81d6bb1c3f238234-a16c6b661a98ab41-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "e68c4f84-4723-9eaa-85cb-c1324f69ddfe",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 21:20:17 GMT",
+ "ETag": "\u00220x8D8A39AB811FD70\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "e68c4f84-4723-9eaa-85cb-c1324f69ddfe",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "7ae4a967-401e-002d-1683-d5d733000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-e73a5e1e-dfff-9a91-0503-1e63bf61e3f6?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-cc98dc36a09b8f4e9e31fd434a513cfa-df6bf255f60bed4c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "cbd5b4cd-293a-61b7-a24e-fe5afcd106e0",
+ "x-ms-date": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "cbd5b4cd-293a-61b7-a24e-fe5afcd106e0",
+ "x-ms-request-id": "00f8c7ce-d01e-000a-5183-d54d7a000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:20:18.0156509-08:00",
+ "RandomSeed": "1215651971",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..bc61fccb1bc2
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,151 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-9ac6c1eb-e2dc-d88f-67f2-11618a33a5d0?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-1df3e8ac5731c74b91597606f0115203-6a3a46ec156bcb4d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "7fef2f8e-fb5e-3fd3-4103-be3b99840faa",
+ "x-ms-date": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:20:17 GMT",
+ "ETag": "\u00220x8D8A39AB84FD3C4\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "7fef2f8e-fb5e-3fd3-4103-be3b99840faa",
+ "x-ms-request-id": "7f301c4b-c01e-0051-5d83-d54a06000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-9ac6c1eb-e2dc-d88f-67f2-11618a33a5d0/test-blob-f48a8511-d70c-10ae-111d-372f8b9272c7",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "If-None-Match": "*",
+ "traceparent": "00-ad509a993b45354c937215d157de5aa0-e1be5e644baac44e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "dfebac9e-3f15-b712-80df-6d40c4a3b3af",
+ "x-ms-date": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": [],
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Date": "Fri, 18 Dec 2020 21:20:17 GMT",
+ "ETag": "\u00220x8D8A39AB855C8E9\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "dfebac9e-3f15-b712-80df-6d40c4a3b3af",
+ "x-ms-content-crc64": "AAAAAAAAAAA=",
+ "x-ms-request-id": "7f301c6b-c01e-0051-7a83-d54a06000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-9ac6c1eb-e2dc-d88f-67f2-11618a33a5d0/test-blob-f48a8511-d70c-10ae-111d-372f8b9272c7?sv=2020-04-08\u0026st=2020-12-18T20:20:18Z\u0026se=2020-12-18T22:20:18Z\u0026sr=c\u0026sp=racwdxlt\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-4b230595cf504846bc7c3d03d90e9e4d-da18b7991e54344a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "de91580f-92a7-7eb2-e01c-da64b831b584",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-MD5": "1B2M2Y8AsgTpgAmY7PhCfg==",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "ETag": "\u00220x8D8A39AB855C8E9\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "de91580f-92a7-7eb2-e01c-da64b831b584",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "241fadbc-e01e-004d-1883-d59211000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-9ac6c1eb-e2dc-d88f-67f2-11618a33a5d0?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-2639ee34156ed24faade216f68277837-3091acf1b5e57b40-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "6c31d1ec-d512-fe07-45ff-c694d90232e2",
+ "x-ms-date": "Fri, 18 Dec 2020 21:20:18 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:20:17 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "6c31d1ec-d512-fe07-45ff-c694d90232e2",
+ "x-ms-request-id": "7f301cad-c01e-0051-3883-d54a06000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:20:18.5976516-08:00",
+ "RandomSeed": "1283604230",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..76458585bf2b
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-2cdcc9ce-7f14-3ade-52fe-d3de0479510d?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-d1faf3afac1e2c459cf1bbd3ed2bb87a-d26ab89944fca647-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "1f559575-629e-83a9-67c0-0c37f713217d",
+ "x-ms-date": "Fri, 18 Dec 2020 21:20:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:20:37 GMT",
+ "ETag": "\u00220x8D8A39AC3940D61\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:20:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1f559575-629e-83a9-67c0-0c37f713217d",
+ "x-ms-request-id": "ac112daa-201e-003d-0883-d5e1d5000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-2cdcc9ce-7f14-3ade-52fe-d3de0479510d?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-a8a2c2195bf7a844afa6df557966ca46-a5f2da9f29e8924b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "6f699b06-3123-436e-65c9-409ca8222e7f",
+ "x-ms-date": "Fri, 18 Dec 2020 21:20:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:20:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "6f699b06-3123-436e-65c9-409ca8222e7f",
+ "x-ms-request-id": "ac112e36-201e-003d-0483-d5e1d5000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:20:37.5682812-08:00",
+ "RandomSeed": "888410800",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..fb6351b25631
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/BlockBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-ba847f0b-1cf8-6bdc-d4c3-c810af21ecee?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-1ed3aa7570645647a83dfd8efa189f82-57599b3797f2b940-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "81ecab93-a689-d376-1881-5af134629447",
+ "x-ms-date": "Fri, 18 Dec 2020 21:20:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:20:37 GMT",
+ "ETag": "\u00220x8D8A39AC3D169D5\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:20:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "81ecab93-a689-d376-1881-5af134629447",
+ "x-ms-request-id": "02e6d3f2-301e-0066-5d83-d5e6a9000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-ba847f0b-1cf8-6bdc-d4c3-c810af21ecee?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-4fb509bc2ab3914699ece810dbc798d2-6f0cceba2c74f244-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "037c23f3-6b34-7b64-1ac1-c449ea085a69",
+ "x-ms-date": "Fri, 18 Dec 2020 21:20:37 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:20:37 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "037c23f3-6b34-7b64-1ac1-c449ea085a69",
+ "x-ms-request-id": "02e6d40e-301e-0066-7783-d5e6a9000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:20:37.9102803-08:00",
+ "RandomSeed": "1801766066",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..62e653638710
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,110 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-2996eaf8-e910-31d5-fab3-ca6486bea000?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-028532a8eee596419f040a69090576b4-c2d6743beeb15949-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "e3400fb9-9a09-517b-7e6e-c1739c94711c",
+ "x-ms-date": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "ETag": "\u00220x8D8A39D6BBDAEB9\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e3400fb9-9a09-517b-7e6e-c1739c94711c",
+ "x-ms-request-id": "c3d9a829-c01e-005a-3d86-d55272000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-2996eaf8-e910-31d5-fab3-ca6486bea000?restype=container\u0026sv=2020-04-08\u0026ss=bfqt\u0026srt=sco\u0026spr=https\u0026se=2020-12-18T22:39:38Z\u0026sp=rwdxlacuptf\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-a4fb366d82c808418693ba842b29ec92-804d54b10067574a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "76aa7e4a-bc7d-43f6-c9a0-7b43674cb65b",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Access-Control-Allow-Origin": "*",
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "ETag": "\u00220x8D8A39D6BBDAEB9\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "76aa7e4a-bc7d-43f6-c9a0-7b43674cb65b",
+ "x-ms-default-encryption-scope": "$account-encryption-key",
+ "x-ms-deny-encryption-scope-override": "false",
+ "x-ms-has-immutability-policy": "false",
+ "x-ms-has-legal-hold": "false",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "4ee402c9-701e-002e-2b86-d5d434000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-2996eaf8-e910-31d5-fab3-ca6486bea000?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-783a75c38d7f854290194cdc38f19d27-f84a630826a78741-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "1e2923c5-faea-909e-b8d3-abc5c2ad68dd",
+ "x-ms-date": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1e2923c5-faea-909e-b8d3-abc5c2ad68dd",
+ "x-ms-request-id": "c3d9a893-c01e-005a-2086-d55272000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:39:38.6783605-08:00",
+ "RandomSeed": "1533579923",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..e02af425955d
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,110 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-0d1ae0e9-f22f-bcc3-76e7-4560ee1f3cd1?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-e3b7639cdc924f40b6d0be62bd3a20fd-5490214cb888d24c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "62ad3711-a064-098b-f40f-c14cfec26aa9",
+ "x-ms-date": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "ETag": "\u00220x8D8A39D6BFA6E2D\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "62ad3711-a064-098b-f40f-c14cfec26aa9",
+ "x-ms-request-id": "ebcb9112-301e-0029-4d86-d522b1000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-0d1ae0e9-f22f-bcc3-76e7-4560ee1f3cd1?restype=container\u0026sv=2020-04-08\u0026ss=bfqt\u0026srt=sco\u0026spr=https\u0026se=2020-12-18T22:39:39Z\u0026sp=rwdxlacuptf\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-d35d8bb851424b468c7b55ba70144ec4-b78207577c01e94c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b64fd92a-d972-eb6c-75c7-f64a8e3fa6a7",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Access-Control-Allow-Origin": "*",
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "ETag": "\u00220x8D8A39D6BFA6E2D\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:39:38 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "b64fd92a-d972-eb6c-75c7-f64a8e3fa6a7",
+ "x-ms-default-encryption-scope": "$account-encryption-key",
+ "x-ms-deny-encryption-scope-override": "false",
+ "x-ms-has-immutability-policy": "false",
+ "x-ms-has-legal-hold": "false",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "0b5fd9a3-701e-0025-0c86-d5cc40000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-0d1ae0e9-f22f-bcc3-76e7-4560ee1f3cd1?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-28ad6e8447fb3e41b82efdaafbef7d59-074cbc02b7e9674f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "242180b9-b373-8f37-0ec8-895dab810a16",
+ "x-ms-date": "Fri, 18 Dec 2020 21:39:39 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:39:39 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "242180b9-b373-8f37-0ec8-895dab810a16",
+ "x-ms-request-id": "ebcb9176-301e-0029-2386-d522b1000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:39:39.0323569-08:00",
+ "RandomSeed": "838095187",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..e73e8ff8f147
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,76 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-84456bdd-3760-dfb4-a193-525cdf6648bd?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-413c94f3bce64c4e8dfa7e55c9ce67f6-55176287f8c0bc47-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "e9819272-6f8e-c49d-981e-8cf5720b2a53",
+ "x-ms-date": "Fri, 18 Dec 2020 21:38:02 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 409,
+ "ResponseHeaders": {
+ "Content-Length": "230",
+ "Content-Type": "application/xml",
+ "Date": "Fri, 18 Dec 2020 21:38:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e9819272-6f8e-c49d-981e-8cf5720b2a53",
+ "x-ms-error-code": "ContainerAlreadyExists",
+ "x-ms-request-id": "c812f317-c01e-003c-6f86-d5e028000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": [
+ "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CError\u003E\u003CCode\u003EContainerAlreadyExists\u003C/Code\u003E\u003CMessage\u003EThe specified container already exists.\n",
+ "RequestId:c812f317-c01e-003c-6f86-d5e028000000\n",
+ "Time:2020-12-18T21:38:02.7595056Z\u003C/Message\u003E\u003C/Error\u003E"
+ ]
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-84456bdd-3760-dfb4-a193-525cdf6648bd?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-e9cb2cfb9005a644ba0e60fb056d6579-f60f93e9517e0f45-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "4ce98b25-5ee4-be2f-23ae-73650cc35baa",
+ "x-ms-date": "Fri, 18 Dec 2020 21:38:02 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:38:01 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "4ce98b25-5ee4-be2f-23ae-73650cc35baa",
+ "x-ms-request-id": "c812f3c2-c01e-003c-1286-d5e028000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:38:02.8866037-08:00",
+ "RandomSeed": "673124298",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..1d2f9b9c6f31
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ContainerClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-79ea7a2d-2c2f-00f1-f87d-5e1edb8978db?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-0971cf136d4d234c809d7911b9f96620-266b39673ecf3040-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "4cc563f9-0540-262d-cd79-adf2e9e1ba15",
+ "x-ms-date": "Fri, 18 Dec 2020 21:38:03 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:38:03 GMT",
+ "ETag": "\u00220x8D8A39D32DD5121\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:38:03 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "4cc563f9-0540-262d-cd79-adf2e9e1ba15",
+ "x-ms-request-id": "bf997553-201e-0050-0686-d54bfb000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-79ea7a2d-2c2f-00f1-f87d-5e1edb8978db?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-63d2d35911bb2d4e8b7162ffda7729f7-22b29b84ef94774e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "7724d3ef-2bc4-8e9a-8b5c-12f18a253dba",
+ "x-ms-date": "Fri, 18 Dec 2020 21:38:03 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:38:03 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "7724d3ef-2bc4-8e9a-8b5c-12f18a253dba",
+ "x-ms-request-id": "bf997599-201e-0050-4486-d54bfb000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:38:03.2145978-08:00",
+ "RandomSeed": "97127170",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..c09748de3265
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,147 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-42a815a0-4bb8-6331-2ba2-b22901918183?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-919ba83ae3edc845aee74b836b8a3331-1830c001d079ea47-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "a2a7440c-6f51-bd71-39a0-72fe4f063141",
+ "x-ms-date": "Fri, 18 Dec 2020 21:22:04 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:22:04 GMT",
+ "ETag": "\u00220x8D8A39AF7BA5553\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:22:04 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "a2a7440c-6f51-bd71-39a0-72fe4f063141",
+ "x-ms-request-id": "74e924a0-501e-0054-3683-d5be79000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-42a815a0-4bb8-6331-2ba2-b22901918183/test-blob-cbc84734-1bd7-6302-cf68-9dc91d1d8b58",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "traceparent": "00-4c754df11df1494fb820152f3e2f11a3-ea82d49b4c7f5344-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-content-length": "1024",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "91dfebbe-9f09-f1b1-4243-d2e8d1a79f1c",
+ "x-ms-date": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:22:04 GMT",
+ "ETag": "\u00220x8D8A39AF7DFF62F\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "91dfebbe-9f09-f1b1-4243-d2e8d1a79f1c",
+ "x-ms-request-id": "74e92573-501e-0054-7983-d5be79000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-42a815a0-4bb8-6331-2ba2-b22901918183/test-blob-cbc84734-1bd7-6302-cf68-9dc91d1d8b58?sv=2020-04-08\u0026st=2020-12-18T20:22:05Z\u0026se=2020-12-18T22:22:05Z\u0026sr=c\u0026sp=racwdxlt\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-dde4d9f1f259094f9b1a02cd2f833a3a-7cfd3bd7a5761744-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "320b0077-fa3e-974e-782c-7aa60c4975b6",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "1024",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 21:22:04 GMT",
+ "ETag": "\u00220x8D8A39AF7DFF62F\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-blob-sequence-number": "0",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "320b0077-fa3e-974e-782c-7aa60c4975b6",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "deb59fc1-501e-0076-0383-d5d04f000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-42a815a0-4bb8-6331-2ba2-b22901918183?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-9a80fc56d9694540918800d979f6329c-3a41d37432c88b48-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "d1714aa9-6c9c-1bde-ca30-adbdf9b049ca",
+ "x-ms-date": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:22:04 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "d1714aa9-6c9c-1bde-ca30-adbdf9b049ca",
+ "x-ms-request-id": "74e925c8-501e-0054-4b83-d5be79000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:22:05.0589240-08:00",
+ "RandomSeed": "1888745281",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..3ea61531df39
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,147 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-8ddde073-335d-c0bf-a39e-20f79414b0f1?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-91b5b2a01c2ef44788e226789309cc1e-850048a82ec1db4c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "72ba7f75-3af4-0db5-f399-17230e80ddc0",
+ "x-ms-date": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:22:04 GMT",
+ "ETag": "\u00220x8D8A39AF80CD931\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "72ba7f75-3af4-0db5-f399-17230e80ddc0",
+ "x-ms-request-id": "ffb927a6-201e-0072-1e83-d525cd000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-8ddde073-335d-c0bf-a39e-20f79414b0f1/test-blob-a81dfb43-f09c-8b30-11a2-4b870d9bebf2",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "Content-Length": "0",
+ "traceparent": "00-2846d24469bbec40aa5bbb58effc77c0-07d8bca7c5f65e4d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-content-length": "1024",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "dae064f8-7b93-8435-4e2e-6152ee2dff57",
+ "x-ms-date": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:22:04 GMT",
+ "ETag": "\u00220x8D8A39AF81280AB\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "dae064f8-7b93-8435-4e2e-6152ee2dff57",
+ "x-ms-request-id": "ffb927b6-201e-0072-2a83-d525cd000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-8ddde073-335d-c0bf-a39e-20f79414b0f1/test-blob-a81dfb43-f09c-8b30-11a2-4b870d9bebf2?sv=2020-04-08\u0026st=2020-12-18T20:22:05Z\u0026se=2020-12-18T22:22:05Z\u0026sr=c\u0026sp=racwdxlt\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-1a8bebef88f67744bc3736439130c57c-ca3975f2f9c1ac48-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "a88f8976-11ba-005f-17fc-c62bdbaa63c6",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "1024",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 21:22:04 GMT",
+ "ETag": "\u00220x8D8A39AF81280AB\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-blob-sequence-number": "0",
+ "x-ms-blob-type": "PageBlob",
+ "x-ms-client-request-id": "a88f8976-11ba-005f-17fc-c62bdbaa63c6",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "71f80c27-901e-0049-4583-d56793000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-8ddde073-335d-c0bf-a39e-20f79414b0f1?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-46479e8a0f08304d8baa2e7b501d6bc3-474bbe1087259644-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "64dbfb73-569e-9c9d-c5a7-a901013a2a54",
+ "x-ms-date": "Fri, 18 Dec 2020 21:22:05 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:22:04 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "64dbfb73-569e-9c9d-c5a7-a901013a2a54",
+ "x-ms-request-id": "ffb927de-201e-0072-4c83-d525cd000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:22:05.5344580-08:00",
+ "RandomSeed": "767013575",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..821951eacbdd
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-b60f4113-d991-ebf9-6cc0-4f6e328db9d9?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-a3836c8171b4ff4f8c447a1e1bec3935-1f661f673d897742-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "0cc9c1d9-7cb0-30db-5de9-c7f659a11238",
+ "x-ms-date": "Fri, 18 Dec 2020 21:22:26 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:22:25 GMT",
+ "ETag": "\u00220x8D8A39B049E2F6A\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:22:26 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "0cc9c1d9-7cb0-30db-5de9-c7f659a11238",
+ "x-ms-request-id": "68ef1bdb-301e-0000-6783-d554f3000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-b60f4113-d991-ebf9-6cc0-4f6e328db9d9?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-f90849eadabf1540b5c53dad5dd5d274-b0a012c9d4041449-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "7094bbf6-adc3-2929-3fbc-0bc31615e8d2",
+ "x-ms-date": "Fri, 18 Dec 2020 21:22:26 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:22:26 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "7094bbf6-adc3-2929-3fbc-0bc31615e8d2",
+ "x-ms-request-id": "68ef1c5a-301e-0000-5c83-d554f3000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:22:26.6762743-08:00",
+ "RandomSeed": "1891771315",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..092747a15d44
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/PageBlobClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-65eeaffd-5156-c6c9-3dd4-ab78bdd69a96?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-2eefc013b15a724882f3a5d401634fdf-a89d77be464a4b41-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "37366c4e-1b2d-2f2f-a7ff-7d0ae7762cf8",
+ "x-ms-date": "Fri, 18 Dec 2020 21:22:26 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:22:26 GMT",
+ "ETag": "\u00220x8D8A39B04D86489\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:22:26 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "37366c4e-1b2d-2f2f-a7ff-7d0ae7762cf8",
+ "x-ms-request-id": "d08a4361-501e-0010-3e83-d56215000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "http://kasoboltest.blob.core.windows.net/test-container-65eeaffd-5156-c6c9-3dd4-ab78bdd69a96?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-27d41e6925f61149bfafefe0c3bfe7b7-cee84d6fbb5d4647-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "5029caac-639f-2a68-9ed5-804ae78f1af7",
+ "x-ms-date": "Fri, 18 Dec 2020 21:22:27 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:22:26 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "5029caac-639f-2a68-9ed5-804ae78f1af7",
+ "x-ms-request-id": "d08a4394-501e-0010-6c83-d56215000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:22:27.0002725-08:00",
+ "RandomSeed": "306271043",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttp://kasoboltest.blob.core.windows.net\nhttp://kasoboltest.file.core.windows.net\nhttp://kasoboltest.queue.core.windows.net\nhttp://kasoboltest.table.core.windows.net\n\n\n\n\nhttp://kasoboltest-secondary.blob.core.windows.net\nhttp://kasoboltest-secondary.file.core.windows.net\nhttp://kasoboltest-secondary.queue.core.windows.net\nhttp://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=http://kasoboltest.blob.core.windows.net/;QueueEndpoint=http://kasoboltest.queue.core.windows.net/;FileEndpoint=http://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=http://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=http://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=http://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..357fac1af07d
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,102 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-1e92a6e4-22b1-406a-03c4-6ed06450727b?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-eb09237cf8c44e49a906a169d3f85f02-19538c302c5a5d43-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "1264ed91-64b6-a7e2-cebb-9bb670d90b6a",
+ "x-ms-date": "Fri, 18 Dec 2020 21:40:44 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:40:44 GMT",
+ "ETag": "\u00220x8D8A39D938354FA\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:40:45 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1264ed91-64b6-a7e2-cebb-9bb670d90b6a",
+ "x-ms-request-id": "1c7ab277-001e-0008-4586-d54f80000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/?restype=service\u0026comp=properties\u0026sv=2020-04-08\u0026ss=bfqt\u0026srt=sco\u0026spr=https\u0026se=2020-12-18T22:40:45Z\u0026sp=rwdxlacuptf\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-4cb1dd0c7d4f4f4997fc372804ffb0bf-cb3a7aca73d62b40-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "763fe34f-60ec-ffc5-d036-918d475f2307",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Access-Control-Allow-Origin": "*",
+ "Content-Type": "application/xml",
+ "Date": "Fri, 18 Dec 2020 21:40:44 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "763fe34f-60ec-ffc5-d036-918d475f2307",
+ "x-ms-request-id": "7aeaffb5-401e-002d-6786-d5d733000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CStorageServiceProperties\u003E\u003CLogging\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CRead\u003Efalse\u003C/Read\u003E\u003CWrite\u003Efalse\u003C/Write\u003E\u003CDelete\u003Efalse\u003C/Delete\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003C/RetentionPolicy\u003E\u003C/Logging\u003E\u003CHourMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003C/RetentionPolicy\u003E\u003C/HourMetrics\u003E\u003CMinuteMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003C/RetentionPolicy\u003E\u003C/MinuteMetrics\u003E\u003CCors\u003E\u003CCorsRule\u003E\u003CAllowedMethods\u003EGET\u003C/AllowedMethods\u003E\u003CAllowedOrigins\u003E*\u003C/AllowedOrigins\u003E\u003CAllowedHeaders\u003Ex-ms-meta-xyz,x-ms-meta-data*\u003C/AllowedHeaders\u003E\u003CExposedHeaders\u003Ex-ms-meta-source*\u003C/ExposedHeaders\u003E\u003CMaxAgeInSeconds\u003E0\u003C/MaxAgeInSeconds\u003E\u003C/CorsRule\u003E\u003C/Cors\u003E\u003CDeleteRetentionPolicy\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003CAllowPermanentDelete\u003Efalse\u003C/AllowPermanentDelete\u003E\u003C/DeleteRetentionPolicy\u003E\u003CStaticWebsite\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003C/StaticWebsite\u003E\u003CDefaultServiceVersion\u003E2019-02-02\u003C/DefaultServiceVersion\u003E\u003C/StorageServiceProperties\u003E"
+ },
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-1e92a6e4-22b1-406a-03c4-6ed06450727b?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-8d1db5a89e8e8f4a90fba6345085bdf5-fdbaaf16f9e2294b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "8d67f551-949a-e47d-5a84-f9b5396fb930",
+ "x-ms-date": "Fri, 18 Dec 2020 21:40:45 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:40:44 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "8d67f551-949a-e47d-5a84-f9b5396fb930",
+ "x-ms-request-id": "1c7ab341-001e-0008-7a86-d54f80000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:40:45.4205208-08:00",
+ "RandomSeed": "1260380577",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..56df0387a1d0
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,102 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-0270dabd-f01e-bc89-92ce-576dbf850e7d?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-72f632cae73c9648b30a6a5f661510f8-7635ead8948de144-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "394ebb3d-24d2-212a-9abb-840f636a4970",
+ "x-ms-date": "Fri, 18 Dec 2020 21:40:45 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:40:45 GMT",
+ "ETag": "\u00220x8D8A39D93CDF0E8\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:40:45 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "394ebb3d-24d2-212a-9abb-840f636a4970",
+ "x-ms-request-id": "80895dd1-e01e-002b-5c86-d5204b000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/?restype=service\u0026comp=properties\u0026sv=2020-04-08\u0026ss=bfqt\u0026srt=sco\u0026spr=https\u0026se=2020-12-18T22:40:45Z\u0026sp=rwdxlacuptf\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-79d815dbd2cd0f4e8045409e0f7255b3-fd2a0b309ad6274e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "032fc277-d437-92aa-97d4-db85c051df2b",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Access-Control-Allow-Origin": "*",
+ "Content-Type": "application/xml",
+ "Date": "Fri, 18 Dec 2020 21:40:45 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "032fc277-d437-92aa-97d4-db85c051df2b",
+ "x-ms-request-id": "ebcc4ae3-301e-0029-1f86-d522b1000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CStorageServiceProperties\u003E\u003CLogging\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CRead\u003Efalse\u003C/Read\u003E\u003CWrite\u003Efalse\u003C/Write\u003E\u003CDelete\u003Efalse\u003C/Delete\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003C/RetentionPolicy\u003E\u003C/Logging\u003E\u003CHourMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003C/RetentionPolicy\u003E\u003C/HourMetrics\u003E\u003CMinuteMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003C/RetentionPolicy\u003E\u003C/MinuteMetrics\u003E\u003CCors\u003E\u003CCorsRule\u003E\u003CAllowedMethods\u003EGET\u003C/AllowedMethods\u003E\u003CAllowedOrigins\u003E*\u003C/AllowedOrigins\u003E\u003CAllowedHeaders\u003Ex-ms-meta-xyz,x-ms-meta-data*\u003C/AllowedHeaders\u003E\u003CExposedHeaders\u003Ex-ms-meta-source*\u003C/ExposedHeaders\u003E\u003CMaxAgeInSeconds\u003E0\u003C/MaxAgeInSeconds\u003E\u003C/CorsRule\u003E\u003C/Cors\u003E\u003CDeleteRetentionPolicy\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003CAllowPermanentDelete\u003Efalse\u003C/AllowPermanentDelete\u003E\u003C/DeleteRetentionPolicy\u003E\u003CStaticWebsite\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003C/StaticWebsite\u003E\u003CDefaultServiceVersion\u003E2019-02-02\u003C/DefaultServiceVersion\u003E\u003C/StorageServiceProperties\u003E"
+ },
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-0270dabd-f01e-bc89-92ce-576dbf850e7d?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-54b5bc70edac6f4fbea51cf5adfbe031-2093eaeaa9325f46-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "a1976299-453a-b138-639f-dc26fc37b627",
+ "x-ms-date": "Fri, 18 Dec 2020 21:40:45 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:40:45 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "a1976299-453a-b138-639f-dc26fc37b627",
+ "x-ms-request-id": "80895e32-e01e-002b-2b86-d5204b000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:40:45.8505196-08:00",
+ "RandomSeed": "1096448553",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..c6f7900a570f
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-7891c908-02c6-2027-d04d-c1714ce3ecfa?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-cc964d2d12f4fc46b0d13f85556a4cfe-7ff99cfc13581349-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "28a5f832-4e81-48e6-b24b-13ba229e08dc",
+ "x-ms-date": "Fri, 18 Dec 2020 21:41:13 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:41:13 GMT",
+ "ETag": "\u00220x8D8A39DA493DC43\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:41:13 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "28a5f832-4e81-48e6-b24b-13ba229e08dc",
+ "x-ms-request-id": "f5fdc334-301e-004f-3986-d590eb000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-7891c908-02c6-2027-d04d-c1714ce3ecfa?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-2590371c3fae2e41bb5442a7c580897d-504616c1aff77f48-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "533e278f-c43e-7678-a780-008d6583519c",
+ "x-ms-date": "Fri, 18 Dec 2020 21:41:14 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:41:13 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "533e278f-c43e-7678-a780-008d6583519c",
+ "x-ms-request-id": "f5fdc36e-301e-004f-6086-d590eb000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:41:14.0528600-08:00",
+ "RandomSeed": "1214442532",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..df675a867b70
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Blobs/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-7d4c78a4-e1c6-56e7-9cbd-a2467ce6cda7?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-1b2bbc92ee394848a3c5c6df750e146d-5c70f9985ffdd249-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "70e9cee1-af70-b27c-e941-7b01d553bf6f",
+ "x-ms-date": "Fri, 18 Dec 2020 21:41:14 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:41:13 GMT",
+ "ETag": "\u00220x8D8A39DA4C26BD4\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 21:41:14 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "70e9cee1-af70-b27c-e941-7b01d553bf6f",
+ "x-ms-request-id": "242b9ec4-e01e-004d-5186-d59211000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.blob.core.windows.net/test-container-7d4c78a4-e1c6-56e7-9cbd-a2467ce6cda7?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-3a66c5afc0f7454ca1bff3f6e26ed3d7-df8c4a4684f95649-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Blobs/12.8.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "ae650b25-5dfd-d037-fcc5-1b6f1bf54324",
+ "x-ms-date": "Fri, 18 Dec 2020 21:41:14 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 21:41:13 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "ae650b25-5dfd-d037-fcc5-1b6f1bf54324",
+ "x-ms-request-id": "242b9ed9-e01e-004d-6386-d59211000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T13:41:14.2948611-08:00",
+ "RandomSeed": "167585905",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Common/src/Shared/Errors.Clients.cs b/sdk/storage/Azure.Storage.Common/src/Shared/Errors.Clients.cs
index ab39ef16554e..6f1f35b5b88d 100644
--- a/sdk/storage/Azure.Storage.Common/src/Shared/Errors.Clients.cs
+++ b/sdk/storage/Azure.Storage.Common/src/Shared/Errors.Clients.cs
@@ -47,6 +47,12 @@ public static InvalidOperationException StreamMustBeAtPosition0()
public static InvalidOperationException TokenCredentialsRequireHttps()
=> new InvalidOperationException("Use of token credentials requires HTTPS");
+ public static ArgumentException SasCredentialRequiresUriWithoutSas(Uri uri)
+ => new ArgumentException(
+ $"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature: {uri}\n" +
+ $"You can remove the shared access signature by creating a {typeof(TUriBuilder).Name}, setting {typeof(TUriBuilder).Name}.Sas to null," +
+ $" and calling {typeof(TUriBuilder).Name}.ToUri.");
+
public static InvalidOperationException SasMissingData(string paramName)
=> new InvalidOperationException($"SAS is missing required parameter: {paramName}");
diff --git a/sdk/storage/Azure.Storage.Common/src/Shared/StorageClientOptions.cs b/sdk/storage/Azure.Storage.Common/src/Shared/StorageClientOptions.cs
index ad67f1bc5d3d..f27c60178cb7 100644
--- a/sdk/storage/Azure.Storage.Common/src/Shared/StorageClientOptions.cs
+++ b/sdk/storage/Azure.Storage.Common/src/Shared/StorageClientOptions.cs
@@ -3,7 +3,6 @@
using System;
using System.Collections.Generic;
-using System.Net.Http;
using Azure.Core;
using Azure.Core.Pipeline;
@@ -42,6 +41,24 @@ public static HttpPipelinePolicy AsPolicy(this StorageSharedKeyCredential creden
new StorageSharedKeyPipelinePolicy(
credential ?? throw Errors.ArgumentNull(nameof(credential)));
+ ///
+ /// Get an authentication policy to sign Storage requests.
+ ///
+ /// Credential to use.
+ /// Resource Uri. Must not contain shared access signature.
+ /// An authentication policy.
+ public static HttpPipelinePolicy AsPolicy(this AzureSasCredential credential, Uri resourceUri)
+ {
+ Argument.AssertNotNull(resourceUri, nameof(resourceUri));
+ Argument.AssertNotNull(credential, nameof(credential));
+ var queryParameters = resourceUri.GetQueryParameters();
+ if (queryParameters.ContainsKey("sig"))
+ {
+ throw Errors.SasCredentialRequiresUriWithoutSas(resourceUri);
+ }
+ return new AzureSasCredentialSynchronousPolicy(credential);
+ }
+
///
/// Get an authentication policy to sign Storage requests.
///
diff --git a/sdk/storage/Azure.Storage.Common/tests/Shared/TestHelper.cs b/sdk/storage/Azure.Storage.Common/tests/Shared/TestHelper.cs
index 4c65ac221253..fb46f81b5bf3 100644
--- a/sdk/storage/Azure.Storage.Common/tests/Shared/TestHelper.cs
+++ b/sdk/storage/Azure.Storage.Common/tests/Shared/TestHelper.cs
@@ -59,9 +59,26 @@ public static void AssertExpectedException(Action action, T expectedException
where T : Exception
=> AssertExpectedException(action, expectedException, GetDefaultExceptionAssertion(predicate));
- public static void AssertExpectedException(Action action, Func predicate = null)
+ public static void AssertExpectedException(Action action, Func predicate)
where T : Exception
- => AssertExpectedException(action, default, GetDefaultExceptionAssertion((_, a) => predicate(a)));
+ {
+ Assert.IsNotNull(action);
+ Assert.IsNotNull(predicate);
+
+ try
+ {
+ action();
+
+ Assert.Fail("Expected exception not found");
+ }
+ catch (T actualException)
+ {
+ if (!predicate(actualException))
+ {
+ Assert.Fail($"Unexpected exception: {actualException.Message}");
+ }
+ }
+ }
public static void AssertExpectedException(Action action, T expectedException, Action assertion)
where T : Exception
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/CHANGELOG.md b/sdk/storage/Azure.Storage.Files.DataLake/CHANGELOG.md
index f1373bfc5a10..a760840933c4 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/CHANGELOG.md
+++ b/sdk/storage/Azure.Storage.Files.DataLake/CHANGELOG.md
@@ -5,6 +5,7 @@
- Added constructors taking connection string to DataLakeServiceClient, DataLakeFileSystemClient, DataLakeDirectoryClient, and DataLakeFileClient.
- Fixed bug where DataLakePathClient.SetPermissions(), DataLakeFileClient.SetPermissions(), and DataLakeDirectoryClient.SetPermissions() could not just set Owner or Group.
- Fixed bug where DataLakeDirectoryClient initialized with a Uri would throw a null exception when GetPaths() was called.
+- Added support for AzureSasCredential. That allows SAS rotation for long living clients.
## 12.6.0-beta.1 (2020-12-07)
- Added support for service version 2020-04-08.
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/api/Azure.Storage.Files.DataLake.netstandard2.0.cs b/sdk/storage/Azure.Storage.Files.DataLake/api/Azure.Storage.Files.DataLake.netstandard2.0.cs
index 47529821ff4d..4d3b7939aafe 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/api/Azure.Storage.Files.DataLake.netstandard2.0.cs
+++ b/sdk/storage/Azure.Storage.Files.DataLake/api/Azure.Storage.Files.DataLake.netstandard2.0.cs
@@ -20,6 +20,8 @@ protected DataLakeDirectoryClient() { }
public DataLakeDirectoryClient(string connectionString, string fileSystemName, string directoryPath) { }
public DataLakeDirectoryClient(string connectionString, string fileSystemName, string directoryPath, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeDirectoryClient(System.Uri directoryUri) { }
+ public DataLakeDirectoryClient(System.Uri directoryUri, Azure.AzureSasCredential credential) { }
+ public DataLakeDirectoryClient(System.Uri directoryUri, Azure.AzureSasCredential credential, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeDirectoryClient(System.Uri directoryUri, Azure.Core.TokenCredential credential) { }
public DataLakeDirectoryClient(System.Uri directoryUri, Azure.Core.TokenCredential credential, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeDirectoryClient(System.Uri directoryUri, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
@@ -68,6 +70,8 @@ protected DataLakeFileClient() { }
public DataLakeFileClient(string connectionString, string fileSystemName, string filePath) { }
public DataLakeFileClient(string connectionString, string fileSystemName, string filePath, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeFileClient(System.Uri fileUri) { }
+ public DataLakeFileClient(System.Uri fileUri, Azure.AzureSasCredential credential) { }
+ public DataLakeFileClient(System.Uri fileUri, Azure.AzureSasCredential credential, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeFileClient(System.Uri fileUri, Azure.Core.TokenCredential credential) { }
public DataLakeFileClient(System.Uri fileUri, Azure.Core.TokenCredential credential, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeFileClient(System.Uri fileUri, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
@@ -155,6 +159,8 @@ protected DataLakeFileSystemClient() { }
public DataLakeFileSystemClient(string connectionString, string fileSystemName) { }
public DataLakeFileSystemClient(string connectionString, string fileSystemName, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeFileSystemClient(System.Uri fileSystemUri) { }
+ public DataLakeFileSystemClient(System.Uri fileSystemUri, Azure.AzureSasCredential credential) { }
+ public DataLakeFileSystemClient(System.Uri fileSystemUri, Azure.AzureSasCredential credential, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeFileSystemClient(System.Uri fileSystemUri, Azure.Core.TokenCredential credential) { }
public DataLakeFileSystemClient(System.Uri fileSystemUri, Azure.Core.TokenCredential credential, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeFileSystemClient(System.Uri fileSystemUri, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
@@ -228,6 +234,8 @@ public DataLakePathClient(Azure.Storage.Files.DataLake.DataLakeFileSystemClient
public DataLakePathClient(string connectionString, string fileSystemName, string path) { }
public DataLakePathClient(string connectionString, string fileSystemName, string path, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakePathClient(System.Uri pathUri) { }
+ public DataLakePathClient(System.Uri pathUri, Azure.AzureSasCredential credential) { }
+ public DataLakePathClient(System.Uri pathUri, Azure.AzureSasCredential credential, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakePathClient(System.Uri pathUri, Azure.Core.TokenCredential credential) { }
public DataLakePathClient(System.Uri pathUri, Azure.Core.TokenCredential credential, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakePathClient(System.Uri pathUri, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
@@ -278,6 +286,8 @@ protected DataLakeServiceClient() { }
public DataLakeServiceClient(string connectionString) { }
public DataLakeServiceClient(string connectionString, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeServiceClient(System.Uri serviceUri) { }
+ public DataLakeServiceClient(System.Uri serviceUri, Azure.AzureSasCredential credential) { }
+ public DataLakeServiceClient(System.Uri serviceUri, Azure.AzureSasCredential credential, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeServiceClient(System.Uri serviceUri, Azure.Core.TokenCredential credential) { }
public DataLakeServiceClient(System.Uri serviceUri, Azure.Core.TokenCredential credential, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
public DataLakeServiceClient(System.Uri serviceUri, Azure.Storage.Files.DataLake.DataLakeClientOptions options) { }
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/src/Azure.Storage.Files.DataLake.csproj b/sdk/storage/Azure.Storage.Files.DataLake/src/Azure.Storage.Files.DataLake.csproj
index f111cdaca769..b1eb11c3e364 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/src/Azure.Storage.Files.DataLake.csproj
+++ b/sdk/storage/Azure.Storage.Files.DataLake/src/Azure.Storage.Files.DataLake.csproj
@@ -27,6 +27,7 @@
+
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeDirectoryClient.cs b/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeDirectoryClient.cs
index 05c516a1b444..0ae4f17be252 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeDirectoryClient.cs
+++ b/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeDirectoryClient.cs
@@ -158,6 +158,53 @@ public DataLakeDirectoryClient(Uri directoryUri, StorageSharedKeyCredential cred
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the directory that includes the
+ /// name of the account, the name of the file system, and the path of the
+ /// directory.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public DataLakeDirectoryClient(Uri directoryUri, AzureSasCredential credential)
+ : this(directoryUri, credential, null)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the directory that includes the
+ /// name of the account, the name of the file system, and the path of the
+ /// directory.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public DataLakeDirectoryClient(Uri directoryUri, AzureSasCredential credential, DataLakeClientOptions options)
+ : this(directoryUri, credential.AsPolicy(directoryUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeFileClient.cs b/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeFileClient.cs
index 732c1512766e..c504f7e7bd20 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeFileClient.cs
+++ b/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeFileClient.cs
@@ -179,6 +179,51 @@ public DataLakeFileClient(Uri fileUri, StorageSharedKeyCredential credential, Da
{
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// A referencing the file that includes the
+ /// name of the account, the name of the file system, and the path of the
+ /// file.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public DataLakeFileClient(Uri fileUri, AzureSasCredential credential)
+ : this(fileUri, credential, null)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// A referencing the file that includes the
+ /// name of the account, the name of the file system, and the path of the
+ /// file.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional that define the transport
+ /// pipeline policies for authentication, retries, etc., that are
+ /// applied to every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public DataLakeFileClient(Uri fileUri, AzureSasCredential credential, DataLakeClientOptions options)
+ : this(fileUri, credential.AsPolicy(fileUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the class.
///
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeFileSystemClient.cs b/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeFileSystemClient.cs
index 3c8ffa2400e9..b15d4a8063cc 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeFileSystemClient.cs
+++ b/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeFileSystemClient.cs
@@ -278,6 +278,51 @@ public DataLakeFileSystemClient(Uri fileSystemUri, StorageSharedKeyCredential cr
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the share that includes the
+ /// name of the account and the name of the file system.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public DataLakeFileSystemClient(Uri fileSystemUri, AzureSasCredential credential)
+ : this(fileSystemUri, credential, null)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the share that includes the
+ /// name of the account and the name of the file system.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public DataLakeFileSystemClient(Uri fileSystemUri, AzureSasCredential credential, DataLakeClientOptions options)
+ : this(fileSystemUri, credential.AsPolicy(fileSystemUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -342,6 +387,7 @@ internal DataLakeFileSystemClient(
DataLakeClientOptions options,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(fileSystemUri, nameof(fileSystemUri));
DataLakeUriBuilder uriBuilder = new DataLakeUriBuilder(fileSystemUri);
options ??= new DataLakeClientOptions();
_uri = fileSystemUri;
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakePathClient.cs b/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakePathClient.cs
index 1ae980046879..6dbd3b0c051e 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakePathClient.cs
+++ b/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakePathClient.cs
@@ -344,6 +344,53 @@ public DataLakePathClient(Uri pathUri, StorageSharedKeyCredential credential, Da
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the resource that includes the
+ /// name of the account, the name of the file system, and the path to the
+ /// resource.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public DataLakePathClient(Uri pathUri, AzureSasCredential credential)
+ : this(pathUri, credential, null)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the resource that includes the
+ /// name of the account, the name of the file system, and the path to the
+ /// resource.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public DataLakePathClient(Uri pathUri, AzureSasCredential credential, DataLakeClientOptions options)
+ : this(pathUri, credential.AsPolicy(pathUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -425,6 +472,7 @@ internal DataLakePathClient(
DataLakeClientOptions options,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(pathUri, nameof(pathUri));
DataLakeUriBuilder uriBuilder = new DataLakeUriBuilder(pathUri);
options ??= new DataLakeClientOptions();
_uri = pathUri;
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeServiceClient.cs b/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeServiceClient.cs
index f36e38cacb92..e7b58c8d6520 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeServiceClient.cs
+++ b/sdk/storage/Azure.Storage.Files.DataLake/src/DataLakeServiceClient.cs
@@ -238,6 +238,49 @@ public DataLakeServiceClient(Uri serviceUri, StorageSharedKeyCredential credenti
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the Data Lake service.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public DataLakeServiceClient(Uri serviceUri, AzureSasCredential credential)
+ : this(serviceUri, credential, null)
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the Data Lake service.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public DataLakeServiceClient(Uri serviceUri, AzureSasCredential credential, DataLakeClientOptions options)
+ : this(serviceUri, credential.AsPolicy(serviceUri), options, null, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -328,6 +371,7 @@ internal DataLakeServiceClient(
ClientDiagnostics clientDiagnostics,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(serviceUri, nameof(serviceUri));
options ??= new DataLakeClientOptions();
_pipeline = options.Build(authentication);
_uri = serviceUri;
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/DirectoryClientTests.cs b/sdk/storage/Azure.Storage.Files.DataLake/tests/DirectoryClientTests.cs
index d543996080f3..91bb6386383f 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/tests/DirectoryClientTests.cs
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/DirectoryClientTests.cs
@@ -165,6 +165,39 @@ public void Ctor_TokenCredential_Http()
new ArgumentException("Cannot use TokenCredential without HTTPS."));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ await using DisposingFileSystem test = await GetNewFileSystem();
+ var client = test.FileSystem.GetDirectoryClient(GetNewDirectoryName());
+ await client.CreateIfNotExistsAsync();
+ Uri uri = client.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new DataLakeDirectoryClient(uri, new AzureSasCredential(sas), GetOptions()));
+ PathProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ await using DisposingFileSystem test = await GetNewFileSystem();
+ Uri uri = test.FileSystem.GetDirectoryClient(GetNewDirectoryName()).Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new DataLakeDirectoryClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public async Task CreateAsync()
{
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/FileClientTests.cs b/sdk/storage/Azure.Storage.Files.DataLake/tests/FileClientTests.cs
index 886902ae47c8..52bd573e9ee1 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/tests/FileClientTests.cs
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/FileClientTests.cs
@@ -168,6 +168,39 @@ public async Task Ctor_ConnectionString_GenerateSas()
await sasFileClient.GetAccessControlAsync();
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ await using DisposingFileSystem test = await GetNewFileSystem();
+ var client = test.FileSystem.GetRootDirectoryClient().GetFileClient(GetNewFileName());
+ await client.CreateIfNotExistsAsync();
+ Uri uri = client.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new DataLakeFileClient(uri, new AzureSasCredential(sas), GetOptions()));
+ PathProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ await using DisposingFileSystem test = await GetNewFileSystem();
+ Uri uri = test.FileSystem.GetRootDirectoryClient().GetFileClient(GetNewFileName()).Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new DataLakeFileClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public async Task CreateAsync()
{
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/FileSystemClientTests.cs b/sdk/storage/Azure.Storage.Files.DataLake/tests/FileSystemClientTests.cs
index 39244126f8b4..d3e349cc92f5 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/tests/FileSystemClientTests.cs
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/FileSystemClientTests.cs
@@ -179,6 +179,37 @@ public void Ctor_TokenCredential_Http()
new ArgumentException("Cannot use TokenCredential without HTTPS."));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ await using DisposingFileSystem test = await GetNewFileSystem();
+ Uri uri = test.FileSystem.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new DataLakeFileSystemClient(uri, new AzureSasCredential(sas), GetOptions()));
+ FileSystemProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ await using DisposingFileSystem test = await GetNewFileSystem();
+ Uri uri = test.FileSystem.Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new DataLakeFileSystemClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public async Task GetFileClient()
{
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/ServiceClientTests.cs b/sdk/storage/Azure.Storage.Files.DataLake/tests/ServiceClientTests.cs
index 37288f29917b..9feed2a0f92e 100644
--- a/sdk/storage/Azure.Storage.Files.DataLake/tests/ServiceClientTests.cs
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/ServiceClientTests.cs
@@ -140,6 +140,35 @@ public void Ctor_TokenCredential_Http()
new ArgumentException("Cannot use TokenCredential without HTTPS."));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ Uri uri = GetServiceClient_SharedKey().Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new DataLakeServiceClient(uri, new AzureSasCredential(sas), GetOptions()));
+ var fileSystems = await sasClient.GetFileSystemsAsync().ToListAsync();
+
+ // Assert
+ Assert.IsNotNull(fileSystems);
+ }
+
+ [Test]
+ public void Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ Uri uri = GetServiceClient_SharedKey().Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new DataLakeServiceClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public async Task GetUserDelegationKey()
{
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..af8b7678de93
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,145 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-f968bdf9-4b3b-d793-46d9-11e83c61fcb3?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-a72e1d2fa0c4334b84b5d197eff1c5d2-f3d036ce7b758b43-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "fceed3b4-09f2-1c11-c3de-9c4ce7d1aea7",
+ "x-ms-date": "Fri, 18 Dec 2020 22:12:49 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:12:50 GMT",
+ "ETag": "\u00220x8D8A3A20F054022\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:12:50 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "fceed3b4-09f2-1c11-c3de-9c4ce7d1aea7",
+ "x-ms-request-id": "23a0ac22-401e-0038-708a-d5e960000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.dfs.core.windows.net/test-filesystem-f968bdf9-4b3b-d793-46d9-11e83c61fcb3/test-directory-7de29fb3-2c76-4031-84e7-67602a4ad405?resource=directory",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "If-None-Match": "*",
+ "traceparent": "00-fa7053ebb16ea446b6e6672d2fe339bb-2a8b1e8cbcb3e04c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "6296792d-f95e-88e1-a2ae-770ba1b1f278",
+ "x-ms-date": "Fri, 18 Dec 2020 22:12:50 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:12:51 GMT",
+ "ETag": "\u00220x8D8A3A20F8F118D\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:12:51 GMT",
+ "Server": [
+ "Windows-Azure-HDFS/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "6296792d-f95e-88e1-a2ae-770ba1b1f278",
+ "x-ms-request-id": "cbe8f8cc-201f-002e-188a-d51fb7000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-f968bdf9-4b3b-d793-46d9-11e83c61fcb3/test-directory-7de29fb3-2c76-4031-84e7-67602a4ad405?sv=2020-04-08\u0026ss=b\u0026srt=sco\u0026st=2020-12-18T21:12:49Z\u0026se=2020-12-18T23:12:49Z\u0026sp=rwdlac\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-485c823b4d6f5346a09698ba0b7bf491-dc77f9e31bafff48-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b132a74d-71b4-68a7-d8ab-c6c488b5ff93",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 22:12:51 GMT",
+ "ETag": "\u00220x8D8A3A20F8F118D\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:12:51 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "b132a74d-71b4-68a7-d8ab-c6c488b5ff93",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 22:12:51 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-meta-hdi_isfolder": "true",
+ "x-ms-request-id": "7c7a0b0e-601e-0010-218a-d588c8000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-f968bdf9-4b3b-d793-46d9-11e83c61fcb3?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-8eb7b98fe21cf443b14d9793e6c8d9f7-88999cb8d3ed3841-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "fabdde8a-407f-98c4-ef81-55f27e702a29",
+ "x-ms-date": "Fri, 18 Dec 2020 22:12:51 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:12:51 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "fabdde8a-407f-98c4-ef81-55f27e702a29",
+ "x-ms-request-id": "23a0ad73-401e-0038-1c8a-d5e960000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:12:49.4888869-08:00",
+ "RandomSeed": "1099316771",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..5880130a893b
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,145 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-4fca212f-3111-2e3d-ab18-8f71a8f8cf07?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-cd2a584de9deb4429aed7f2230ff738b-d48dbd9da113ae4f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "b3e3ac2c-a1c8-1ec4-4684-0150541bea3a",
+ "x-ms-date": "Fri, 18 Dec 2020 22:12:52 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:12:51 GMT",
+ "ETag": "\u00220x8D8A3A2102D0282\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:12:52 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b3e3ac2c-a1c8-1ec4-4684-0150541bea3a",
+ "x-ms-request-id": "c361224d-f01e-0060-438a-d5313f000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.dfs.core.windows.net/test-filesystem-4fca212f-3111-2e3d-ab18-8f71a8f8cf07/test-directory-af914045-98d6-d087-32ab-cb3b27992e04?resource=directory",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "If-None-Match": "*",
+ "traceparent": "00-825c54f246f6f5408e3400361007ee30-4c67f2655f1d1a4d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "bf5ecfea-b915-9443-2412-811cd688f6ac",
+ "x-ms-date": "Fri, 18 Dec 2020 22:12:52 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:12:52 GMT",
+ "ETag": "\u00220x8D8A3A210695831\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:12:52 GMT",
+ "Server": [
+ "Windows-Azure-HDFS/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "bf5ecfea-b915-9443-2412-811cd688f6ac",
+ "x-ms-request-id": "a2d50fd4-001f-005b-7d8a-d5749b000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-4fca212f-3111-2e3d-ab18-8f71a8f8cf07/test-directory-af914045-98d6-d087-32ab-cb3b27992e04?sv=2020-04-08\u0026ss=b\u0026srt=sco\u0026st=2020-12-18T21:12:52Z\u0026se=2020-12-18T23:12:52Z\u0026sp=rwdlac\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-2f1ad1ab02329b48a62dfb3c1abd0af8-b6753c5651413548-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "575162e1-6e3a-f5ee-30b1-d8029a2240af",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 22:12:53 GMT",
+ "ETag": "\u00220x8D8A3A210695831\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:12:52 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "575162e1-6e3a-f5ee-30b1-d8029a2240af",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 22:12:52 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-meta-hdi_isfolder": "true",
+ "x-ms-request-id": "94e0ac46-001e-0074-758a-d57950000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-4fca212f-3111-2e3d-ab18-8f71a8f8cf07?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-813266c89489854790193e7de36dbfa6-d25830717ed31a40-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "743aed9d-9e37-e872-0eab-af2515228edf",
+ "x-ms-date": "Fri, 18 Dec 2020 22:12:53 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:12:52 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "743aed9d-9e37-e872-0eab-af2515228edf",
+ "x-ms-request-id": "c36123f3-f01e-0060-578a-d5313f000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:12:52.1634279-08:00",
+ "RandomSeed": "90149853",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..fa9996ed2c11
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-cb188e94-e91b-d7fb-aad4-6844b7185582?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-40987d8a00f5924b84da90ffb0946e22-1c125f01f339ee42-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "33210bf6-984c-1498-1d42-93e8564a2d9b",
+ "x-ms-date": "Fri, 18 Dec 2020 22:14:06 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:14:05 GMT",
+ "ETag": "\u00220x8D8A3A23C6C037B\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:14:06 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "33210bf6-984c-1498-1d42-93e8564a2d9b",
+ "x-ms-request-id": "055272fe-c01e-0019-3b8b-d5cd1b000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-cb188e94-e91b-d7fb-aad4-6844b7185582?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-3b1f0267fbb292489d6e6db7d5ab4ae8-a290ad5c998ded4c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "6e38965c-8de0-fc4b-9a32-be70b4075c63",
+ "x-ms-date": "Fri, 18 Dec 2020 22:14:07 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:14:06 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "6e38965c-8de0-fc4b-9a32-be70b4075c63",
+ "x-ms-request-id": "055273f4-c01e-0019-258b-d5cd1b000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:14:05.6486917-08:00",
+ "RandomSeed": "1488080921",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..ba664a11ae7f
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-80b1242d-455e-6857-b098-60d6e346f9a9?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-8810fc129ff3d24ca97ee4263e450b15-d981adad6e5a434f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "a5a82421-5ce0-1bfd-316e-8a0f719d5f31",
+ "x-ms-date": "Fri, 18 Dec 2020 22:14:07 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:14:07 GMT",
+ "ETag": "\u00220x8D8A3A23D100C3D\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:14:07 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "a5a82421-5ce0-1bfd-316e-8a0f719d5f31",
+ "x-ms-request-id": "55139bb7-701e-0041-728b-d51544000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-80b1242d-455e-6857-b098-60d6e346f9a9?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-45290b2edd1f4a4e9842f2076ed4c35f-236270e405eb2c46-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "311e3855-aeb2-82a3-0abe-1c9911543f09",
+ "x-ms-date": "Fri, 18 Dec 2020 22:14:07 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:14:07 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "311e3855-aeb2-82a3-0abe-1c9911543f09",
+ "x-ms-request-id": "55139c03-701e-0041-2e8b-d51544000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:14:07.4556687-08:00",
+ "RandomSeed": "1593554776",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..7a67d0c9da0f
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,144 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-0c753d90-339f-c341-d211-d133c58f9126?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-19187a14e749d247ac5066fb52b1f7ef-67aaf5d0fe82bf46-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "62bf499f-6b03-40a2-dd3e-b61dd09724c9",
+ "x-ms-date": "Fri, 18 Dec 2020 22:16:33 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:16:33 GMT",
+ "ETag": "\u00220x8D8A3A29440A55A\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:16:34 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "62bf499f-6b03-40a2-dd3e-b61dd09724c9",
+ "x-ms-request-id": "5bfe80ea-801e-0018-4a8b-d592c7000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.dfs.core.windows.net/test-filesystem-0c753d90-339f-c341-d211-d133c58f9126/test-file-0a1e640e-a06f-9bda-4365-a90b07a45831?resource=file",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "If-None-Match": "*",
+ "traceparent": "00-76234cae37bcf74dad384a82a94f815e-5e37aa60c979584e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "068f626e-5b82-fe72-6e24-1f9ec1963938",
+ "x-ms-date": "Fri, 18 Dec 2020 22:16:34 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:16:34 GMT",
+ "ETag": "\u00220x8D8A3A294BC0A80\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:16:34 GMT",
+ "Server": [
+ "Windows-Azure-HDFS/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "068f626e-5b82-fe72-6e24-1f9ec1963938",
+ "x-ms-request-id": "7a043bf7-e01f-0088-5d8b-d5a8a9000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-0c753d90-339f-c341-d211-d133c58f9126/test-file-0a1e640e-a06f-9bda-4365-a90b07a45831?sv=2020-04-08\u0026ss=b\u0026srt=sco\u0026st=2020-12-18T21:16:33Z\u0026se=2020-12-18T23:16:33Z\u0026sp=rwdlac\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-728219e7fd192a4383883766d024cf43-6fcf9bc6066ebe4d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "a59cdf26-5214-50af-7c94-0dab0f845173",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 22:16:34 GMT",
+ "ETag": "\u00220x8D8A3A294BC0A80\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:16:34 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "a59cdf26-5214-50af-7c94-0dab0f845173",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 22:16:34 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "6eb2d0ca-701e-008a-6d8b-d51611000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-0c753d90-339f-c341-d211-d133c58f9126?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-1af4b19c05020e40940954ca177ceba6-1c7fecbb57d2004e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "e277b7c7-93f9-9224-d521-656f9b4dcfbc",
+ "x-ms-date": "Fri, 18 Dec 2020 22:16:35 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:16:34 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e277b7c7-93f9-9224-d521-656f9b4dcfbc",
+ "x-ms-request-id": "5bfe832d-801e-0018-758b-d592c7000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:16:33.0552792-08:00",
+ "RandomSeed": "1036000503",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..a665046f8707
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,144 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-5e24ace2-8a5d-b7bd-a765-b8c9da9d835d?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-e7abdce74cfdb447923ede6977b15a1d-ad6c71ef02d9fd47-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "cae53d67-cd31-1e68-2008-705740537628",
+ "x-ms-date": "Fri, 18 Dec 2020 22:16:35 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:16:35 GMT",
+ "ETag": "\u00220x8D8A3A29552419C\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:16:35 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "cae53d67-cd31-1e68-2008-705740537628",
+ "x-ms-request-id": "7c7a8d2a-601e-0010-7e8b-d588c8000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.dfs.core.windows.net/test-filesystem-5e24ace2-8a5d-b7bd-a765-b8c9da9d835d/test-file-41c32f98-8641-b608-36fc-96af404d6892?resource=file",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "If-None-Match": "*",
+ "traceparent": "00-91d8c9d41a31e148a52bcec5c22c0ca4-93dc8f336137bf4a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "1fd72137-e751-e126-352e-943536b9ded3",
+ "x-ms-date": "Fri, 18 Dec 2020 22:16:35 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:16:36 GMT",
+ "ETag": "\u00220x8D8A3A295A86308\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:16:36 GMT",
+ "Server": [
+ "Windows-Azure-HDFS/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1fd72137-e751-e126-352e-943536b9ded3",
+ "x-ms-request-id": "4a7e4a2c-c01f-006b-028b-d5ca54000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-5e24ace2-8a5d-b7bd-a765-b8c9da9d835d/test-file-41c32f98-8641-b608-36fc-96af404d6892?sv=2020-04-08\u0026ss=b\u0026srt=sco\u0026st=2020-12-18T21:16:35Z\u0026se=2020-12-18T23:16:35Z\u0026sp=rwdlac\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-8743dd90b3c7bf46a4a29510d1420f82-3945a1c9953a4a49-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "1e782115-4875-5641-2980-688a24f6c13e",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Accept-Ranges": "bytes",
+ "Content-Length": "0",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 22:16:36 GMT",
+ "ETag": "\u00220x8D8A3A295A86308\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:16:36 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-access-tier": "Hot",
+ "x-ms-access-tier-inferred": "true",
+ "x-ms-blob-type": "BlockBlob",
+ "x-ms-client-request-id": "1e782115-4875-5641-2980-688a24f6c13e",
+ "x-ms-creation-time": "Fri, 18 Dec 2020 22:16:36 GMT",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "1e977fc2-f01e-0070-5b8b-d5f457000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-5e24ace2-8a5d-b7bd-a765-b8c9da9d835d?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-aff6204d0e3bf44492e1cf9c45c6538f-befe911db126cf4f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "15207d34-bf41-575d-9bc4-c67171e5bc0b",
+ "x-ms-date": "Fri, 18 Dec 2020 22:16:36 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:16:36 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "15207d34-bf41-575d-9bc4-c67171e5bc0b",
+ "x-ms-request-id": "7c7a8e11-601e-0010-438b-d588c8000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:16:35.4914086-08:00",
+ "RandomSeed": "520864701",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..4dcb7e145425
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-a24cf40e-aad7-5a50-8878-758555d71e10?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-fddfb05b5a05f149a9a410c3357f0d80-878e07110e9d1e4e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "4b699d35-332c-f30f-6cf1-6c77e1db084b",
+ "x-ms-date": "Fri, 18 Dec 2020 22:16:52 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:16:53 GMT",
+ "ETag": "\u00220x8D8A3A29FA5ADF3\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:16:53 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "4b699d35-332c-f30f-6cf1-6c77e1db084b",
+ "x-ms-request-id": "c46ddef6-101e-0025-0a8b-d5e4dc000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-a24cf40e-aad7-5a50-8878-758555d71e10?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-eb1d3531df818347a3b6f60ff51b942b-4b2a3f140dd0354a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "97e69b2d-2710-9fac-6c46-b4075e6d2f8a",
+ "x-ms-date": "Fri, 18 Dec 2020 22:16:53 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:16:53 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "97e69b2d-2710-9fac-6c46-b4075e6d2f8a",
+ "x-ms-request-id": "c46ddf1b-101e-0025-248b-d5e4dc000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:16:52.2742494-08:00",
+ "RandomSeed": "1741434093",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..1e376f14b54d
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-43c33e7d-c105-02ff-0eac-d7bd88e74c9e?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-d0a9ea47cf97e8428236a7e52aa7fee1-fd7d9d8c5cfd714c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "e1cf9c2c-78f5-6fce-6828-ad4757968f27",
+ "x-ms-date": "Fri, 18 Dec 2020 22:16:53 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:16:53 GMT",
+ "ETag": "\u00220x8D8A3A2A026E77D\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:16:53 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e1cf9c2c-78f5-6fce-6828-ad4757968f27",
+ "x-ms-request-id": "79cc2270-a01e-0099-558b-d5321d000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-43c33e7d-c105-02ff-0eac-d7bd88e74c9e?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-6f587714ff10d5428573600ee2d8e2c5-a48df9ad7964b247-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b8f73f19-a057-9bed-f7bb-348b1d7015ba",
+ "x-ms-date": "Fri, 18 Dec 2020 22:16:54 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:16:53 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b8f73f19-a057-9bed-f7bb-348b1d7015ba",
+ "x-ms-request-id": "79cc228c-a01e-0099-6c8b-d5321d000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:16:53.7177641-08:00",
+ "RandomSeed": "1689898744",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..35d972850c21
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,109 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-d210280e-00b8-3166-91fe-8d5be98e7400?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-78e547d77bf8944eaca113873539a137-40036aa15f3d9043-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "178cc567-021e-1671-745b-c33037641f30",
+ "x-ms-date": "Fri, 18 Dec 2020 22:07:52 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:07:52 GMT",
+ "ETag": "\u00220x8D8A3A15DD621F5\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:07:53 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "178cc567-021e-1671-745b-c33037641f30",
+ "x-ms-request-id": "c46cd52d-101e-0025-258a-d5e4dc000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-d210280e-00b8-3166-91fe-8d5be98e7400?restype=container\u0026sv=2020-04-08\u0026ss=b\u0026srt=sco\u0026st=2020-12-18T21:07:52Z\u0026se=2020-12-18T23:07:52Z\u0026sp=rwdlac\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-e2a7c81897d9f141baf037ad637840a3-ca88b485cfb44341-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "23f324ac-5d01-e6e1-a6f1-1ffa80da85a8",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:07:53 GMT",
+ "ETag": "\u00220x8D8A3A15DD621F5\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:07:53 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "23f324ac-5d01-e6e1-a6f1-1ffa80da85a8",
+ "x-ms-default-encryption-scope": "$account-encryption-key",
+ "x-ms-deny-encryption-scope-override": "false",
+ "x-ms-has-immutability-policy": "false",
+ "x-ms-has-legal-hold": "false",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "835ac41e-501e-009d-788a-d5bf1a000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-d210280e-00b8-3166-91fe-8d5be98e7400?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-a1ae2e3b51d76644886950ac1add72c0-89b61eb48f694c4b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "1283f5bc-fb70-e12e-f078-b04260314a42",
+ "x-ms-date": "Fri, 18 Dec 2020 22:07:53 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:07:52 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1283f5bc-fb70-e12e-f078-b04260314a42",
+ "x-ms-request-id": "c46cd561-101e-0025-4e8a-d5e4dc000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:07:52.1201177-08:00",
+ "RandomSeed": "422833224",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..19d290f5e3db
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,109 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-0f430e4e-4c13-4d04-d1ec-70f712abf16e?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-cef4bb35e9a0954b8dc0d6d971592810-2e04ab672b96dd44-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "fb14f9a6-2cc1-a659-4ad4-dd957026815c",
+ "x-ms-date": "Fri, 18 Dec 2020 22:07:54 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:07:54 GMT",
+ "ETag": "\u00220x8D8A3A15E77F1D3\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:07:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "fb14f9a6-2cc1-a659-4ad4-dd957026815c",
+ "x-ms-request-id": "da3bb225-c01e-0026-068a-d505b8000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-0f430e4e-4c13-4d04-d1ec-70f712abf16e?restype=container\u0026sv=2020-04-08\u0026ss=b\u0026srt=sco\u0026st=2020-12-18T21:07:54Z\u0026se=2020-12-18T23:07:54Z\u0026sp=rwdlac\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-824442ebe0ad234ca038b6bed712b35a-990d33eae0e8c141-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "195037f1-f597-14ad-9f86-e43d42240cde",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:07:54 GMT",
+ "ETag": "\u00220x8D8A3A15E77F1D3\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:07:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "195037f1-f597-14ad-9f86-e43d42240cde",
+ "x-ms-default-encryption-scope": "$account-encryption-key",
+ "x-ms-deny-encryption-scope-override": "false",
+ "x-ms-has-immutability-policy": "false",
+ "x-ms-has-legal-hold": "false",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "b033660a-601e-0062-0a8a-d58f87000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-0f430e4e-4c13-4d04-d1ec-70f712abf16e?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-5267843c80077a4db1aa9c9cc0638378-6379bdd5a86a5c42-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "38a33a79-68d6-78c4-d099-e9792f01ea2f",
+ "x-ms-date": "Fri, 18 Dec 2020 22:07:54 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:07:54 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "38a33a79-68d6-78c4-d099-e9792f01ea2f",
+ "x-ms-request-id": "da3bb2ff-c01e-0026-558a-d505b8000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:07:54.0331155-08:00",
+ "RandomSeed": "1366619153",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..9e389294b3ac
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-32bdcfc0-e66a-40be-3b48-a19f982f98bf?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-d63bb3d0fda1a94599ddfc4dffe158c3-c611ee205714fc42-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "f7dad98a-085d-6ba9-4a42-727b747b7d32",
+ "x-ms-date": "Fri, 18 Dec 2020 22:09:26 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:09:27 GMT",
+ "ETag": "\u00220x8D8A3A195E61A7A\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:09:27 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "f7dad98a-085d-6ba9-4a42-727b747b7d32",
+ "x-ms-request-id": "e285fd7f-a01e-0042-178a-d5f420000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-32bdcfc0-e66a-40be-3b48-a19f982f98bf?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-8182baabfff56541bf22f016459216b9-2dfaa6ed515ef849-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "bf14cc80-a055-8662-4404-8362ee61ab4f",
+ "x-ms-date": "Fri, 18 Dec 2020 22:09:27 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:09:27 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "bf14cc80-a055-8662-4404-8362ee61ab4f",
+ "x-ms-request-id": "e285fdf4-a01e-0042-068a-d5f420000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:09:26.1153978-08:00",
+ "RandomSeed": "378882348",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..10c857dc07f2
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/FileSystemClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-d38e5717-c0e5-da9d-d548-7178b212c67d?restype=container",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-c64f188a2fe2ff42987c0ae8b6dc9299-84c6a77f6054d744-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-blob-public-access": "container",
+ "x-ms-client-request-id": "35bc8ad6-07e5-aca1-b1d8-9dd57b99558f",
+ "x-ms-date": "Fri, 18 Dec 2020 22:09:27 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:09:27 GMT",
+ "ETag": "\u00220x8D8A3A19662340E\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:09:28 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "35bc8ad6-07e5-aca1-b1d8-9dd57b99558f",
+ "x-ms-request-id": "c6bf201c-901e-0092-4d8a-d5c976000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/test-filesystem-d38e5717-c0e5-da9d-d548-7178b212c67d?restype=container",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-a79216d875f5ab42b8dece3df98bb94c-f14890b8712c7147-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "28a1cb30-9056-af97-06e7-ae667cba3287",
+ "x-ms-date": "Fri, 18 Dec 2020 22:09:28 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:09:27 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "28a1cb30-9056-af97-06e7-ae667cba3287",
+ "x-ms-request-id": "c6bf2029-901e-0092-548a-d5c976000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:09:27.8472229-08:00",
+ "RandomSeed": "858899711",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..cf248c9bd9e5
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,37 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/?comp=list\u0026sv=2020-04-08\u0026ss=b\u0026srt=sco\u0026st=2020-12-18T21:00:27Z\u0026se=2020-12-18T23:00:27Z\u0026sp=rwdlac\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "4fa417ef-51ef-69a8-8907-9e9cac21b707",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Type": "application/xml",
+ "Date": "Fri, 18 Dec 2020 22:00:28 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "4fa417ef-51ef-69a8-8907-9e9cac21b707",
+ "x-ms-request-id": "e5a0fbfb-f01e-002d-3689-d5fed3000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022https://kasobolcanaryhns.blob.core.windows.net/\u0022\u003E\u003CContainers\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmax051202ecb10e5d581543239\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:52:53 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801953BBD78FC\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmax066722beb0df80bf9045b09\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:52:55 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801953CD53760\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmax082631637b4a1848dd4874a\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:52:52 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801953B2DA168\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmax0828597a8b798b66f14b39b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:52:54 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801953C478319\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmax0925605ab32916f5a743308\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:52:50 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801953A21CC1A\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmaxasync0140271814135d4eed40f\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:50:30 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019D4858E3B4\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmaxasync033408c45719171ad749b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:50:35 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019D4B5A3D31\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmaxasync0443608a3611a3deb5479\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:50:34 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019D4A9E1E36\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmaxasync0553611f93c2cc44f8477\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:50:33 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019D49FF40C3\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmaxasync0758460326a89e270e4b7\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:50:36 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019D4BF3D9D5\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0173629e19a222cb134330b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:20:34 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C0411A490\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin019335b85bec80d0f04f359\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:51:22 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80195055C6940\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0207718c33745cde0d46e58\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:38:42 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80193408A29C5\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0253220bd5975e2c2b49cc9\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:51:24 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80195068E1BA4\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin026116236e8f98ca4d484e9\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:51:23 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019505F8292B\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0279479ad7b1265b2f4dd9a\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:51:21 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019504C341E2\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin033835e95f55be8e4b43a09\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:22:35 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C4C0C162E\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0354093eece0be2a7748de9\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:38:39 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801933EB9D0C0\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0535356fcb7ba790744e54b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:38:45 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019342149368\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin05477658cdb5cd60024629b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:22:36 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C4C8B969C\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin063205e616696d26124af6b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:51:19 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80195037FB212\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin070066150919fe6faa4c429\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:22:33 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C4B0EC35D\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0729636523a96857cb44c0b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:38:44 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80193418F1EB4\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin088722fd740974e47148cab\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:22:32 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C4A4F2101\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin094090990ba7ab3b694bbea\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:38:43 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80193410F776D\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin098040e8271bd3555f484ea\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:22:34 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C4B921509\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync002161a20ed8e60f0c4a8\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:46:10 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019CACF7FF73\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync00413912c33392ce394b3\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:43:00 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019C3BAECCF2\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync039474428258b759704a3\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:43:02 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019C3CFF93A9\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync0423303ce4ac8c65de46b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:46:09 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019CAC662C1B\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync0514312bb11dfb72e341d\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:46:11 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019CADA2B693\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync063290740f1d515dac4ce\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:42:57 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019C3A136FCB\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync0813165aafd86faa29481\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:43:01 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019C3C6AB2D1\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync083290f2dfab84fecb4f0\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:46:06 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019CAAA405DB\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync0859032c1df3c0634743c\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:43:03 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019C3D9B17E0\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync093150b46b530044d0456\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:45:57 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019CA58609CD\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003C/Containers\u003E\u003CNextMarker /\u003E\u003C/EnumerationResults\u003E"
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:00:27.6109857-08:00",
+ "RandomSeed": "1268626452",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..f0606ecc642e
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,37 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasobolcanaryhns.blob.core.windows.net/?comp=list\u0026sv=2020-04-08\u0026ss=b\u0026srt=sco\u0026st=2020-12-18T21:00:28Z\u0026se=2020-12-18T23:00:28Z\u0026sp=rwdlac\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "User-Agent": [
+ "azsdk-net-Storage.Files.DataLake/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "db556045-4a22-eb1e-8014-a528242114c3",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Type": "application/xml",
+ "Date": "Fri, 18 Dec 2020 22:00:28 GMT",
+ "Server": [
+ "Windows-Azure-Blob/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "x-ms-client-request-id": "db556045-4a22-eb1e-8014-a528242114c3",
+ "x-ms-request-id": "b3d152c2-a01e-007d-2589-d53c83000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CEnumerationResults ServiceEndpoint=\u0022https://kasobolcanaryhns.blob.core.windows.net/\u0022\u003E\u003CContainers\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmax051202ecb10e5d581543239\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:52:53 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801953BBD78FC\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmax066722beb0df80bf9045b09\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:52:55 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801953CD53760\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmax082631637b4a1848dd4874a\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:52:52 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801953B2DA168\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmax0828597a8b798b66f14b39b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:52:54 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801953C478319\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmax0925605ab32916f5a743308\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:52:50 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801953A21CC1A\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmaxasync0140271814135d4eed40f\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:50:30 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019D4858E3B4\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmaxasync033408c45719171ad749b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:50:35 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019D4B5A3D31\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmaxasync0443608a3611a3deb5479\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:50:34 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019D4A9E1E36\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmaxasync0553611f93c2cc44f8477\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:50:33 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019D49FF40C3\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmaxasync0758460326a89e270e4b7\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:50:36 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019D4BF3D9D5\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0173629e19a222cb134330b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:20:34 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C0411A490\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin019335b85bec80d0f04f359\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:51:22 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80195055C6940\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0207718c33745cde0d46e58\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:38:42 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80193408A29C5\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0253220bd5975e2c2b49cc9\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:51:24 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80195068E1BA4\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin026116236e8f98ca4d484e9\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:51:23 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019505F8292B\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0279479ad7b1265b2f4dd9a\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:51:21 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019504C341E2\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin033835e95f55be8e4b43a09\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:22:35 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C4C0C162E\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0354093eece0be2a7748de9\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:38:39 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D801933EB9D0C0\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0535356fcb7ba790744e54b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:38:45 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019342149368\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin05477658cdb5cd60024629b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:22:36 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C4C8B969C\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin063205e616696d26124af6b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:51:19 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80195037FB212\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin070066150919fe6faa4c429\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:22:33 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C4B0EC35D\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin0729636523a96857cb44c0b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:38:44 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80193418F1EB4\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin088722fd740974e47148cab\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:22:32 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C4A4F2101\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin094090990ba7ab3b694bbea\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 16:38:43 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D80193410F776D\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionmin098040e8271bd3555f484ea\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003EWed, 20 May 2020 22:22:34 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D7FD0C4B921509\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync002161a20ed8e60f0c4a8\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:46:10 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019CACF7FF73\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync00413912c33392ce394b3\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:43:00 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019C3BAECCF2\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync039474428258b759704a3\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:43:02 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019C3CFF93A9\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync0423303ce4ac8c65de46b\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:46:09 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019CAC662C1B\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync0514312bb11dfb72e341d\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:46:11 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019CADA2B693\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync063290740f1d515dac4ce\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:42:57 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019C3A136FCB\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync0813165aafd86faa29481\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:43:01 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019C3C6AB2D1\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync083290f2dfab84fecb4f0\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:46:06 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019CAAA405DB\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync0859032c1df3c0634743c\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:43:03 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019C3D9B17E0\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003CContainer\u003E\u003CName\u003Ejtcscheduledeletionminasync093150b46b530044d0456\u003C/Name\u003E\u003CProperties\u003E\u003CLast-Modified\u003ETue, 26 May 2020 17:45:57 GMT\u003C/Last-Modified\u003E\u003CEtag\u003E\u00220x8D8019CA58609CD\u0022\u003C/Etag\u003E\u003CLeaseStatus\u003Eunlocked\u003C/LeaseStatus\u003E\u003CLeaseState\u003Eavailable\u003C/LeaseState\u003E\u003CDefaultEncryptionScope\u003E$account-encryption-key\u003C/DefaultEncryptionScope\u003E\u003CDenyEncryptionScopeOverride\u003Efalse\u003C/DenyEncryptionScopeOverride\u003E\u003CHasImmutabilityPolicy\u003Efalse\u003C/HasImmutabilityPolicy\u003E\u003CHasLegalHold\u003Efalse\u003C/HasLegalHold\u003E\u003C/Properties\u003E\u003C/Container\u003E\u003C/Containers\u003E\u003CNextMarker /\u003E\u003C/EnumerationResults\u003E"
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:00:28.8041168-08:00",
+ "RandomSeed": "1643338073",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..a4f3a53af339
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,8 @@
+{
+ "Entries": [],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:00:49.0934313-08:00",
+ "RandomSeed": "1159255811",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..464e2bac5e71
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.DataLake/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,8 @@
+{
+ "Entries": [],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:00:49.4204144-08:00",
+ "RandomSeed": "1690808523",
+ "Storage_TestConfigHierarchicalNamespace": "NamespaceTenant\nkasobolcanaryhns\nU2FuaXRpemVk\nhttps://kasobolcanaryhns.blob.core.windows.net\nhttps://kasobolcanaryhns.file.core.windows.net\nhttps://kasobolcanaryhns.queue.core.windows.net\nhttps://kasobolcanaryhns.table.core.windows.net\n\n\n\n\nhttps://kasobolcanaryhns-secondary.blob.core.windows.net\nhttps://kasobolcanaryhns-secondary.file.core.windows.net\nhttps://kasobolcanaryhns-secondary.queue.core.windows.net\nhttps://kasobolcanaryhns-secondary.table.core.windows.net\nc6b5fe1a-9b59-4975-92c4-d9f728c3c371\nSanitized\n72f988bf-86f1-41af-91ab-2d7cd011db47\nhttps://login.microsoftonline.com/\nCloud\nBlobEndpoint=https://kasobolcanaryhns.blob.core.windows.net/;QueueEndpoint=https://kasobolcanaryhns.queue.core.windows.net/;FileEndpoint=https://kasobolcanaryhns.file.core.windows.net/;BlobSecondaryEndpoint=https://kasobolcanaryhns-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasobolcanaryhns-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasobolcanaryhns-secondary.file.core.windows.net/;AccountName=kasobolcanaryhns;AccountKey=Sanitized\n"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/CHANGELOG.md b/sdk/storage/Azure.Storage.Files.Shares/CHANGELOG.md
index 44d420f28024..8ae3728b71d3 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/CHANGELOG.md
+++ b/sdk/storage/Azure.Storage.Files.Shares/CHANGELOG.md
@@ -2,6 +2,7 @@
## 12.6.0-beta.2 (Unreleased)
- Fixed bug where the Stream returned by ShareFileClient.OpenRead() would return a different Length after calls to Seek().
+- Added support for AzureSasCredential. That allows SAS rotation for long living clients.
## 12.6.0-beta.1 (2020-12-07)
- Added support for service version 2020-04-08.
diff --git a/sdk/storage/Azure.Storage.Files.Shares/api/Azure.Storage.Files.Shares.netstandard2.0.cs b/sdk/storage/Azure.Storage.Files.Shares/api/Azure.Storage.Files.Shares.netstandard2.0.cs
index c46eefafd015..cc3e619709c0 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/api/Azure.Storage.Files.Shares.netstandard2.0.cs
+++ b/sdk/storage/Azure.Storage.Files.Shares/api/Azure.Storage.Files.Shares.netstandard2.0.cs
@@ -5,6 +5,7 @@ public partial class ShareClient
protected ShareClient() { }
public ShareClient(string connectionString, string shareName) { }
public ShareClient(string connectionString, string shareName, Azure.Storage.Files.Shares.ShareClientOptions options) { }
+ public ShareClient(System.Uri shareUri, Azure.AzureSasCredential credential, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public ShareClient(System.Uri shareUri, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public ShareClient(System.Uri shareUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public virtual string AccountName { get { throw null; } }
@@ -110,6 +111,7 @@ public partial class ShareDirectoryClient
protected ShareDirectoryClient() { }
public ShareDirectoryClient(string connectionString, string shareName, string directoryPath) { }
public ShareDirectoryClient(string connectionString, string shareName, string directoryPath, Azure.Storage.Files.Shares.ShareClientOptions options) { }
+ public ShareDirectoryClient(System.Uri directoryUri, Azure.AzureSasCredential credential, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public ShareDirectoryClient(System.Uri directoryUri, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public ShareDirectoryClient(System.Uri directoryUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public virtual string AccountName { get { throw null; } }
@@ -169,6 +171,7 @@ public partial class ShareFileClient
protected ShareFileClient() { }
public ShareFileClient(string connectionString, string shareName, string filePath) { }
public ShareFileClient(string connectionString, string shareName, string filePath, Azure.Storage.Files.Shares.ShareClientOptions options) { }
+ public ShareFileClient(System.Uri fileUri, Azure.AzureSasCredential credential, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public ShareFileClient(System.Uri fileUri, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public ShareFileClient(System.Uri fileUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public virtual string AccountName { get { throw null; } }
@@ -288,6 +291,7 @@ public partial class ShareServiceClient
protected ShareServiceClient() { }
public ShareServiceClient(string connectionString) { }
public ShareServiceClient(string connectionString, Azure.Storage.Files.Shares.ShareClientOptions options) { }
+ public ShareServiceClient(System.Uri serviceUri, Azure.AzureSasCredential credential, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public ShareServiceClient(System.Uri serviceUri, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public ShareServiceClient(System.Uri serviceUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Files.Shares.ShareClientOptions options = null) { }
public virtual string AccountName { get { throw null; } }
diff --git a/sdk/storage/Azure.Storage.Files.Shares/src/Azure.Storage.Files.Shares.csproj b/sdk/storage/Azure.Storage.Files.Shares/src/Azure.Storage.Files.Shares.csproj
index 5c00bdb53411..b48bb1222c14 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/src/Azure.Storage.Files.Shares.csproj
+++ b/sdk/storage/Azure.Storage.Files.Shares/src/Azure.Storage.Files.Shares.csproj
@@ -25,7 +25,9 @@
+
+
diff --git a/sdk/storage/Azure.Storage.Files.Shares/src/ShareClient.cs b/sdk/storage/Azure.Storage.Files.Shares/src/ShareClient.cs
index 0b9fef633261..5009d0a235bc 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/src/ShareClient.cs
+++ b/sdk/storage/Azure.Storage.Files.Shares/src/ShareClient.cs
@@ -219,6 +219,31 @@ public ShareClient(Uri shareUri, StorageSharedKeyCredential credential, ShareCli
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the share that includes the
+ /// name of the account and the name of the share.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public ShareClient(Uri shareUri, AzureSasCredential credential, ShareClientOptions options = default)
+ : this(shareUri, credential.AsPolicy(shareUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -244,6 +269,7 @@ internal ShareClient(
ShareClientOptions options,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(shareUri, nameof(shareUri));
options ??= new ShareClientOptions();
_uri = shareUri;
_pipeline = options.Build(authentication);
diff --git a/sdk/storage/Azure.Storage.Files.Shares/src/ShareDirectoryClient.cs b/sdk/storage/Azure.Storage.Files.Shares/src/ShareDirectoryClient.cs
index a1f24e473727..2e01331e2bb5 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/src/ShareDirectoryClient.cs
+++ b/sdk/storage/Azure.Storage.Files.Shares/src/ShareDirectoryClient.cs
@@ -261,6 +261,32 @@ public ShareDirectoryClient(Uri directoryUri, StorageSharedKeyCredential credent
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the directory that includes the
+ /// name of the account, the name of the share, and the path of the
+ /// directory.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public ShareDirectoryClient(Uri directoryUri, AzureSasCredential credential, ShareClientOptions options = default)
+ : this(directoryUri, credential.AsPolicy(directoryUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -287,6 +313,7 @@ internal ShareDirectoryClient(
ShareClientOptions options,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(directoryUri, nameof(directoryUri));
options ??= new ShareClientOptions();
_uri = directoryUri;
_pipeline = options.Build(authentication);
diff --git a/sdk/storage/Azure.Storage.Files.Shares/src/ShareFileClient.cs b/sdk/storage/Azure.Storage.Files.Shares/src/ShareFileClient.cs
index 0823de4f1487..ec7b5db39a16 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/src/ShareFileClient.cs
+++ b/sdk/storage/Azure.Storage.Files.Shares/src/ShareFileClient.cs
@@ -273,6 +273,31 @@ public ShareFileClient(Uri fileUri, StorageSharedKeyCredential credential, Share
{
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// A referencing the file that includes the
+ /// name of the account, the name of the share, and the path of the
+ /// file.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional that define the transport
+ /// pipeline policies for authentication, retries, etc., that are
+ /// applied to every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public ShareFileClient(Uri fileUri, AzureSasCredential credential, ShareClientOptions options = default)
+ : this(fileUri, credential.AsPolicy(fileUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -299,6 +324,7 @@ internal ShareFileClient(
ShareClientOptions options,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(fileUri, nameof(fileUri));
options ??= new ShareClientOptions();
_uri = fileUri;
_pipeline = options.Build(authentication);
diff --git a/sdk/storage/Azure.Storage.Files.Shares/src/ShareServiceClient.cs b/sdk/storage/Azure.Storage.Files.Shares/src/ShareServiceClient.cs
index bdffba217f1a..a5decff65083 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/src/ShareServiceClient.cs
+++ b/sdk/storage/Azure.Storage.Files.Shares/src/ShareServiceClient.cs
@@ -194,6 +194,30 @@ public ShareServiceClient(Uri serviceUri, StorageSharedKeyCredential credential,
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the file service.
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public ShareServiceClient(Uri serviceUri, AzureSasCredential credential, ShareClientOptions options = default)
+ : this(serviceUri, credential.AsPolicy(serviceUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -218,6 +242,7 @@ internal ShareServiceClient(
ShareClientOptions options,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(serviceUri, nameof(serviceUri));
options ??= new ShareClientOptions();
_uri = serviceUri;
_pipeline = options.Build(authentication);
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/DirectoryClientTests.cs b/sdk/storage/Azure.Storage.Files.Shares/tests/DirectoryClientTests.cs
index 3281c73e3696..6f4e64cae758 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/tests/DirectoryClientTests.cs
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/DirectoryClientTests.cs
@@ -70,6 +70,39 @@ public async Task Ctor_ConnectionStringEscapePath()
Assert.AreEqual(createResponse.Value.ETag, propertiesResponse.Value.ETag);
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ await using DisposingShare test = await GetTestShareAsync();
+ string sas = GetNewFileServiceSasCredentialsShare(test.Share.Name).ToString();
+ var client = test.Share.GetDirectoryClient(GetNewDirectoryName());
+ await client.CreateAsync();
+ Uri uri = client.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new ShareDirectoryClient(uri, new AzureSasCredential(sas), GetOptions()));
+ ShareDirectoryProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ await using DisposingShare test = await GetTestShareAsync();
+ string sas = GetNewFileServiceSasCredentialsShare(test.Share.Name).ToString();
+ Uri uri = test.Share.GetDirectoryClient(GetNewDirectoryName()).Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new ShareDirectoryClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public void DirectoryPathsParsing()
{
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/FileClientTests.cs b/sdk/storage/Azure.Storage.Files.Shares/tests/FileClientTests.cs
index abab124abe13..22b2eb8ad89a 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/tests/FileClientTests.cs
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/FileClientTests.cs
@@ -75,6 +75,39 @@ public async Task Ctor_ConnectionStringEscapePath()
Assert.AreEqual(createResponse.Value.ETag, propertiesResponse.Value.ETag);
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ await using DisposingShare test = await GetTestShareAsync();
+ string sas = GetNewFileServiceSasCredentialsShare(test.Share.Name).ToString();
+ var client = test.Share.GetRootDirectoryClient().GetFileClient(GetNewFileName());
+ await client.CreateAsync(1024);
+ Uri uri = client.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new ShareFileClient(uri, new AzureSasCredential(sas), GetOptions()));
+ ShareFileProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ await using DisposingShare test = await GetTestShareAsync();
+ string sas = GetNewFileServiceSasCredentialsShare(test.Share.Name).ToString();
+ Uri uri = test.Share.GetRootDirectoryClient().GetFileClient(GetNewFileName()).Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new ShareFileClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public void FilePathsParsing()
{
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/FileTestBase.cs b/sdk/storage/Azure.Storage.Files.Shares/tests/FileTestBase.cs
index 2bc85dfc8d8f..04cfcb2f5ed2 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/tests/FileTestBase.cs
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/FileTestBase.cs
@@ -157,19 +157,21 @@ public StorageSharedKeyCredential GetNewSharedKeyCredentials()
TestConfigDefault.AccountName,
TestConfigDefault.AccountKey);
- public SasQueryParameters GetNewAccountSasCredentials(StorageSharedKeyCredential sharedKeyCredentials = default)
+ public SasQueryParameters GetNewAccountSasCredentials(StorageSharedKeyCredential sharedKeyCredentials = default,
+ AccountSasResourceTypes resourceTypes = AccountSasResourceTypes.Container,
+ AccountSasPermissions permissions = AccountSasPermissions.Create | AccountSasPermissions.Delete)
{
var builder = new AccountSasBuilder
{
Protocol = SasProtocol.None,
Services = AccountSasServices.Files,
- ResourceTypes = AccountSasResourceTypes.Container,
+ ResourceTypes = resourceTypes,
StartsOn = Recording.UtcNow.AddHours(-1),
ExpiresOn = Recording.UtcNow.AddHours(+1),
IPRange = new SasIPRange(IPAddress.None, IPAddress.None)
};
- builder.SetPermissions(AccountSasPermissions.Create | AccountSasPermissions.Delete);
- return builder.ToSasQueryParameters(sharedKeyCredentials);
+ builder.SetPermissions(permissions);
+ return builder.ToSasQueryParameters(sharedKeyCredentials ?? GetNewSharedKeyCredentials());
}
public SasQueryParameters GetNewFileServiceSasCredentialsShare(string shareName, StorageSharedKeyCredential sharedKeyCredentials = default)
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/ServiceClientTests.cs b/sdk/storage/Azure.Storage.Files.Shares/tests/ServiceClientTests.cs
index df2118627955..58055c769fb2 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/tests/ServiceClientTests.cs
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/ServiceClientTests.cs
@@ -41,6 +41,35 @@ public void Ctor_ConnectionString()
//Assert.AreEqual("accountName", builder.AccountName);
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials(resourceTypes: AccountSasResourceTypes.All, permissions: AccountSasPermissions.All).ToString();
+ Uri uri = GetServiceClient_SharedKey().Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new ShareServiceClient(uri, new AzureSasCredential(sas), GetOptions()));
+ ShareServiceProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public void Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials(resourceTypes: AccountSasResourceTypes.All, permissions: AccountSasPermissions.All).ToString();
+ Uri uri = GetServiceClient_SharedKey().Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new ShareClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public async Task GetPropertiesAsync()
{
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..754c59f0af2d
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,155 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-baadf764-60e6-0591-b6c8-5067e760dc99?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-bd8200ea02bfd04eba9597249dcee4ce-43dc084003558040-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b9501d56-97ee-d051-735b-cd878a4331e2",
+ "x-ms-date": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "ETag": "\u00220x8D8A3A4E3EBAA72\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b9501d56-97ee-d051-735b-cd878a4331e2",
+ "x-ms-request-id": "876afaf1-f01a-0059-238d-d55175000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-baadf764-60e6-0591-b6c8-5067e760dc99/test-directory-616022be-9132-7d4a-9d5c-d25b0e38e22d?restype=directory",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-3adf3b6c9f7fbd419e40a48545e94ffd-e3c28dbaf5ada543-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "009b6f5a-1d28-c4ae-d3d2-1b91c4f5c13b",
+ "x-ms-date": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "x-ms-file-attributes": "None",
+ "x-ms-file-creation-time": "Now",
+ "x-ms-file-last-write-time": "Now",
+ "x-ms-file-permission": "Inherit",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "ETag": "\u00220x8D8A3A4E408A101\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "009b6f5a-1d28-c4ae-d3d2-1b91c4f5c13b",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2020-12-18T22:33:06.8659969Z",
+ "x-ms-file-creation-time": "2020-12-18T22:33:06.8659969Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2020-12-18T22:33:06.8659969Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "13890947526840590134*12114024658378361023",
+ "x-ms-request-id": "876afaf6-f01a-0059-268d-d55175000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-baadf764-60e6-0591-b6c8-5067e760dc99/test-directory-616022be-9132-7d4a-9d5c-d25b0e38e22d?restype=directory\u0026sv=2020-04-08\u0026st=2020-12-18T21:33:06Z\u0026se=2020-12-18T23:33:06Z\u0026sr=s\u0026sp=rcwdl\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-3abf4d8d95beb24ebf91c2f4303fe89d-5fcfa88687836546-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "9f012e96-e29c-2c05-c14c-f63d06192097",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "ETag": "\u00220x8D8A3A4E408A101\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-client-request-id": "9f012e96-e29c-2c05-c14c-f63d06192097",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2020-12-18T22:33:06.8659969Z",
+ "x-ms-file-creation-time": "2020-12-18T22:33:06.8659969Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2020-12-18T22:33:06.8659969Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "13890947526840590134*12114024658378361023",
+ "x-ms-request-id": "d909c113-501a-001b-128d-d57a61000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-baadf764-60e6-0591-b6c8-5067e760dc99?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-de6c2afc46b0254abbef2027edcad200-23b26d433f75734c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "96fa506f-22f4-959e-9a11-59e67195945d",
+ "x-ms-date": "Fri, 18 Dec 2020 22:33:07 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "96fa506f-22f4-959e-9a11-59e67195945d",
+ "x-ms-request-id": "876afafc-f01a-0059-2b8d-d55175000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:33:06.8173763-08:00",
+ "RandomSeed": "1295912041",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..a7066cd11da5
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,155 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-d390f12c-82fb-23fe-02bc-c796038032df?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-2dacfbc9fec61a449c0bde5d43cfe56f-77253bbaac31a746-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "dcb61a39-77a1-c88d-df45-ea30e290a143",
+ "x-ms-date": "Fri, 18 Dec 2020 22:33:07 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "ETag": "\u00220x8D8A3A4E44A91A8\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:33:07 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "dcb61a39-77a1-c88d-df45-ea30e290a143",
+ "x-ms-request-id": "f9e8ab00-b01a-0055-0b8d-d5bf84000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-d390f12c-82fb-23fe-02bc-c796038032df/test-directory-a2ec5f69-d064-0755-90a9-7c631a5e9307?restype=directory",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-818438d4d08c9f4d8d6c233479b02a71-32d915498bb0034c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "303625f6-410f-6845-c4ae-4cf8fb29ae80",
+ "x-ms-date": "Fri, 18 Dec 2020 22:33:07 GMT",
+ "x-ms-file-attributes": "None",
+ "x-ms-file-creation-time": "Now",
+ "x-ms-file-last-write-time": "Now",
+ "x-ms-file-permission": "Inherit",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "ETag": "\u00220x8D8A3A4E4508BF0\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:33:07 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "303625f6-410f-6845-c4ae-4cf8fb29ae80",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2020-12-18T22:33:07.3373168Z",
+ "x-ms-file-creation-time": "2020-12-18T22:33:07.3373168Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2020-12-18T22:33:07.3373168Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "13890947526840590134*12114024658378361023",
+ "x-ms-request-id": "f9e8ab04-b01a-0055-0d8d-d5bf84000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-d390f12c-82fb-23fe-02bc-c796038032df/test-directory-a2ec5f69-d064-0755-90a9-7c631a5e9307?restype=directory\u0026sv=2020-04-08\u0026st=2020-12-18T21:33:07Z\u0026se=2020-12-18T23:33:07Z\u0026sr=s\u0026sp=rcwdl\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-f1d37113f954b149a56cbfeb0eb87ff3-94177bca0d1ff845-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "f46db5a4-6228-97f7-d8f4-241b0945fc93",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "ETag": "\u00220x8D8A3A4E4508BF0\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:33:07 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-client-request-id": "f46db5a4-6228-97f7-d8f4-241b0945fc93",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2020-12-18T22:33:07.3373168Z",
+ "x-ms-file-creation-time": "2020-12-18T22:33:07.3373168Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2020-12-18T22:33:07.3373168Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "13890947526840590134*12114024658378361023",
+ "x-ms-request-id": "3e6fd7d9-f01a-0052-5d8d-d54901000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-d390f12c-82fb-23fe-02bc-c796038032df?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-f353f6cceee4544f8d41fdaf62f088ad-4a5e7660eca41244-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "4653ece2-b9bc-4e58-ebbf-ec3e935c0bdc",
+ "x-ms-date": "Fri, 18 Dec 2020 22:33:07 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:33:06 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "4653ece2-b9bc-4e58-ebbf-ec3e935c0bdc",
+ "x-ms-request-id": "f9e8ab07-b01a-0055-0f8d-d5bf84000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:33:07.3454149-08:00",
+ "RandomSeed": "406064618",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..0f669f5ca41d
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-f74451f3-1f87-f6d3-ff8b-cc3f1188abf4?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-1e47916c624cc7468253f833a9af059c-97ca4e03f0a4654e-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "c3921806-9b22-adbf-5c35-05045214eae2",
+ "x-ms-date": "Fri, 18 Dec 2020 22:34:42 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:34:42 GMT",
+ "ETag": "\u00220x8D8A3A51D82C1EB\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:34:43 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "c3921806-9b22-adbf-5c35-05045214eae2",
+ "x-ms-request-id": "0c48fa36-301a-004f-478d-d590eb000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-f74451f3-1f87-f6d3-ff8b-cc3f1188abf4?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-fde00ce8f8ec5c4dae39c528d1a96018-a626260cc3ede041-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "5574b54b-7602-7494-6488-80d5e76d25a4",
+ "x-ms-date": "Fri, 18 Dec 2020 22:34:43 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:34:42 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "5574b54b-7602-7494-6488-80d5e76d25a4",
+ "x-ms-request-id": "0c48fa39-301a-004f-488d-d590eb000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:34:43.4199352-08:00",
+ "RandomSeed": "1081106321",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..2a402e11f9a3
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/DirectoryClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-86f20730-bc6b-27d2-814e-c270ba3047d5?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-bb5c1cd926728947964fa7d0aee8b7d0-2bd067d94b145742-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "25292e24-df07-fd8c-17f6-53c08f635fb7",
+ "x-ms-date": "Fri, 18 Dec 2020 22:34:43 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:34:43 GMT",
+ "ETag": "\u00220x8D8A3A51DBBCA5C\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:34:43 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "25292e24-df07-fd8c-17f6-53c08f635fb7",
+ "x-ms-request-id": "5619b8cc-101a-0035-0b8d-d5faa6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-86f20730-bc6b-27d2-814e-c270ba3047d5?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-2e1fb64d2040454a9633ee30711774c3-845a8998c9679244-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "53199d9d-0f87-78d2-f972-cc6fd51e9583",
+ "x-ms-date": "Fri, 18 Dec 2020 22:34:43 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:34:43 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "53199d9d-0f87-78d2-f972-cc6fd51e9583",
+ "x-ms-request-id": "5619b8cf-101a-0035-0c8d-d5faa6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:34:43.7189359-08:00",
+ "RandomSeed": "1994461587",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..02162a513875
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,161 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-61b5a085-aa85-6028-99ad-02344331b4b2?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-0093adced1eff84aae31b665634437d1-93944d517d53a94d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "786bcd15-2fd9-2a8a-54cb-69b292ed3f4b",
+ "x-ms-date": "Fri, 18 Dec 2020 22:30:48 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "ETag": "\u00220x8D8A3A491F5CBCC\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "786bcd15-2fd9-2a8a-54cb-69b292ed3f4b",
+ "x-ms-request-id": "087f93d3-e01a-0020-028d-d5383f000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-61b5a085-aa85-6028-99ad-02344331b4b2/test-file-73b00a41-d4b8-b032-ba33-7c7da238f32e",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-7bee9d7c9ad4d14d8eb1abf54bb51acc-9cabe099cd05a442-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "62aebcc8-7cbb-4016-9bba-bea6b30d881c",
+ "x-ms-content-length": "1024",
+ "x-ms-date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "x-ms-file-attributes": "None",
+ "x-ms-file-creation-time": "Now",
+ "x-ms-file-last-write-time": "Now",
+ "x-ms-file-permission": "Inherit",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-type": "file",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "ETag": "\u00220x8D8A3A4921DAA86\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "62aebcc8-7cbb-4016-9bba-bea6b30d881c",
+ "x-ms-file-attributes": "Archive",
+ "x-ms-file-change-time": "2020-12-18T22:30:49.4306950Z",
+ "x-ms-file-creation-time": "2020-12-18T22:30:49.4306950Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2020-12-18T22:30:49.4306950Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "53270788590723121*12114024658378361023",
+ "x-ms-request-id": "087f93d7-e01a-0020-048d-d5383f000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-61b5a085-aa85-6028-99ad-02344331b4b2/test-file-73b00a41-d4b8-b032-ba33-7c7da238f32e?sv=2020-04-08\u0026st=2020-12-18T21:30:49Z\u0026se=2020-12-18T23:30:49Z\u0026sr=s\u0026sp=rcwdl\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-0e5eef6383acfc419db240b372cdb90d-0bc0caba95d73343-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "e5b58644-9189-4072-1bdd-da0b7d32ae49",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "1024",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "ETag": "\u00220x8D8A3A4921DAA86\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-client-request-id": "e5b58644-9189-4072-1bdd-da0b7d32ae49",
+ "x-ms-file-attributes": "Archive",
+ "x-ms-file-change-time": "2020-12-18T22:30:49.4306950Z",
+ "x-ms-file-creation-time": "2020-12-18T22:30:49.4306950Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2020-12-18T22:30:49.4306950Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "53270788590723121*12114024658378361023",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "a60308f5-a01a-0041-288d-d57ce0000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-type": "File",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-61b5a085-aa85-6028-99ad-02344331b4b2?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-052c800b3f02b440a409dcf745ee325c-163546513d35d248-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "2d613777-a257-4692-c8b5-43f1ef7988ff",
+ "x-ms-date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "2d613777-a257-4692-c8b5-43f1ef7988ff",
+ "x-ms-request-id": "087f93dc-e01a-0020-098d-d5383f000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:30:49.2867504-08:00",
+ "RandomSeed": "682770529",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..d8dddadfb0de
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,161 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-36d772f9-510e-b9f4-c9fe-845e515a9d54?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-d08b9a8da0b89f41a3caba3b7065bbf3-58a31d6485ede947-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "62d048ee-dd7a-5f05-878e-f54adb02a701",
+ "x-ms-date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "ETag": "\u00220x8D8A3A4925D5E20\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "62d048ee-dd7a-5f05-878e-f54adb02a701",
+ "x-ms-request-id": "379d6d36-d01a-0001-3c8d-d5550e000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-36d772f9-510e-b9f4-c9fe-845e515a9d54/test-file-312faa5a-4431-060c-1b96-b8acf90bf333",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-0ed825e58519cc4c9d44dbdfc57b5167-3b1f644d71d3104b-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "1a8e56b9-7565-a958-3cca-46e32559657b",
+ "x-ms-content-length": "1024",
+ "x-ms-date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "x-ms-file-attributes": "None",
+ "x-ms-file-creation-time": "Now",
+ "x-ms-file-last-write-time": "Now",
+ "x-ms-file-permission": "Inherit",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-type": "file",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "ETag": "\u00220x8D8A3A4926E498A\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1a8e56b9-7565-a958-3cca-46e32559657b",
+ "x-ms-file-attributes": "Archive",
+ "x-ms-file-change-time": "2020-12-18T22:30:49.9590538Z",
+ "x-ms-file-creation-time": "2020-12-18T22:30:49.9590538Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2020-12-18T22:30:49.9590538Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "53270788590723121*12114024658378361023",
+ "x-ms-request-id": "379d6d39-d01a-0001-3d8d-d5550e000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-36d772f9-510e-b9f4-c9fe-845e515a9d54/test-file-312faa5a-4431-060c-1b96-b8acf90bf333?sv=2020-04-08\u0026st=2020-12-18T21:30:49Z\u0026se=2020-12-18T23:30:49Z\u0026sr=s\u0026sp=rcwdl\u0026sig=Sanitized",
+ "RequestMethod": "HEAD",
+ "RequestHeaders": {
+ "traceparent": "00-5238a0fd0b868740937702becea43e38-fdf26f160faf8543-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "a3f23b30-d97d-e1ce-a1c6-cbbff4f726f2",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "1024",
+ "Content-Type": "application/octet-stream",
+ "Date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "ETag": "\u00220x8D8A3A4926E498A\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-client-request-id": "a3f23b30-d97d-e1ce-a1c6-cbbff4f726f2",
+ "x-ms-file-attributes": "Archive",
+ "x-ms-file-change-time": "2020-12-18T22:30:49.9590538Z",
+ "x-ms-file-creation-time": "2020-12-18T22:30:49.9590538Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2020-12-18T22:30:49.9590538Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "53270788590723121*12114024658378361023",
+ "x-ms-lease-state": "available",
+ "x-ms-lease-status": "unlocked",
+ "x-ms-request-id": "0c48f540-301a-004f-028d-d590eb000000",
+ "x-ms-server-encrypted": "true",
+ "x-ms-type": "File",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-36d772f9-510e-b9f4-c9fe-845e515a9d54?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-d86c44942bcf8c4cbfaafb7db8aae634-6539c27cb9460d4f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "e9b237c2-c266-c1fe-f310-3fccd4b82ad8",
+ "x-ms-date": "Fri, 18 Dec 2020 22:30:50 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:30:49 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e9b237c2-c266-c1fe-f310-3fccd4b82ad8",
+ "x-ms-request-id": "379d6d3b-d01a-0001-3e8d-d5550e000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:30:49.9625869-08:00",
+ "RandomSeed": "1521250716",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..40be4eacf47e
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-8dcf955d-e606-cdab-8542-9d9ed9b7727b?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-3a2e57f70dd5b64e8dface174391768a-936bb22d7a79fe42-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "4b60f912-f028-8d7e-4978-4a2946cb92a5",
+ "x-ms-date": "Fri, 18 Dec 2020 22:31:12 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:31:12 GMT",
+ "ETag": "\u00220x8D8A3A4A0219507\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:31:12 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "4b60f912-f028-8d7e-4978-4a2946cb92a5",
+ "x-ms-request-id": "ab3606e5-401a-000f-0d8d-d5b905000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-8dcf955d-e606-cdab-8542-9d9ed9b7727b?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-4b5cfbdfcca16c4a90d23f4ae7c4dbfe-ba82730e9a2ec840-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "47aa7280-b51c-f563-e1bf-9ee0298bbfcd",
+ "x-ms-date": "Fri, 18 Dec 2020 22:31:13 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:31:12 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "47aa7280-b51c-f563-e1bf-9ee0298bbfcd",
+ "x-ms-request-id": "ab3606eb-401a-000f-118d-d5b905000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:31:13.1148943-08:00",
+ "RandomSeed": "828792014",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..dbfa77693953
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/FileClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-72adc935-b073-49ca-1438-863b1bec0d7c?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-4952e28737411a4e9d28d2d46d4d098c-673584c6004b8a41-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "7349dfbe-af44-0bc6-3d78-3495395ce8bc",
+ "x-ms-date": "Fri, 18 Dec 2020 22:31:13 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:31:13 GMT",
+ "ETag": "\u00220x8D8A3A4A07DB0D8\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 22:31:13 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "7349dfbe-af44-0bc6-3d78-3495395ce8bc",
+ "x-ms-request-id": "5619ad71-101a-0035-4f8d-d5faa6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-72adc935-b073-49ca-1438-863b1bec0d7c?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-036c882f4ae8d94fa6d4839f7620ab50-35091626abbe2744-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "1c5ec07e-ec6f-6c5e-0733-dcc9b9b9d697",
+ "x-ms-date": "Fri, 18 Dec 2020 22:31:13 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:31:13 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "1c5ec07e-ec6f-6c5e-0733-dcc9b9b9d697",
+ "x-ms-request-id": "5619ad74-101a-0035-508d-d5faa6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:31:13.5949100-08:00",
+ "RandomSeed": "664859990",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..36933d993b52
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,39 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/?restype=service\u0026comp=properties\u0026sv=2020-04-08\u0026ss=f\u0026srt=sco\u0026st=2020-12-18T22:14:10Z\u0026se=2020-12-19T00:14:10Z\u0026sp=rwdxlacuptf\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-154cd4ce0728e7419cb536defd10c584-9d5eb62a46eab542-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "cc78e121-1d8e-b523-680c-2099ca850dcb",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Type": "application/xml",
+ "Date": "Fri, 18 Dec 2020 23:14:10 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "Vary": "Origin",
+ "x-ms-client-request-id": "cc78e121-1d8e-b523-680c-2099ca850dcb",
+ "x-ms-request-id": "87ef42d9-701a-0061-1793-d5102c000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CStorageServiceProperties\u003E\u003CHourMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CDays\u003E1\u003C/Days\u003E\u003C/RetentionPolicy\u003E\u003C/HourMetrics\u003E\u003CMinuteMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CIncludeAPIs\u003Efalse\u003C/IncludeAPIs\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CDays\u003E8\u003C/Days\u003E\u003C/RetentionPolicy\u003E\u003C/MinuteMetrics\u003E\u003CCors\u003E\u003CCorsRule\u003E\u003CAllowedMethods\u003EGET,PUT\u003C/AllowedMethods\u003E\u003CAllowedOrigins\u003Ewww.ab.com,www.bc.com\u003C/AllowedOrigins\u003E\u003CAllowedHeaders\u003Ex-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*\u003C/AllowedHeaders\u003E\u003CExposedHeaders\u003Ex-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*\u003C/ExposedHeaders\u003E\u003CMaxAgeInSeconds\u003E500\u003C/MaxAgeInSeconds\u003E\u003C/CorsRule\u003E\u003C/Cors\u003E\u003CProtocolSettings\u003E\u003CSMB\u003E\u003CMultichannel\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003C/Multichannel\u003E\u003C/SMB\u003E\u003C/ProtocolSettings\u003E\u003C/StorageServiceProperties\u003E"
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:14:10.3450997-08:00",
+ "RandomSeed": "320147323",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..a8f98e6b8b7f
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,39 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/?restype=service\u0026comp=properties\u0026sv=2020-04-08\u0026ss=f\u0026srt=sco\u0026st=2020-12-18T22:14:11Z\u0026se=2020-12-19T00:14:11Z\u0026sp=rwdxlacuptf\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-7c810092182978478483f8795a66613c-93bc09f116319041-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "96ee43ab-4ae1-3b9b-5222-25b3eab8301d",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Type": "application/xml",
+ "Date": "Fri, 18 Dec 2020 23:14:10 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "Vary": "Origin",
+ "x-ms-client-request-id": "96ee43ab-4ae1-3b9b-5222-25b3eab8301d",
+ "x-ms-request-id": "e10d1c4f-001a-0065-5193-d5e5ae000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CStorageServiceProperties\u003E\u003CHourMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CDays\u003E1\u003C/Days\u003E\u003C/RetentionPolicy\u003E\u003C/HourMetrics\u003E\u003CMinuteMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CIncludeAPIs\u003Efalse\u003C/IncludeAPIs\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CDays\u003E8\u003C/Days\u003E\u003C/RetentionPolicy\u003E\u003C/MinuteMetrics\u003E\u003CCors\u003E\u003CCorsRule\u003E\u003CAllowedMethods\u003EGET,PUT\u003C/AllowedMethods\u003E\u003CAllowedOrigins\u003Ewww.ab.com,www.bc.com\u003C/AllowedOrigins\u003E\u003CAllowedHeaders\u003Ex-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*\u003C/AllowedHeaders\u003E\u003CExposedHeaders\u003Ex-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*\u003C/ExposedHeaders\u003E\u003CMaxAgeInSeconds\u003E500\u003C/MaxAgeInSeconds\u003E\u003C/CorsRule\u003E\u003C/Cors\u003E\u003CProtocolSettings\u003E\u003CSMB\u003E\u003CMultichannel\u003E\u003CEnabled\u003Efalse\u003C/Enabled\u003E\u003C/Multichannel\u003E\u003C/SMB\u003E\u003C/ProtocolSettings\u003E\u003C/StorageServiceProperties\u003E"
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:14:11.1831005-08:00",
+ "RandomSeed": "2078905596",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..be7b1bde6d71
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,8 @@
+{
+ "Entries": [],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:14:30.0279858-08:00",
+ "RandomSeed": "292574581",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..dd78b7a61419
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,8 @@
+{
+ "Entries": [],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:14:30.3559861-08:00",
+ "RandomSeed": "1946027112",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..1e577e0ced51
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,108 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-d71654d6-89d7-0fa5-34c0-47ec498e9729?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-59b8f7c762bb2d40899bf1d9265db8cf-a171a6e18516fa4f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b3fe7a1c-058a-3c39-10d4-00ef73be6c1f",
+ "x-ms-date": "Fri, 18 Dec 2020 23:12:04 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:12:03 GMT",
+ "ETag": "\u00220x8D8A3AA556E7FE9\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 23:12:04 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b3fe7a1c-058a-3c39-10d4-00ef73be6c1f",
+ "x-ms-request-id": "ba7ed651-001a-002a-2c93-d521b6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-d71654d6-89d7-0fa5-34c0-47ec498e9729?restype=share\u0026sv=2020-04-08\u0026ss=f\u0026srt=sco\u0026st=2020-12-18T22:12:04Z\u0026se=2020-12-19T00:12:04Z\u0026sp=rwdxlacuptf\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-01550450b6547e41a005fd872df4792e-6a354f833478aa4c-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "cfd0d2f4-e48f-6c9e-4499-da7742a2e214",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:12:04 GMT",
+ "ETag": "\u00220x8D8A3AA556E7FE9\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 23:12:04 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-access-tier": "TransactionOptimized",
+ "x-ms-access-tier-change-time": "Fri, 18 Dec 2020 23:12:04 GMT",
+ "x-ms-client-request-id": "cfd0d2f4-e48f-6c9e-4499-da7742a2e214",
+ "x-ms-has-immutability-policy": "false",
+ "x-ms-has-legal-hold": "false",
+ "x-ms-request-id": "a931855c-801a-0012-1c93-d560ef000000",
+ "x-ms-share-quota": "5120",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-d71654d6-89d7-0fa5-34c0-47ec498e9729?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-1785ca7c799d8f479237c92f6e166d8c-ba1a0cd6c63b5841-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "a1fb66ac-9ded-7090-e05e-7252d260501f",
+ "x-ms-date": "Fri, 18 Dec 2020 23:12:04 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:12:03 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "a1fb66ac-9ded-7090-e05e-7252d260501f",
+ "x-ms-request-id": "ba7ed654-001a-002a-2d93-d521b6000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:12:04.7215696-08:00",
+ "RandomSeed": "1163979149",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..18db2b0b29c3
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,108 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-884879bb-cb66-5c72-83ec-cb4a398c5ad3?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-7af35fab760cee458897b5ed9f521661-0a0eadc9b16c0142-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "85be63ed-21f5-9b41-3967-784c6dbe298e",
+ "x-ms-date": "Fri, 18 Dec 2020 23:12:04 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:12:04 GMT",
+ "ETag": "\u00220x8D8A3AA55B3ECD6\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 23:12:05 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "85be63ed-21f5-9b41-3967-784c6dbe298e",
+ "x-ms-request-id": "897ab0c8-701a-006a-1493-d50858000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-884879bb-cb66-5c72-83ec-cb4a398c5ad3?restype=share\u0026sv=2020-04-08\u0026ss=f\u0026srt=sco\u0026st=2020-12-18T22:12:05Z\u0026se=2020-12-19T00:12:05Z\u0026sp=rwdxlacuptf\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-6c2dd611eade664787c910e8192c86a9-daef88a554466e44-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "d65cb71f-d5cd-1bdd-8c1a-2c1e848ed65f",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:12:04 GMT",
+ "ETag": "\u00220x8D8A3AA55B3ECD6\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 23:12:05 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-access-tier": "TransactionOptimized",
+ "x-ms-access-tier-change-time": "Fri, 18 Dec 2020 23:12:05 GMT",
+ "x-ms-client-request-id": "d65cb71f-d5cd-1bdd-8c1a-2c1e848ed65f",
+ "x-ms-has-immutability-policy": "false",
+ "x-ms-has-legal-hold": "false",
+ "x-ms-request-id": "08808f03-e01a-0020-1f93-d5383f000000",
+ "x-ms-share-quota": "5120",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-884879bb-cb66-5c72-83ec-cb4a398c5ad3?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-7d01789dc1458e41b3de061ea9c9f77e-42d865079a678049-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b52cfc41-5362-38c0-f684-18fd4e723910",
+ "x-ms-date": "Fri, 18 Dec 2020 23:12:05 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:12:04 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "b52cfc41-5362-38c0-f684-18fd4e723910",
+ "x-ms-request-id": "897ab0cc-701a-006a-1593-d50858000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:12:05.1248219-08:00",
+ "RandomSeed": "700378696",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..2279cbd4d668
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-02cfc5be-07d7-9184-35c9-84387485affa?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-95e27a614d264640b293f766af6cbb2e-1bf9e5dd2d5bd24d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "aa3b8b46-6148-ae14-6798-92310464267d",
+ "x-ms-date": "Fri, 18 Dec 2020 23:13:57 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:13:57 GMT",
+ "ETag": "\u00220x8D8A3AA992CB9C0\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 23:13:58 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "aa3b8b46-6148-ae14-6798-92310464267d",
+ "x-ms-request-id": "ff99afd1-901a-0060-4e93-d511d1000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-02cfc5be-07d7-9184-35c9-84387485affa?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-ace788162a46e642b1597f1c7971c0ff-95ad2ae8389eb14a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "e9f2360f-0449-adb1-b308-7f8640cb85b5",
+ "x-ms-date": "Fri, 18 Dec 2020 23:13:58 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:13:57 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "e9f2360f-0449-adb1-b308-7f8640cb85b5",
+ "x-ms-request-id": "ff99afd4-901a-0060-4f93-d511d1000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:13:58.4361084-08:00",
+ "RandomSeed": "1726585401",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..444bec76795c
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/SessionRecords/ShareClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-b154f5bf-b84e-7b24-f3fd-71a301fa9087?restype=share",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-0cc4b179ab948c4e87f11249948fc7d7-2f6d56abf7ade04a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "2d2c9d67-4706-ec2f-6f50-5ed001d707cc",
+ "x-ms-date": "Fri, 18 Dec 2020 23:13:58 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:13:57 GMT",
+ "ETag": "\u00220x8D8A3AA99636C45\u0022",
+ "Last-Modified": "Fri, 18 Dec 2020 23:13:58 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "2d2c9d67-4706-ec2f-6f50-5ed001d707cc",
+ "x-ms-request-id": "18b4ccba-d01a-000a-6893-d54d7a000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.file.core.windows.net/test-share-b154f5bf-b84e-7b24-f3fd-71a301fa9087?restype=share",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-a3e6ff2f88789a4faba16c43d30a3ac7-621e5f2351a73049-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Files.Shares/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "643bc273-63ce-b780-f6a8-fc1dc03be802",
+ "x-ms-date": "Fri, 18 Dec 2020 23:13:58 GMT",
+ "x-ms-delete-snapshots": "include",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2020-04-08"
+ },
+ "RequestBody": null,
+ "StatusCode": 202,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:13:57 GMT",
+ "Server": [
+ "Windows-Azure-File/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-client-request-id": "643bc273-63ce-b780-f6a8-fc1dc03be802",
+ "x-ms-request-id": "18b4ccbd-d01a-000a-6993-d54d7a000000",
+ "x-ms-version": "2020-04-08"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:13:58.6821447-08:00",
+ "RandomSeed": "1757016064",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Files.Shares/tests/ShareClientTests.cs b/sdk/storage/Azure.Storage.Files.Shares/tests/ShareClientTests.cs
index 66933273c3ab..6213505f7647 100644
--- a/sdk/storage/Azure.Storage.Files.Shares/tests/ShareClientTests.cs
+++ b/sdk/storage/Azure.Storage.Files.Shares/tests/ShareClientTests.cs
@@ -121,6 +121,37 @@ async Task GetFileClient(ShareClient share)
}
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ await using DisposingShare test = await GetTestShareAsync();
+ string sas = GetNewAccountSasCredentials(resourceTypes: AccountSasResourceTypes.All, permissions: AccountSasPermissions.All).ToString();
+ Uri uri = test.Share.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new ShareClient(uri, new AzureSasCredential(sas), GetOptions()));
+ ShareProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ await using DisposingShare test = await GetTestShareAsync();
+ string sas = GetNewAccountSasCredentials(resourceTypes: AccountSasResourceTypes.All, permissions: AccountSasPermissions.All).ToString();
+ Uri uri = test.Share.Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new ShareClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public void WithSnapshot()
{
diff --git a/sdk/storage/Azure.Storage.Queues/CHANGELOG.md b/sdk/storage/Azure.Storage.Queues/CHANGELOG.md
index c6c7ee1bcada..3ca4b281d67f 100644
--- a/sdk/storage/Azure.Storage.Queues/CHANGELOG.md
+++ b/sdk/storage/Azure.Storage.Queues/CHANGELOG.md
@@ -1,7 +1,7 @@
# Release History
## 12.6.0-beta.2 (Unreleased)
-
+- Added support for AzureSasCredential. That allows SAS rotation for long living clients.
## 12.6.0-beta.1 (2020-12-07)
- Fixed bug where QueueServiceClient.GetQueueClient() and QueueClient.WithClientSideEncryptionOptions() created clients that could not generate a SAS from clients that could generate a SAS.
diff --git a/sdk/storage/Azure.Storage.Queues/api/Azure.Storage.Queues.netstandard2.0.cs b/sdk/storage/Azure.Storage.Queues/api/Azure.Storage.Queues.netstandard2.0.cs
index 157cdb18ea57..31652bec23fc 100644
--- a/sdk/storage/Azure.Storage.Queues/api/Azure.Storage.Queues.netstandard2.0.cs
+++ b/sdk/storage/Azure.Storage.Queues/api/Azure.Storage.Queues.netstandard2.0.cs
@@ -5,6 +5,7 @@ public partial class QueueClient
protected QueueClient() { }
public QueueClient(string connectionString, string queueName) { }
public QueueClient(string connectionString, string queueName, Azure.Storage.Queues.QueueClientOptions options) { }
+ public QueueClient(System.Uri queueUri, Azure.AzureSasCredential credential, Azure.Storage.Queues.QueueClientOptions options = null) { }
public QueueClient(System.Uri queueUri, Azure.Core.TokenCredential credential, Azure.Storage.Queues.QueueClientOptions options = null) { }
public QueueClient(System.Uri queueUri, Azure.Storage.Queues.QueueClientOptions options = null) { }
public QueueClient(System.Uri queueUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Queues.QueueClientOptions options = null) { }
@@ -90,6 +91,7 @@ public partial class QueueServiceClient
protected QueueServiceClient() { }
public QueueServiceClient(string connectionString) { }
public QueueServiceClient(string connectionString, Azure.Storage.Queues.QueueClientOptions options) { }
+ public QueueServiceClient(System.Uri serviceUri, Azure.AzureSasCredential credential, Azure.Storage.Queues.QueueClientOptions options = null) { }
public QueueServiceClient(System.Uri serviceUri, Azure.Core.TokenCredential credential, Azure.Storage.Queues.QueueClientOptions options = null) { }
public QueueServiceClient(System.Uri serviceUri, Azure.Storage.Queues.QueueClientOptions options = null) { }
public QueueServiceClient(System.Uri serviceUri, Azure.Storage.StorageSharedKeyCredential credential, Azure.Storage.Queues.QueueClientOptions options = null) { }
diff --git a/sdk/storage/Azure.Storage.Queues/src/Azure.Storage.Queues.csproj b/sdk/storage/Azure.Storage.Queues/src/Azure.Storage.Queues.csproj
index 6c67e8921a17..1881fc3826f1 100644
--- a/sdk/storage/Azure.Storage.Queues/src/Azure.Storage.Queues.csproj
+++ b/sdk/storage/Azure.Storage.Queues/src/Azure.Storage.Queues.csproj
@@ -24,7 +24,9 @@
+
+
diff --git a/sdk/storage/Azure.Storage.Queues/src/QueueClient.cs b/sdk/storage/Azure.Storage.Queues/src/QueueClient.cs
index 631e16a1f931..6af22ef91560 100644
--- a/sdk/storage/Azure.Storage.Queues/src/QueueClient.cs
+++ b/sdk/storage/Azure.Storage.Queues/src/QueueClient.cs
@@ -265,6 +265,32 @@ public QueueClient(Uri queueUri, StorageSharedKeyCredential credential, QueueCli
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the queue that includes the
+ /// name of the account, and the name of the queue.
+ /// This is likely to be similar to "https://{account_name}.queue.core.windows.net/{queue_name}".
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public QueueClient(Uri queueUri, AzureSasCredential credential, QueueClientOptions options = default)
+ : this(queueUri, credential.AsPolicy(queueUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -314,6 +340,7 @@ internal QueueClient(
QueueClientOptions options,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(queueUri, nameof(queueUri));
_uri = queueUri;
_messagesUri = queueUri.AppendToPath(Constants.Queue.MessagesUri);
options ??= new QueueClientOptions();
diff --git a/sdk/storage/Azure.Storage.Queues/src/QueueServiceClient.cs b/sdk/storage/Azure.Storage.Queues/src/QueueServiceClient.cs
index 931078b9042c..7ff3d871336c 100644
--- a/sdk/storage/Azure.Storage.Queues/src/QueueServiceClient.cs
+++ b/sdk/storage/Azure.Storage.Queues/src/QueueServiceClient.cs
@@ -209,6 +209,31 @@ public QueueServiceClient(Uri serviceUri, StorageSharedKeyCredential credential,
{
}
+ ///
+ /// Initializes a new instance of the
+ /// class.
+ ///
+ ///
+ /// A referencing the queue service.
+ /// This is likely to be similar to "https://{account_name}.queue.core.windows.net".
+ /// Must not contain shared access signature, which should be passed in the second parameter.
+ ///
+ ///
+ /// The shared access signature credential used to sign requests.
+ ///
+ ///
+ /// Optional client options that define the transport pipeline
+ /// policies for authentication, retries, etc., that are applied to
+ /// every request.
+ ///
+ ///
+ /// This constructor should only be used when shared access signature needs to be updated during lifespan of this client.
+ ///
+ public QueueServiceClient(Uri serviceUri, AzureSasCredential credential, QueueClientOptions options = default)
+ : this(serviceUri, credential.AsPolicy(serviceUri), options, null)
+ {
+ }
+
///
/// Initializes a new instance of the
/// class.
@@ -256,6 +281,7 @@ internal QueueServiceClient(
QueueClientOptions options,
StorageSharedKeyCredential storageSharedKeyCredential)
{
+ Argument.AssertNotNull(serviceUri, nameof(serviceUri));
_uri = serviceUri;
options ??= new QueueClientOptions();
_pipeline = options.Build(authentication);
diff --git a/sdk/storage/Azure.Storage.Queues/tests/QueueClientTests.cs b/sdk/storage/Azure.Storage.Queues/tests/QueueClientTests.cs
index fc7155ab8c5a..353c6555f7fb 100644
--- a/sdk/storage/Azure.Storage.Queues/tests/QueueClientTests.cs
+++ b/sdk/storage/Azure.Storage.Queues/tests/QueueClientTests.cs
@@ -131,6 +131,37 @@ public void Ctor_TokenCredential_Http()
new ArgumentException("Cannot use TokenCredential without HTTPS."));
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ await using DisposingQueue test = await GetTestQueueAsync();
+ Uri uri = test.Queue.Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new QueueClient(uri, new AzureSasCredential(sas), GetOptions()));
+ QueueProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public async Task Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ await using DisposingQueue test = await GetTestQueueAsync();
+ Uri uri = test.Queue.Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new QueueClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public async Task CreateAsync_WithSharedKey()
{
diff --git a/sdk/storage/Azure.Storage.Queues/tests/QueueTestBase.cs b/sdk/storage/Azure.Storage.Queues/tests/QueueTestBase.cs
index 455f3e5bd498..29dfc4cde155 100644
--- a/sdk/storage/Azure.Storage.Queues/tests/QueueTestBase.cs
+++ b/sdk/storage/Azure.Storage.Queues/tests/QueueTestBase.cs
@@ -166,13 +166,15 @@ public StorageSharedKeyCredential GetNewSharedKeyCredentials()
TestConfigDefault.AccountName,
TestConfigDefault.AccountKey);
- public SasQueryParameters GetNewAccountSasCredentials(StorageSharedKeyCredential sharedKeyCredentials = default)
+ public SasQueryParameters GetNewAccountSasCredentials(
+ StorageSharedKeyCredential sharedKeyCredentials = default,
+ AccountSasResourceTypes resourceTypes = AccountSasResourceTypes.Container)
{
var builder = new AccountSasBuilder
{
Protocol = SasProtocol.None,
Services = AccountSasServices.Queues,
- ResourceTypes = AccountSasResourceTypes.Container,
+ ResourceTypes = resourceTypes,
StartsOn = Recording.UtcNow.AddHours(-1),
ExpiresOn = Recording.UtcNow.AddHours(+1),
IPRange = new SasIPRange(IPAddress.None, IPAddress.None)
@@ -185,7 +187,7 @@ public SasQueryParameters GetNewAccountSasCredentials(StorageSharedKeyCredential
AccountSasPermissions.Add |
AccountSasPermissions.Delete |
AccountSasPermissions.List);
- return builder.ToSasQueryParameters(sharedKeyCredentials);
+ return builder.ToSasQueryParameters(sharedKeyCredentials ?? GetNewSharedKeyCredentials());
}
public SasQueryParameters GetNewQueueServiceSasCredentials(string queueName, StorageSharedKeyCredential sharedKeyCredentials = default)
diff --git a/sdk/storage/Azure.Storage.Queues/tests/ServiceClientTests.cs b/sdk/storage/Azure.Storage.Queues/tests/ServiceClientTests.cs
index 2060a624e868..6753188156a9 100644
--- a/sdk/storage/Azure.Storage.Queues/tests/ServiceClientTests.cs
+++ b/sdk/storage/Azure.Storage.Queues/tests/ServiceClientTests.cs
@@ -74,6 +74,36 @@ public void Ctor_Uri()
Assert.AreEqual(accountName, builder.AccountName);
}
+ [Test]
+ public async Task Ctor_AzureSasCredential()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials(resourceTypes: AccountSasResourceTypes.Service).ToString();
+ await using DisposingQueue test = await GetTestQueueAsync();
+ Uri uri = GetServiceClient_SharedKey().Uri;
+
+ // Act
+ var sasClient = InstrumentClient(new QueueServiceClient(uri, new AzureSasCredential(sas), GetOptions()));
+ QueueServiceProperties properties = await sasClient.GetPropertiesAsync();
+
+ // Assert
+ Assert.IsNotNull(properties);
+ }
+
+ [Test]
+ public void Ctor_AzureSasCredential_VerifyNoSasInUri()
+ {
+ // Arrange
+ string sas = GetNewAccountSasCredentials().ToString();
+ Uri uri = GetServiceClient_SharedKey().Uri;
+ uri = new Uri(uri.ToString() + "?" + sas);
+
+ // Act
+ TestHelper.AssertExpectedException(
+ () => new QueueClient(uri, new AzureSasCredential(sas)),
+ e => e.Message.Contains($"You cannot use {nameof(AzureSasCredential)} when the resource URI also contains a Shared Access Signature"));
+ }
+
[Test]
public async Task GetQueuesAsync()
{
diff --git a/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..14e65e3ec708
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,97 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-a369edf7-e653-59df-83b3-6a296e927eed",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-ed8aa788f21d544985e3825dd6f0b159-8d7cd70eb156c346-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "8c7ab3ad-6a2f-1590-3d10-7abcc6b108ed",
+ "x-ms-date": "Fri, 18 Dec 2020 22:51:26 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:51:26 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "d12558f8-2003-0050-3990-d54bfb000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-a369edf7-e653-59df-83b3-6a296e927eed?comp=metadata\u0026sv=2020-04-08\u0026ss=q\u0026srt=c\u0026st=2020-12-18T21:51:25Z\u0026se=2020-12-18T23:51:25Z\u0026sp=rwdlaup\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-33e189a26ca02f47a94800dfbe106f23-d83145121fc50d4f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "ba7b8a4d-f218-45bd-1bee-b98df9edbefc",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Cache-Control": "no-cache",
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:51:26 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-approximate-messages-count": "0",
+ "x-ms-request-id": "a3ebff78-3003-006d-2490-d5fedd000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-a369edf7-e653-59df-83b3-6a296e927eed",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-0fa93c7bb7bffd4caf475cd2d2286fb6-25ccea49aef0dd41-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "3b6eb630-4d36-48d4-0b09-cedf42058a56",
+ "x-ms-date": "Fri, 18 Dec 2020 22:51:26 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 204,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:51:26 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "d1255911-2003-0050-4b90-d54bfb000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:51:25.8048823-08:00",
+ "RandomSeed": "964357845",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..f9f439cdfd5b
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,97 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-aadd9177-546b-f0cc-df0c-e3f2f21e41b7",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-2deecb1eb75bb94493c6440d855defb1-b0d3c635bf9be34f-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "238d6c0c-02c0-a212-bde1-8ecf76f4acc0",
+ "x-ms-date": "Fri, 18 Dec 2020 22:51:27 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:51:26 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "c6ff53c2-c003-001e-7b90-d58e1e000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-aadd9177-546b-f0cc-df0c-e3f2f21e41b7?comp=metadata\u0026sv=2020-04-08\u0026ss=q\u0026srt=c\u0026st=2020-12-18T21:51:27Z\u0026se=2020-12-18T23:51:27Z\u0026sp=rwdlaup\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-14f5586ea06d18418eba853dbf7ad7cc-d94798f043b0f144-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "85e5c79d-1e90-27f7-7512-588071cd3182",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Cache-Control": "no-cache",
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:51:26 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Vary": "Origin",
+ "x-ms-approximate-messages-count": "0",
+ "x-ms-request-id": "154c951a-0003-0003-6890-d557f4000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-aadd9177-546b-f0cc-df0c-e3f2f21e41b7",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-ccb8b4dc8acd0c44ac7b2b2fed37a4d2-1f3b7704506f324a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "ae320352-260f-982f-e86e-cec8a9100627",
+ "x-ms-date": "Fri, 18 Dec 2020 22:51:27 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 204,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:51:26 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "c6ff5407-c003-001e-3e90-d58e1e000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:51:27.0988809-08:00",
+ "RandomSeed": "1570953749",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..d932ecf1dda6
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,67 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-44bc7ac2-2309-db39-394a-8bd7e6c2afee",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-3006c68e504fc349b6e678069a7feaa1-5c5cbc24ca8ca741-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "038232a7-b956-36a4-afce-d95c1627a4d4",
+ "x-ms-date": "Fri, 18 Dec 2020 22:51:47 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:51:46 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "63333199-8003-005d-5e90-d5a4f7000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-44bc7ac2-2309-db39-394a-8bd7e6c2afee",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-a6df8874197fc44a9d5b92292639ea29-2498cb3499eb404a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b330317f-ab3f-c597-264a-8042c65c9681",
+ "x-ms-date": "Fri, 18 Dec 2020 22:51:47 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 204,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:51:46 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "633331b4-8003-005d-7590-d5a4f7000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:51:46.6866969-08:00",
+ "RandomSeed": "166425288",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..28e42b696b80
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/QueueClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,67 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-d210f217-fca0-1b07-a737-12689c974b9f",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-c41350da968a8c4ebcf5dbaf071bc77c-7035d2be582c5c4d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "bd9ca270-447b-c438-1431-3e99c114d531",
+ "x-ms-date": "Fri, 18 Dec 2020 22:51:47 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:51:47 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "2d4199f5-a003-0063-4c90-d512d6000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-d210f217-fca0-1b07-a737-12689c974b9f",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-6121e3506e89da45aeabadb553f9768c-c141238a98f0184d-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "f9f83521-8efa-0b23-c1cb-20feb740f092",
+ "x-ms-date": "Fri, 18 Dec 2020 22:51:47 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 204,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 22:51:47 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "2d4199fa-a003-0063-4f90-d512d6000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T14:51:47.5587318-08:00",
+ "RandomSeed": "548227842",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json
new file mode 100644
index 000000000000..b59687e69ce1
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential.json
@@ -0,0 +1,97 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-f3011465-50cf-c19d-4443-c9049be29e01",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-f9bc736cb8ccaa46a234d6378357b9fc-8ff5d49a6c01da4a-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "0b55a21f-be63-7825-0ad1-5cbe8d8a1562",
+ "x-ms-date": "Fri, 18 Dec 2020 23:04:41 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:04:40 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "ead5c815-2003-001f-5992-d58fe3000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/?restype=service\u0026comp=properties\u0026sv=2020-04-08\u0026ss=q\u0026srt=s\u0026st=2020-12-18T22:04:41Z\u0026se=2020-12-19T00:04:41Z\u0026sp=rwdlaup\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-25406a2ff0d7344e84c8f287c38a78be-dc57a17641d8e349-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "f8e53794-928d-969e-9aba-2e2e8c455aa1",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Cache-Control": "no-cache",
+ "Content-Type": "application/xml",
+ "Date": "Fri, 18 Dec 2020 23:04:41 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "Vary": "Origin",
+ "x-ms-request-id": "776b60ff-f003-001d-6992-d58d19000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CStorageServiceProperties\u003E\u003CLogging\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CRead\u003Etrue\u003C/Read\u003E\u003CWrite\u003Etrue\u003C/Write\u003E\u003CDelete\u003Efalse\u003C/Delete\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CDays\u003E5\u003C/Days\u003E\u003C/RetentionPolicy\u003E\u003C/Logging\u003E\u003CHourMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CIncludeAPIs\u003Efalse\u003C/IncludeAPIs\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CDays\u003E6\u003C/Days\u003E\u003C/RetentionPolicy\u003E\u003C/HourMetrics\u003E\u003CMinuteMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CIncludeAPIs\u003Efalse\u003C/IncludeAPIs\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CDays\u003E6\u003C/Days\u003E\u003C/RetentionPolicy\u003E\u003C/MinuteMetrics\u003E\u003CCors\u003E\u003CCorsRule\u003E\u003CAllowedMethods\u003EGET,PUT\u003C/AllowedMethods\u003E\u003CAllowedOrigins\u003Ewww.ab.com,www.bc.com\u003C/AllowedOrigins\u003E\u003CAllowedHeaders\u003Ex-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*\u003C/AllowedHeaders\u003E\u003CExposedHeaders\u003Ex-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*\u003C/ExposedHeaders\u003E\u003CMaxAgeInSeconds\u003E500\u003C/MaxAgeInSeconds\u003E\u003C/CorsRule\u003E\u003C/Cors\u003E\u003C/StorageServiceProperties\u003E"
+ },
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-f3011465-50cf-c19d-4443-c9049be29e01",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-3ec314a8609b954fa1bbf8e44cac90c0-6244ce81efe2b443-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "562a8a03-1ca5-12d5-b847-f61ccea4f0ca",
+ "x-ms-date": "Fri, 18 Dec 2020 23:04:42 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 204,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:04:41 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "ead5c84b-2003-001f-0c92-d58fe3000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:04:41.1855740-08:00",
+ "RandomSeed": "1808486870",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json
new file mode 100644
index 000000000000..96d1c9e3a3c7
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredentialAsync.json
@@ -0,0 +1,97 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-57ed95db-aa71-9839-62ae-d0be06b6c454",
+ "RequestMethod": "PUT",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-f8b6b77e003a0b4abcb60be3dd741748-0c2bb216c1d00a40-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "389f4d38-b228-babe-3b07-16343959660e",
+ "x-ms-date": "Fri, 18 Dec 2020 23:04:42 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 201,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:04:41 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "86756f58-5003-0054-7292-d5be79000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ },
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/?restype=service\u0026comp=properties\u0026sv=2020-04-08\u0026ss=q\u0026srt=s\u0026st=2020-12-18T22:04:42Z\u0026se=2020-12-19T00:04:42Z\u0026sp=rwdlaup\u0026sig=Sanitized",
+ "RequestMethod": "GET",
+ "RequestHeaders": {
+ "traceparent": "00-cbf5aa5aea141048b41ea4f26d47d7e6-29cad92ab0c94f45-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "b986d753-8c16-412b-4798-6348096232d9",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 200,
+ "ResponseHeaders": {
+ "Cache-Control": "no-cache",
+ "Content-Type": "application/xml",
+ "Date": "Fri, 18 Dec 2020 23:04:41 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "Transfer-Encoding": "chunked",
+ "Vary": "Origin",
+ "x-ms-request-id": "f1ba5e4a-2003-003d-7792-d5e1d5000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": "\uFEFF\u003C?xml version=\u00221.0\u0022 encoding=\u0022utf-8\u0022?\u003E\u003CStorageServiceProperties\u003E\u003CLogging\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CRead\u003Etrue\u003C/Read\u003E\u003CWrite\u003Etrue\u003C/Write\u003E\u003CDelete\u003Efalse\u003C/Delete\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CDays\u003E5\u003C/Days\u003E\u003C/RetentionPolicy\u003E\u003C/Logging\u003E\u003CHourMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CIncludeAPIs\u003Efalse\u003C/IncludeAPIs\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CDays\u003E6\u003C/Days\u003E\u003C/RetentionPolicy\u003E\u003C/HourMetrics\u003E\u003CMinuteMetrics\u003E\u003CVersion\u003E1.0\u003C/Version\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CIncludeAPIs\u003Efalse\u003C/IncludeAPIs\u003E\u003CRetentionPolicy\u003E\u003CEnabled\u003Etrue\u003C/Enabled\u003E\u003CDays\u003E6\u003C/Days\u003E\u003C/RetentionPolicy\u003E\u003C/MinuteMetrics\u003E\u003CCors\u003E\u003CCorsRule\u003E\u003CAllowedMethods\u003EGET,PUT\u003C/AllowedMethods\u003E\u003CAllowedOrigins\u003Ewww.ab.com,www.bc.com\u003C/AllowedOrigins\u003E\u003CAllowedHeaders\u003Ex-ms-meta-xyz,x-ms-meta-foo,x-ms-meta-data*,x-ms-meta-target*\u003C/AllowedHeaders\u003E\u003CExposedHeaders\u003Ex-ms-meta-abc,x-ms-meta-bcd,x-ms-meta-data*,x-ms-meta-source*\u003C/ExposedHeaders\u003E\u003CMaxAgeInSeconds\u003E500\u003C/MaxAgeInSeconds\u003E\u003C/CorsRule\u003E\u003C/Cors\u003E\u003C/StorageServiceProperties\u003E"
+ },
+ {
+ "RequestUri": "https://kasoboltest.queue.core.windows.net/test-queue-57ed95db-aa71-9839-62ae-d0be06b6c454",
+ "RequestMethod": "DELETE",
+ "RequestHeaders": {
+ "Authorization": "Sanitized",
+ "traceparent": "00-9ff45aa6d4e07a40ad2c0e22102d5b4c-aaec184007ab7946-00",
+ "User-Agent": [
+ "azsdk-net-Storage.Queues/12.6.0-alpha.20201218.1",
+ "(.NET Framework 4.8.4250.0; Microsoft Windows 10.0.19042 )"
+ ],
+ "x-ms-client-request-id": "62e0ef2d-add2-eff7-00c4-58c127dbb29a",
+ "x-ms-date": "Fri, 18 Dec 2020 23:04:42 GMT",
+ "x-ms-return-client-request-id": "true",
+ "x-ms-version": "2018-11-09"
+ },
+ "RequestBody": null,
+ "StatusCode": 204,
+ "ResponseHeaders": {
+ "Content-Length": "0",
+ "Date": "Fri, 18 Dec 2020 23:04:41 GMT",
+ "Server": [
+ "Windows-Azure-Queue/1.0",
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "x-ms-request-id": "86756f7a-5003-0054-1292-d5be79000000",
+ "x-ms-version": "2018-11-09"
+ },
+ "ResponseBody": []
+ }
+ ],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:04:42.4025705-08:00",
+ "RandomSeed": "1619514598",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
new file mode 100644
index 000000000000..a581f893b7ac
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUri.json
@@ -0,0 +1,8 @@
+{
+ "Entries": [],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:04:53.3246838-08:00",
+ "RandomSeed": "1911844219",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file
diff --git a/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
new file mode 100644
index 000000000000..d9d27461c2c7
--- /dev/null
+++ b/sdk/storage/Azure.Storage.Queues/tests/SessionRecords/ServiceClientTests/Ctor_AzureSasCredential_VerifyNoSasInUriAsync.json
@@ -0,0 +1,8 @@
+{
+ "Entries": [],
+ "Variables": {
+ "DateTimeOffsetNow": "2020-12-18T15:04:53.6686833-08:00",
+ "RandomSeed": "1066441212",
+ "Storage_TestConfigDefault": "ProductionTenant\nkasoboltest\nU2FuaXRpemVk\nhttps://kasoboltest.blob.core.windows.net\nhttps://kasoboltest.file.core.windows.net\nhttps://kasoboltest.queue.core.windows.net\nhttps://kasoboltest.table.core.windows.net\n\n\n\n\nhttps://kasoboltest-secondary.blob.core.windows.net\nhttps://kasoboltest-secondary.file.core.windows.net\nhttps://kasoboltest-secondary.queue.core.windows.net\nhttps://kasoboltest-secondary.table.core.windows.net\n\nSanitized\n\n\nCloud\nBlobEndpoint=https://kasoboltest.blob.core.windows.net/;QueueEndpoint=https://kasoboltest.queue.core.windows.net/;FileEndpoint=https://kasoboltest.file.core.windows.net/;BlobSecondaryEndpoint=https://kasoboltest-secondary.blob.core.windows.net/;QueueSecondaryEndpoint=https://kasoboltest-secondary.queue.core.windows.net/;FileSecondaryEndpoint=https://kasoboltest-secondary.file.core.windows.net/;AccountName=kasoboltest;AccountKey=Kg==;\nencryptionScope"
+ }
+}
\ No newline at end of file