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.SasVersion, 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.KeyOid); Assert.AreEqual(constants.Sas.KeyTid, sasQueryParameters.KeyTid); 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_NoVersionTest() { // Arrange var constants = new TestConstants(this); var shareName = this.GetNewShareName(); var filePath = this.GetNewDirectoryName(); var fileSasBuilder = this.BuildFileSasBuilder(includeVersion: false, includeFilePath: false, constants, shareName, filePath); var signature = this.BuildSignature(includeFilePath: false, includeVersion: false, constants, shareName, filePath); // Act var sasQueryParameters = fileSasBuilder.ToSasQueryParameters(constants.Sas.SharedKeyCredential); // Assert Assert.AreEqual(SasQueryParameters.SasVersion, 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.Share, sasQueryParameters.Resource); Assert.AreEqual(Permissions, sasQueryParameters.Permissions); Assert.AreEqual(signature, sasQueryParameters.Signature); }
public void ToSasQueryParameters_SnapshotTest() { // 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); var signature = this.BuildSignature(includeBlob: true, includeSnapshot: true, containerName, blobName, constants); // Act var sasQueryParameters = blobSasBuilder.ToSasQueryParameters(constants.Sas.SharedKeyCredential); // Assert Assert.AreEqual(SasQueryParameters.SasVersion, 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.BlobSnapshot, 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.ToString(), includeVersion ? constants.Sas.Version : SasQueryParameters.SasVersion, constants.Sas.CacheControl, constants.Sas.ContentDisposition, constants.Sas.ContentEncoding, constants.Sas.ContentLanguage, constants.Sas.ContentType); return(constants.Sas.SharedKeyCredential.ComputeHMACSHA256(stringToSign)); }
public void QueueSasBuilder_NullSharedKeyCredentialTest() { // Arrange var constants = new TestConstants(this); var queueName = this.GetNewQueueName(); var queueSasBuilder = this.BuildQueueSasBuilder(constants, queueName, includeVersion: true); // Act Assert.Throws <ArgumentNullException>(() => queueSasBuilder.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 };
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 = this.GetNewShareName(); var filePath = this.GetNewDirectoryName(); var fileSasBuilder = this.BuildFileSasBuilder(includeVersion: true, includeFilePath: true, constants, shareName, filePath); // Act Assert.Throws <ArgumentNullException>(() => fileSasBuilder.ToSasQueryParameters(null), "sharedKeyCredential"); }
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.SasVersion); 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 = this.GetNewQueueName(); var queueSasBuilder = this.BuildQueueSasBuilder(constants, queueName, includeVersion: false); var signature = this.BuildSignature(constants, queueName, includeVersion: false); // Act var sasQueryParameters = queueSasBuilder.ToSasQueryParameters(constants.Sas.SharedKeyCredential); // Assert Assert.AreEqual(SasQueryParameters.SasVersion, 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 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.SasVersion, 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 };
private FileSasBuilder BuildFileSasBuilder(bool includeVersion, bool includeFilePath, TestConstants constants, string shareName, string filePath) { var fileSasBuilder = new FileSasBuilder { Version = null, Protocol = constants.Sas.Protocol, StartTime = constants.Sas.StartTime, ExpiryTime = constants.Sas.ExpiryTime, Permissions = Permissions, 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 }; if (includeVersion) { fileSasBuilder.Version = constants.Sas.Version; } if (includeFilePath) { fileSasBuilder.FilePath = filePath; } return(fileSasBuilder); }