コード例 #1
0
        public async Task QueuePermissionsRawPermissions(string permissionsString)
        {
            // Arrange
            await using DisposingQueue test = await GetTestQueueAsync();

            QueueSasBuilder queueSasBuilder = new QueueSasBuilder
            {
                StartsOn  = Recording.UtcNow.AddHours(-1),
                ExpiresOn = Recording.UtcNow.AddHours(1),
                QueueName = test.Queue.Name
            };

            queueSasBuilder.SetPermissions(
                rawPermissions: permissionsString,
                normalize: true);

            StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(TestConfigDefault.AccountName, TestConfigDefault.AccountKey);

            QueueUriBuilder queueUriBuilder = new QueueUriBuilder(test.Queue.Uri)
            {
                Sas = queueSasBuilder.ToSasQueryParameters(sharedKeyCredential)
            };

            QueueClient sasQueueClient = new QueueClient(queueUriBuilder.ToUri(), GetOptions());

            // Act
            await sasQueueClient.PeekMessagesAsync();
        }
コード例 #2
0
        public void QueueUriBuilder_IPStyleUrl_SasTest()
        {
            // Arrange
            var uriString   = "https://127.0.0.1/account/queue?sv=2015-04-05&spr=https&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sip=168.1.5.60-168.1.5.70&sr=b&sp=rw&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D";
            var originalUri = new UriBuilder(uriString);

            // Act
            var queueUriBuilder = new QueueUriBuilder(originalUri.Uri);
            var newUri          = queueUriBuilder.ToUri();

            // Assert
            Assert.AreEqual("https", queueUriBuilder.Scheme);
            Assert.AreEqual("127.0.0.1", queueUriBuilder.Host);
            Assert.AreEqual(443, queueUriBuilder.Port);
            Assert.AreEqual("account", queueUriBuilder.AccountName);
            Assert.AreEqual("queue", queueUriBuilder.QueueName);
            Assert.IsFalse(queueUriBuilder.Messages);
            Assert.AreEqual("", queueUriBuilder.MessageId);

            Assert.AreEqual(new DateTimeOffset(2015, 4, 30, 2, 23, 26, TimeSpan.Zero), queueUriBuilder.Sas.ExpiryTime);
            Assert.AreEqual("", queueUriBuilder.Sas.Identifier);
            Assert.AreEqual(IPRange.Parse("168.1.5.60-168.1.5.70"), queueUriBuilder.Sas.IPRange);
            Assert.AreEqual("rw", queueUriBuilder.Sas.Permissions);
            Assert.AreEqual(SasProtocol.Https, queueUriBuilder.Sas.Protocol);
            Assert.AreEqual("b", queueUriBuilder.Sas.Resource);
            Assert.AreEqual("", queueUriBuilder.Sas.ResourceTypes);
            Assert.AreEqual("", queueUriBuilder.Sas.Services);
            Assert.AreEqual("Z/RHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk=", queueUriBuilder.Sas.Signature);
            Assert.AreEqual(new DateTimeOffset(2015, 4, 29, 22, 18, 26, TimeSpan.Zero), queueUriBuilder.Sas.StartTime);
            Assert.AreEqual("2015-04-05", queueUriBuilder.Sas.Version);

            Assert.AreEqual("", queueUriBuilder.UnparsedParams);

            Assert.AreEqual(originalUri, newUri);
        }
コード例 #3
0
        public void QueueBuilder_SasStartExpiryTimeFormats(string startTime, string expiryTime)
        {
            // Arrange
            Uri             initialUri      = new Uri($"https://account.queue.core.windows.net/queue?sv=2020-06-12&st={WebUtility.UrlEncode(startTime)}&se={WebUtility.UrlEncode(expiryTime)}&sr=b&sp=racwd&sig=jQetX8odiJoZ7Yo0X8vWgh%2FMqRv9WE3GU%2Fr%2BLNMK3GU%3D");
            QueueUriBuilder queueUriBuilder = new QueueUriBuilder(initialUri);

            // Act
            Uri resultUri = queueUriBuilder.ToUri();

            // Assert
            Assert.AreEqual(initialUri, resultUri);
            Assert.IsTrue(resultUri.PathAndQuery.Contains($"st={WebUtility.UrlEncode(startTime)}"));
            Assert.IsTrue(resultUri.PathAndQuery.Contains($"se={WebUtility.UrlEncode(expiryTime)}"));
        }
