public void FileSasBuilder_ToSasQueryParameters_NoVersionTest() { // Arrange var constants = new TestConstants(this); var shareName = GetNewShareName(); var filePath = GetNewDirectoryName(); FileSasBuilder fileSasBuilder = BuildFileSasBuilder(includeVersion: false, includeFilePath: false, constants, shareName, filePath); var signature = BuildSignature(includeFilePath: false, includeVersion: false, constants, shareName, filePath); // Act var sasQueryParameters = fileSasBuilder.ToSasQueryParameters(constants.Sas.SharedKeyCredential); // Assert Assert.AreEqual(SasQueryParameters.DefaultSasVersion, sasQueryParameters.Version); Assert.IsNull(sasQueryParameters.Services); Assert.IsNull(sasQueryParameters.ResourceTypes); Assert.AreEqual(constants.Sas.Protocol, sasQueryParameters.Protocol); Assert.AreEqual(constants.Sas.StartTime, sasQueryParameters.StartsOn); Assert.AreEqual(constants.Sas.ExpiryTime, sasQueryParameters.ExpiresOn); Assert.AreEqual(constants.Sas.IPRange, sasQueryParameters.IPRange); Assert.AreEqual(constants.Sas.Identifier, sasQueryParameters.Identifier); Assert.AreEqual(Constants.Sas.Resource.Share, sasQueryParameters.Resource); Assert.AreEqual(Permissions, sasQueryParameters.Permissions); Assert.AreEqual(signature, sasQueryParameters.Signature); AssertResponseHeaders(constants, sasQueryParameters); }
public void ToSasQueryParameters_BlobTest() { // Arrange var constants = new TestConstants(this); var containerName = this.GetNewContainerName(); var blobName = this.GetNewBlobName(); var blobSasBuilder = this.BuildBlobSasBuilder(includeBlob: true, includeSnapshot: false, containerName, blobName, constants); var signature = this.BuildSignature(includeBlob: true, includeSnapshot: false, containerName, blobName, constants); // Act var sasQueryParameters = blobSasBuilder.ToSasQueryParameters(constants.Sas.SharedKeyCredential); // Assert Assert.AreEqual(SasQueryParameters.DefaultSasVersion, sasQueryParameters.Version); Assert.AreEqual(String.Empty, sasQueryParameters.Services); Assert.AreEqual(String.Empty, sasQueryParameters.ResourceTypes); Assert.AreEqual(constants.Sas.Protocol, sasQueryParameters.Protocol); Assert.AreEqual(constants.Sas.StartTime, sasQueryParameters.StartTime); Assert.AreEqual(constants.Sas.ExpiryTime, sasQueryParameters.ExpiryTime); Assert.AreEqual(constants.Sas.IPRange, sasQueryParameters.IPRange); Assert.AreEqual(constants.Sas.Identifier, sasQueryParameters.Identifier); Assert.AreEqual(Constants.Sas.Resource.Blob, sasQueryParameters.Resource); Assert.AreEqual(Permissions, sasQueryParameters.Permissions); Assert.AreEqual(signature, sasQueryParameters.Signature); }
private string BuildSignature(bool includeFilePath, bool includeVersion, TestConstants constants, string shareName, string filePath) { var canonicalName = "/file/" + constants.Sas.Account + "/" + shareName; if (includeFilePath) { canonicalName += "/" + filePath; } var stringToSign = string.Join("\n", Permissions, SasQueryParameters.FormatTimesForSasSigning(constants.Sas.StartTime), SasQueryParameters.FormatTimesForSasSigning(constants.Sas.ExpiryTime), canonicalName, constants.Sas.Identifier, constants.Sas.IPRange.ToString(), constants.Sas.Protocol.ToProtocolString(), includeVersion ? constants.Sas.Version : SasQueryParameters.DefaultSasVersion, constants.Sas.CacheControl, constants.Sas.ContentDisposition, constants.Sas.ContentEncoding, constants.Sas.ContentLanguage, constants.Sas.ContentType); return(constants.Sas.SharedKeyCredential.ComputeHMACSHA256(stringToSign)); }
public void ToSasQueryParameters_ContainerTest() { // Arrange var constants = new TestConstants(this); var containerName = GetNewContainerName(); var blobName = GetNewBlobName(); BlobSasBuilder blobSasBuilder = BuildBlobSasBuilder(includeBlob: false, includeSnapshot: false, containerName, blobName, constants); var signature = BuildSignature(includeBlob: false, includeSnapshot: false, containerName, blobName, constants); // Act BlobSasQueryParameters sasQueryParameters = blobSasBuilder.ToSasQueryParameters(constants.Sas.SharedKeyCredential); // Assert Assert.AreEqual(SasQueryParameters.DefaultSasVersion, sasQueryParameters.Version); Assert.IsNull(sasQueryParameters.Services); Assert.IsNull(sasQueryParameters.ResourceTypes); Assert.AreEqual(constants.Sas.Protocol, sasQueryParameters.Protocol); Assert.AreEqual(constants.Sas.StartTime, sasQueryParameters.StartsOn); Assert.AreEqual(constants.Sas.ExpiryTime, sasQueryParameters.ExpiresOn); Assert.AreEqual(constants.Sas.IPRange, sasQueryParameters.IPRange); Assert.AreEqual(constants.Sas.Identifier, sasQueryParameters.Identifier); Assert.AreEqual(Constants.Sas.Resource.Container, sasQueryParameters.Resource); Assert.AreEqual(Permissions, sasQueryParameters.Permissions); Assert.AreEqual(signature, sasQueryParameters.Signature); AssertResponseHeaders(constants, sasQueryParameters); }
public void ToSasQueryParameters_ContainerIdentityTest() { // Arrange var constants = new TestConstants(this); var containerName = this.GetNewContainerName(); var blobName = this.GetNewBlobName(); var blobSasBuilder = this.BuildBlobSasBuilder(includeBlob: false, includeSnapshot: false, containerName, blobName, constants); var signature = this.BuildIdentitySignature(includeBlob: false, includeSnapshot: false, containerName, blobName, constants); // Act var sasQueryParameters = blobSasBuilder.ToSasQueryParameters(GetUserDelegationKey(constants), constants.Sas.Account); // Assert Assert.AreEqual(SasQueryParameters.DefaultSasVersion, sasQueryParameters.Version); Assert.AreEqual(String.Empty, sasQueryParameters.Services); Assert.AreEqual(String.Empty, sasQueryParameters.ResourceTypes); Assert.AreEqual(constants.Sas.Protocol, sasQueryParameters.Protocol); Assert.AreEqual(constants.Sas.StartTime, sasQueryParameters.StartTime); Assert.AreEqual(constants.Sas.ExpiryTime, sasQueryParameters.ExpiryTime); Assert.AreEqual(constants.Sas.IPRange, sasQueryParameters.IPRange); Assert.AreEqual(String.Empty, sasQueryParameters.Identifier); Assert.AreEqual(constants.Sas.KeyOid, sasQueryParameters.KeyObjectId); Assert.AreEqual(constants.Sas.KeyTid, sasQueryParameters.KeyTenantId); Assert.AreEqual(constants.Sas.KeyStart, sasQueryParameters.KeyStart); Assert.AreEqual(constants.Sas.KeyExpiry, sasQueryParameters.KeyExpiry); Assert.AreEqual(constants.Sas.KeyService, sasQueryParameters.KeyService); Assert.AreEqual(constants.Sas.KeyVersion, sasQueryParameters.KeyVersion); Assert.AreEqual(Constants.Sas.Resource.Container, sasQueryParameters.Resource); Assert.AreEqual(Permissions, sasQueryParameters.Permissions); Assert.AreEqual(signature, sasQueryParameters.Signature); }
public void FileSasBuilder_ToSasQueryParameters_FilePathTest() { // Arrange var constants = new TestConstants(this); var shareName = this.GetNewShareName(); var filePath = this.GetNewDirectoryName(); var fileSasBuilder = this.BuildFileSasBuilder(includeVersion: true, includeFilePath: true, constants, shareName, filePath); var signature = this.BuildSignature(includeFilePath: true, includeVersion: true, constants, shareName, filePath); // Act var sasQueryParameters = fileSasBuilder.ToSasQueryParameters(constants.Sas.SharedKeyCredential); // Assert Assert.AreEqual(constants.Sas.Version, sasQueryParameters.Version); Assert.AreEqual(String.Empty, sasQueryParameters.Services); Assert.AreEqual(String.Empty, sasQueryParameters.ResourceTypes); Assert.AreEqual(constants.Sas.Protocol, sasQueryParameters.Protocol); Assert.AreEqual(constants.Sas.StartTime, sasQueryParameters.StartTime); Assert.AreEqual(constants.Sas.ExpiryTime, sasQueryParameters.ExpiryTime); Assert.AreEqual(constants.Sas.IPRange, sasQueryParameters.IPRange); Assert.AreEqual(constants.Sas.Identifier, sasQueryParameters.Identifier); Assert.AreEqual(Constants.Sas.Resource.File, sasQueryParameters.Resource); Assert.AreEqual(Permissions, sasQueryParameters.Permissions); Assert.AreEqual(signature, sasQueryParameters.Signature); }
internal void AssertResponseHeaders(TestConstants constants, SasQueryParameters sasQueryParameters) { Assert.AreEqual(constants.Sas.CacheControl, sasQueryParameters.CacheControl); Assert.AreEqual(constants.Sas.ContentDisposition, sasQueryParameters.ContentDisposition); Assert.AreEqual(constants.Sas.ContentEncoding, sasQueryParameters.ContentEncoding); Assert.AreEqual(constants.Sas.ContentLanguage, sasQueryParameters.ContentLanguage); Assert.AreEqual(constants.Sas.ContentType, sasQueryParameters.ContentType); }
public void QueueSasBuilder_NullSharedKeyCredentialTest() { // Arrange var constants = new TestConstants(this); var queueName = GetNewQueueName(); QueueSasBuilder queueSasBuilder = BuildQueueSasBuilder(constants, queueName, includeVersion: true); // Act Assert.Throws <ArgumentNullException>(() => queueSasBuilder.ToSasQueryParameters(null), "sharedKeyCredential"); }
private static UserDelegationKey GetUserDelegationKey(TestConstants constants) => new UserDelegationKey { SignedObjectId = constants.Sas.KeyObjectId, SignedTenantId = constants.Sas.KeyTenantId, SignedStartsOn = constants.Sas.KeyStart, SignedExpiresOn = constants.Sas.KeyExpiry, SignedService = constants.Sas.KeyService, SignedVersion = constants.Sas.KeyVersion, Value = constants.Sas.KeyValue };
public void ToSasQueryParameters_NullSharedKeyCredentialTest() { // Arrange var constants = new TestConstants(this); var containerName = this.GetNewContainerName(); var blobName = this.GetNewBlobName(); var blobSasBuilder = this.BuildBlobSasBuilder(includeBlob: true, includeSnapshot: true, containerName, blobName, constants); // Act Assert.Throws <ArgumentNullException>(() => blobSasBuilder.ToSasQueryParameters(null), "sharedKeyCredential"); }
public void FileSasBuilder_NullSharedKeyCredentialTest() { // Arrange var constants = new TestConstants(this); var shareName = GetNewShareName(); var filePath = GetNewDirectoryName(); FileSasBuilder fileSasBuilder = BuildFileSasBuilder(includeVersion: true, includeFilePath: true, constants, shareName, filePath); // Act Assert.Throws <ArgumentNullException>(() => fileSasBuilder.ToSasQueryParameters(null), "sharedKeyCredential"); }
static UserDelegationKey GetUserDelegationKey(TestConstants constants) => new UserDelegationKey { SignedOid = constants.Sas.KeyOid, SignedTid = constants.Sas.KeyTid, SignedStart = constants.Sas.KeyStart, SignedExpiry = constants.Sas.KeyExpiry, SignedService = constants.Sas.KeyService, SignedVersion = constants.Sas.KeyVersion, Value = constants.Sas.KeyValue };
private string BuildSignature(TestConstants constants, string queueName, bool includeVersion) { var stringToSign = string.Join("\n", Permissions, SasQueryParameters.FormatTimesForSasSigning(constants.Sas.StartTime), SasQueryParameters.FormatTimesForSasSigning(constants.Sas.ExpiryTime), "/queue/" + constants.Sas.Account + "/" + queueName, constants.Sas.Identifier, constants.Sas.IPRange.ToString(), SasProtocol.Https.ToString(), includeVersion ? constants.Sas.Version : SasQueryParameters.DefaultSasVersion); return(constants.Sas.SharedKeyCredential.ComputeHMACSHA256(stringToSign)); }
private QueueSasBuilder BuildQueueSasBuilder(TestConstants constants, string queueName, bool includeVersion) { var queueSasBuilder = new QueueSasBuilder { Version = null, Protocol = constants.Sas.Protocol, StartTime = constants.Sas.StartTime, ExpiryTime = constants.Sas.ExpiryTime, Permissions = Permissions, IPRange = constants.Sas.IPRange, Identifier = constants.Sas.Identifier, QueueName = queueName, }; if (includeVersion) { queueSasBuilder.Version = constants.Sas.Version; } return(queueSasBuilder); }
public void QueueSasBuilder_ToSasQueryParameters_NoVersionTest() { // Arrange var constants = new TestConstants(this); var queueName = GetNewQueueName(); QueueSasBuilder queueSasBuilder = BuildQueueSasBuilder(constants, queueName, includeVersion: false); var signature = BuildSignature(constants, queueName, includeVersion: false); // Act var sasQueryParameters = queueSasBuilder.ToSasQueryParameters(constants.Sas.SharedKeyCredential); // Assert Assert.AreEqual(SasQueryParameters.DefaultSasVersion, sasQueryParameters.Version); Assert.AreEqual(string.Empty, sasQueryParameters.Services); Assert.AreEqual(string.Empty, sasQueryParameters.ResourceTypes); Assert.AreEqual(SasProtocol.Https, sasQueryParameters.Protocol); Assert.AreEqual(constants.Sas.StartTime, sasQueryParameters.StartTime); Assert.AreEqual(constants.Sas.ExpiryTime, sasQueryParameters.ExpiryTime); Assert.AreEqual(constants.Sas.IPRange, sasQueryParameters.IPRange); Assert.AreEqual(constants.Sas.Identifier, sasQueryParameters.Identifier); Assert.AreEqual(string.Empty, sasQueryParameters.Resource); Assert.AreEqual(Permissions, sasQueryParameters.Permissions); Assert.AreEqual(signature, sasQueryParameters.Signature); }
private FileSasBuilder BuildFileSasBuilder(bool includeVersion, bool includeFilePath, TestConstants constants, string shareName, string filePath) { var fileSasBuilder = new FileSasBuilder { Version = null, Protocol = constants.Sas.Protocol, StartsOn = constants.Sas.StartTime, ExpiresOn = constants.Sas.ExpiryTime, IPRange = constants.Sas.IPRange, Identifier = constants.Sas.Identifier, ShareName = shareName, FilePath = "", CacheControl = constants.Sas.CacheControl, ContentDisposition = constants.Sas.ContentDisposition, ContentEncoding = constants.Sas.ContentEncoding, ContentLanguage = constants.Sas.ContentLanguage, ContentType = constants.Sas.ContentType }; fileSasBuilder.SetPermissions(FileSasPermissions.All); if (includeVersion) { fileSasBuilder.Version = constants.Sas.Version; } if (includeFilePath) { fileSasBuilder.FilePath = filePath; } return(fileSasBuilder); }
private BlobSasBuilder BuildBlobSasBuilder(bool includeBlob, bool includeSnapshot, string containerName, string blobName, TestConstants constants) { var builder = new BlobSasBuilder { Version = null, Protocol = constants.Sas.Protocol, StartsOn = constants.Sas.StartTime, ExpiresOn = constants.Sas.ExpiryTime, IPRange = constants.Sas.IPRange, Identifier = constants.Sas.Identifier, BlobContainerName = containerName, BlobName = includeBlob ? blobName : null, Snapshot = includeSnapshot ? Snapshot : null, CacheControl = constants.Sas.CacheControl, ContentDisposition = constants.Sas.ContentDisposition, ContentEncoding = constants.Sas.ContentEncoding, ContentLanguage = constants.Sas.ContentLanguage, ContentType = constants.Sas.ContentType }; builder.SetPermissions(BlobAccountSasPermissions.Read | BlobAccountSasPermissions.Write | BlobAccountSasPermissions.Delete); return(builder); }
private string BuildIdentitySignature(bool includeBlob, bool includeSnapshot, string containerName, string blobName, TestConstants constants) { var canonicalName = includeBlob ? $"/blob/{constants.Sas.Account}/{containerName}/{blobName}" : $"/blob/{constants.Sas.Account}/{containerName}"; var resource = Constants.Sas.Resource.Container; if (includeBlob && includeSnapshot) { resource = Constants.Sas.Resource.BlobSnapshot; } else if (includeBlob) { resource = Constants.Sas.Resource.Blob; } var stringToSign = String.Join("\n", Permissions, SasQueryParameters.FormatTimesForSasSigning(constants.Sas.StartTime), SasQueryParameters.FormatTimesForSasSigning(constants.Sas.ExpiryTime), canonicalName, constants.Sas.KeyOid, constants.Sas.KeyTid, SasQueryParameters.FormatTimesForSasSigning(constants.Sas.KeyStart), SasQueryParameters.FormatTimesForSasSigning(constants.Sas.KeyExpiry), constants.Sas.KeyService, constants.Sas.KeyVersion, constants.Sas.IPRange.ToString(), constants.Sas.Protocol.ToString(), SasQueryParameters.DefaultSasVersion, resource, includeSnapshot ? Snapshot : null, constants.Sas.CacheControl, constants.Sas.ContentDisposition, constants.Sas.ContentEncoding, constants.Sas.ContentLanguage, constants.Sas.ContentType); return(this.ComputeHMACSHA256(constants.Sas.KeyValue, stringToSign)); }
private BlobSasBuilder BuildBlobSasBuilder(bool includeBlob, bool includeSnapshot, string containerName, string blobName, TestConstants constants) => new BlobSasBuilder { Version = null, Protocol = constants.Sas.Protocol, StartTime = constants.Sas.StartTime, ExpiryTime = constants.Sas.ExpiryTime, Permissions = Permissions, IPRange = constants.Sas.IPRange, Identifier = constants.Sas.Identifier, ContainerName = containerName, BlobName = includeBlob ? blobName : null, Snapshot = includeSnapshot ? Snapshot : null, CacheControl = constants.Sas.CacheControl, ContentDisposition = constants.Sas.ContentDisposition, ContentEncoding = constants.Sas.ContentEncoding, ContentLanguage = constants.Sas.ContentLanguage, ContentType = constants.Sas.ContentType };