Esempio n. 1
0
        public void GetTokenAsyncValidatesTheDuration()
        {
            var signature = new SharedAccessSignature("SharedAccessSignature sr=amqps%3A%2F%2Fmy.eh.com%2Fsomepath%2F&sig=%2BLsuqDlN8Us5lp%2FGdyEUMnU1XA4HdXx%2BJUdtkRNr7qI%3D&se=1562258488&skn=keykeykey", "ABC123");
            var provider  = new TrackOneSharedAccessTokenProvider(signature);

            Assert.That(async() => await provider.GetTokenAsync(signature.Resource, TimeSpan.FromMilliseconds(-1)), Throws.InstanceOf <ArgumentException>());
        }
Esempio n. 2
0
        public void GetTokenAsyncDisallowsInvalideResources(string invalidResource)
        {
            var resource  = WebUtility.UrlEncode("amqps://my.eventhubs.com/someHub");
            var signature = new SharedAccessSignature($"SharedAccessSignature sr={ resource }&sig=%2BLsuqDlN8Us5lp%2FGdyEUMnU1XA4HdXx%2BJUdtkRNr7qI%3D&se=1562258488&skn=keykeykey", "ABC123");
            var provider  = new TrackOneSharedAccessTokenProvider(signature);

            Assert.That(async() => await provider.GetTokenAsync(invalidResource, TimeSpan.FromHours(4)), Throws.InstanceOf <ArgumentException>());
        }
Esempio n. 3
0
        public async Task GetTokenAsyncProducesTokenForTheResource()
        {
            var signature = new SharedAccessSignature("SharedAccessSignature sr=amqps%3A%2F%2Fmy.eh.com%2Fsomepath%2F&sig=%2BLsuqDlN8Us5lp%2FGdyEUMnU1XA4HdXx%2BJUdtkRNr7qI%3D&se=1562258488&skn=keykeykey", "ABC123");
            var provider  = new TrackOneSharedAccessTokenProvider(signature);
            var token     = await provider.GetTokenAsync(signature.Resource, TimeSpan.FromHours(1));

            Assert.That(token, Is.Not.Null, "A token should have been produced.");
            Assert.That(token.Audience, Is.EqualTo(signature.Resource), "The audience of the token should match the signature.");
        }
Esempio n. 4
0
        public async Task GetTokenAsyncTokensChangeOnEachIssue()
        {
            var signature = new SharedAccessSignature("SharedAccessSignature sr=amqps%3A%2F%2Fmy.eh.com%2Fsomepath%2F&sig=%2BLsuqDlN8Us5lp%2FGdyEUMnU1XA4HdXx%2BJUdtkRNr7qI%3D&se=1562258488&skn=keykeykey", "ABC123");
            var provider  = new TrackOneSharedAccessTokenProvider(signature);
            var first     = await provider.GetTokenAsync(signature.Resource, TimeSpan.FromHours(1));

            var second = await provider.GetTokenAsync(signature.Resource, TimeSpan.FromMinutes(10));

            Assert.That(first.TokenValue, Is.Not.EqualTo(second.TokenValue));
        }
Esempio n. 5
0
        public async Task GetTokenAsyncProducesASharedAccessSignatureToken()
        {
            var signature = new SharedAccessSignature("SharedAccessSignature sr=amqps%3A%2F%2Fmy.eh.com%2Fsomepath%2F&sig=%2BLsuqDlN8Us5lp%2FGdyEUMnU1XA4HdXx%2BJUdtkRNr7qI%3D&se=1562258488&skn=keykeykey", "ABC123");
            var provider  = new TrackOneSharedAccessTokenProvider(signature);

            TrackOne.SecurityToken token = await provider.GetTokenAsync(signature.Resource, TimeSpan.FromHours(1));

            Assert.That(token, Is.Not.Null, "A token should have been produced.");
            Assert.That(token, Is.InstanceOf <TrackOneSharedAccessSignatureToken>(), "The token should be a SAS token.");
        }
Esempio n. 6
0
        public async Task GetTokenAsyncProducesTokenWithCorrectExpiration()
        {
            var signature  = new SharedAccessSignature("SharedAccessSignature sr=amqps%3A%2F%2Fmy.eh.com%2Fsomepath%2F&sig=%2BLsuqDlN8Us5lp%2FGdyEUMnU1XA4HdXx%2BJUdtkRNr7qI%3D&se=1562258488&skn=keykeykey", "ABC123");
            var provider   = new TrackOneSharedAccessTokenProvider(signature);
            var duration   = TimeSpan.FromHours(1.5);
            var expiration = DateTime.UtcNow.Add(duration);
            var token      = await provider.GetTokenAsync(signature.Resource, duration);

            Assert.That(token, Is.Not.Null, "A token should have been produced.");
            Assert.That(token.ExpiresAtUtc, Is.EqualTo(expiration).Within(TimeSpan.FromSeconds(5)), "The expiration of the token should match the requested duration.");
        }
Esempio n. 7
0
        public void ConstructorClonesTheSignature()
        {
            var signature = new SharedAccessSignature("SharedAccessSignature sr=amqps%3A%2F%2Fmy.eh.com%2Fsomepath%2F&sig=%2BLsuqDlN8Us5lp%2FGdyEUMnU1XA4HdXx%2BJUdtkRNr7qI%3D&se=1562258488&skn=keykeykey", "ABC123");
            var provider  = new TrackOneSharedAccessTokenProvider(signature);

            Assert.That(provider.SharedAccessSignature, Is.Not.Null, "The provider should have a signature.");
            Assert.That(provider.SharedAccessSignature, Is.Not.SameAs(signature), "The provider should not be the same instance.");
            Assert.That(provider.SharedAccessSignature.Resource, Is.EqualTo(signature.Resource), "The resources should match.");
            Assert.That(provider.SharedAccessSignature.SharedAccessKeyName, Is.EqualTo(signature.SharedAccessKeyName), "The key name should match.");
            Assert.That(provider.SharedAccessSignature.SharedAccessKey, Is.EqualTo(signature.SharedAccessKey), "The key name should match.");
            Assert.That(provider.SharedAccessSignature.ExpirationUtc, Is.EqualTo(signature.ExpirationUtc), "The expiration should match.");
            Assert.That(provider.SharedAccessSignature.Value, Is.EqualTo(signature.Value), "The value should match.");
        }