コード例 #4
0
        public void QueueBuilder_SasStartExpiryTimeFormats(string startTime, string expiryTime)
        {
            // Arrange
            Uri             initialUri      = new Uri($"https://account.queue.core.windows.net/queue?sv=2020-06-12&st={WebUtility.UrlEncode(startTime)}&se={WebUtility.UrlEncode(expiryTime)}&sr=b&sp=racwd&sig=%2BLsuqDlN8Us5lp%2FGdyEUMnU1XA4HdXx%2BJUdtkRNr7qI%3D");
            QueueUriBuilder queueUriBuilder = new QueueUriBuilder(initialUri);

            // Act
            Uri resultUri = queueUriBuilder.ToUri();

            // Assert
            Assert.AreEqual(initialUri, resultUri);
            Assert.IsTrue(resultUri.PathAndQuery.Contains($"st={WebUtility.UrlEncode(startTime)}"));
            Assert.IsTrue(resultUri.PathAndQuery.Contains($"se={WebUtility.UrlEncode(expiryTime)}"));
        }
コード例 #5
0
        public void QueueUriBuilder_CustomUri_AccountShareFileTest()
        {
            // Arrange
            var uriString   = "https://www.mycustomname.com/queuename";
            var originalUri = new UriBuilder(uriString);

            // Act
            var fileUriBuilder = new QueueUriBuilder(originalUri.Uri);
            Uri newUri         = fileUriBuilder.ToUri();

            // Assert
            Assert.AreEqual("https", fileUriBuilder.Scheme);
            Assert.AreEqual("www.mycustomname.com", fileUriBuilder.Host);
            Assert.AreEqual(String.Empty, fileUriBuilder.AccountName);
            Assert.AreEqual("queuename", fileUriBuilder.QueueName);
            Assert.IsNull(fileUriBuilder.Sas);
            Assert.AreEqual("", fileUriBuilder.Query);
            Assert.AreEqual(443, fileUriBuilder.Port);

            Assert.AreEqual(originalUri, newUri);
        }
コード例 #6
0
        public void QueueUriBuilder_LocalDockerUrl_PortTest()
        {
            // Arrange
            // BlobEndpoint from https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator#connect-to-the-emulator-account-using-the-well-known-account-name-and-key
            var uriString   = "http://docker_container:10000/devstoreaccount1/sharename";
            var originalUri = new UriBuilder(uriString);

            // Act
            var fileUriBuilder = new QueueUriBuilder(originalUri.Uri);
            Uri newUri         = fileUriBuilder.ToUri();

            // Assert
            Assert.AreEqual("http", fileUriBuilder.Scheme);
            Assert.AreEqual("docker_container", fileUriBuilder.Host);
            Assert.AreEqual("devstoreaccount1", fileUriBuilder.AccountName);
            Assert.AreEqual("sharename", fileUriBuilder.QueueName);
            Assert.IsNull(fileUriBuilder.Sas);
            Assert.AreEqual("", fileUriBuilder.Query);
            Assert.AreEqual(10000, fileUriBuilder.Port);

            Assert.AreEqual(originalUri, newUri);
        }
コード例 #7
0
        public void QueueUriBuilder_RegularUrl_MessageIdTest()
        {
            // Arrange
            var uriString   = "https://account.core.queue.windows.net/queue/messages/messageId";
            var originalUri = new UriBuilder(uriString);

            // Act
            var queueUriBuilder = new QueueUriBuilder(originalUri.Uri);
            var newUri          = queueUriBuilder.ToUri();

            // Assert
            Assert.AreEqual("https", queueUriBuilder.Scheme);
            Assert.AreEqual("account.core.queue.windows.net", queueUriBuilder.Host);
            Assert.AreEqual(443, queueUriBuilder.Port);
            Assert.AreEqual("", queueUriBuilder.AccountName);
            Assert.AreEqual("queue", queueUriBuilder.QueueName);
            Assert.IsTrue(queueUriBuilder.Messages);
            Assert.AreEqual("messageId", queueUriBuilder.MessageId);
            Assert.IsNull(queueUriBuilder.Sas);
            Assert.AreEqual("", queueUriBuilder.UnparsedParams);

            Assert.AreEqual(originalUri, newUri);
        }
コード例 #8
0
        public void QueueUriBuilder_IPStyleUrl_AccountOnlyTest()
        {
            // Arrange
            var uriString   = "https://127.0.0.1/account";
            var originalUri = new UriBuilder(uriString);

            // Act
            var queueUriBuilder = new QueueUriBuilder(originalUri.Uri);
            var newUri          = queueUriBuilder.ToUri();

            // Assert
            Assert.AreEqual("https", queueUriBuilder.Scheme);
            Assert.AreEqual("127.0.0.1", queueUriBuilder.Host);
            Assert.AreEqual(443, queueUriBuilder.Port);
            Assert.AreEqual("account", queueUriBuilder.AccountName);
            Assert.AreEqual("", queueUriBuilder.QueueName);
            Assert.IsFalse(queueUriBuilder.Messages);
            Assert.AreEqual("", queueUriBuilder.MessageId);
            Assert.IsNull(queueUriBuilder.Sas);
            Assert.AreEqual("", queueUriBuilder.UnparsedParams);

            Assert.AreEqual(originalUri, newUri);
        }
コード例 #9
0
        public void QueueUriBuilder_IPStyleUrl_PortTest()
        {
            // Arrange
            var uriString   = "https://127.0.0.1:8080/account/queue";
            var originalUri = new UriBuilder(uriString);

            // Act
            var queueUriBuilder = new QueueUriBuilder(originalUri.Uri);
            Uri newUri          = queueUriBuilder.ToUri();

            // Assert
            Assert.AreEqual("https", queueUriBuilder.Scheme);
            Assert.AreEqual("127.0.0.1", queueUriBuilder.Host);
            Assert.AreEqual(8080, queueUriBuilder.Port);
            Assert.AreEqual("account", queueUriBuilder.AccountName);
            Assert.AreEqual("queue", queueUriBuilder.QueueName);
            Assert.IsFalse(queueUriBuilder.Messages);
            Assert.AreEqual("", queueUriBuilder.MessageId);
            Assert.IsNull(queueUriBuilder.Sas);
            Assert.AreEqual("", queueUriBuilder.Query);

            Assert.AreEqual(originalUri, newUri);
        }
コード例 #10
0
        public void QueueUriBuilder_RegularUrl_AccountTest()
        {
            // Arrange
            var uriString   = "https://account.core.queue.windows.net?comp=list";
            var originalUri = new UriBuilder(uriString);

            // Act
            var queueUriBuilder = new QueueUriBuilder(originalUri.Uri);
            Uri newUri          = queueUriBuilder.ToUri();

            // Assert
            Assert.AreEqual("https", queueUriBuilder.Scheme);
            Assert.AreEqual("account.core.queue.windows.net", queueUriBuilder.Host);
            Assert.AreEqual(443, queueUriBuilder.Port);
            Assert.AreEqual("", queueUriBuilder.AccountName);
            Assert.AreEqual("", queueUriBuilder.QueueName);
            Assert.IsFalse(queueUriBuilder.Messages);
            Assert.AreEqual("", queueUriBuilder.MessageId);
            Assert.IsNull(queueUriBuilder.Sas);
            Assert.AreEqual("comp=list", queueUriBuilder.Query);

            Assert.AreEqual(originalUri, newUri);
        }