public void GetTokenAsyncValidatesTheDuration() { var eventHubCredential = new EventHubTokenCredential(Mock.Of <TokenCredential>(), "someResource"); var provider = new TrackOneGenericTokenProvider(eventHubCredential); Assert.That(async() => await provider.GetTokenAsync(eventHubCredential.Resource, TimeSpan.FromMilliseconds(-1)), Throws.InstanceOf <ArgumentException>()); }
public void GetTokenAsyncRequiresTheResource() { var token = new EventHubTokenCredential(Mock.Of <TokenCredential>(), "someResource"); var provider = new TrackOneGenericTokenProvider(token); Assert.That(async() => await provider.GetTokenAsync(null, TimeSpan.FromHours(4)), Throws.InstanceOf <ArgumentException>()); }
public void GetTokenAsyncDisallowsInvalideResources(string invalidResource) { var mockCredential = new Mock <TokenCredential>(); var resource = "amqps://my.eventhubs.com/someHub"; var jwtToken = "somevalue"; var expiration = DateTime.Parse("2017-10-27T12:00:00Z"); var accessToken = new AccessToken(jwtToken, expiration); var eventHubCredential = new EventHubTokenCredential(mockCredential.Object, resource); var provider = new TrackOneGenericTokenProvider(eventHubCredential); mockCredential .Setup(credential => credential.GetTokenAsync(It.IsAny <string[]>(), It.IsAny <CancellationToken>())) .ReturnsAsync(accessToken); Assert.That(async() => await provider.GetTokenAsync(invalidResource, TimeSpan.FromHours(4)), Throws.InstanceOf <ArgumentException>()); }
public void GetTokenAsyncAllowsValidResources(string validResource) { var mockCredential = new Mock <TokenCredential>(); var resource = "amqps://my.eventhubs.com/someHub"; var jwtToken = "somevalue"; var expiration = DateTime.Parse("2017-10-27T12:00:00Z"); var accessToken = new AccessToken(jwtToken, expiration); var eventHubCredential = new EventHubTokenCredential(mockCredential.Object, resource); var provider = new TrackOneGenericTokenProvider(eventHubCredential); mockCredential .Setup(credential => credential.GetTokenAsync(It.Is <string[]>(value => value.FirstOrDefault() == GetTokenScope()), It.IsAny <CancellationToken>())) .ReturnsAsync(accessToken); Assert.That(async() => await provider.GetTokenAsync(validResource, TimeSpan.FromHours(4)), Throws.Nothing); }
public async Task GetTokenAsyncProducesAGenericToken() { var mockCredential = new Mock <TokenCredential>(); var resource = "amqps://my.eventhubs.com/someHub"; var jwtToken = "somevalue"; var expiration = DateTime.Parse("2017-10-27T12:00:00Z"); var accessToken = new AccessToken(jwtToken, expiration); var eventHubCredential = new EventHubTokenCredential(mockCredential.Object, resource); var provider = new TrackOneGenericTokenProvider(eventHubCredential); mockCredential .Setup(credential => credential.GetTokenAsync(It.Is <string[]>(value => value.FirstOrDefault() == GetTokenScope()), It.IsAny <CancellationToken>())) .ReturnsAsync(accessToken); var token = await provider.GetTokenAsync(resource, TimeSpan.FromHours(1)); Assert.That(token, Is.Not.Null, "A token should have been produced."); Assert.That(token, Is.InstanceOf <TrackOneGenericToken>(), "The token should be a generic JWT token."); }
public async Task GetTokenAsyncTokensChangeOnEachIssue() { var mockCredential = new Mock <TokenCredential>(); var resource = "amqps://my.eventhubs.com/someHub"; var jwtToken = "somevalue"; var expiration = DateTime.Parse("2017-10-27T12:00:00Z"); var accessToken = new AccessToken(jwtToken, expiration); var eventHubCredential = new EventHubTokenCredential(mockCredential.Object, resource); var provider = new TrackOneGenericTokenProvider(eventHubCredential); mockCredential .Setup(credential => credential.GetTokenAsync(It.Is <string[]>(value => value.FirstOrDefault() == GetTokenScope()), It.IsAny <CancellationToken>())) .ReturnsAsync(accessToken); var first = await provider.GetTokenAsync(resource, TimeSpan.FromHours(1)); var second = await provider.GetTokenAsync(resource, TimeSpan.FromHours(4)); Assert.That(first, Is.Not.SameAs(second), "A new token should be created for each request."); Assert.That(((TrackOneGenericToken)first).Credential, Is.SameAs(((TrackOneGenericToken)second).Credential), "The token should be based on the same source credential."); }
public async Task GetTokenAsyncProducesATokenwithTheCorrectProperties() { var mockCredential = new Mock <TokenCredential>(); var resource = "amqps://my.eventhubs.com/someHub"; var jwtToken = "somevalue"; var expiration = DateTimeOffset.Parse("2017-10-27T12:00:00Z"); var accessToken = new AccessToken(jwtToken, expiration); var eventHubCredential = new EventHubTokenCredential(mockCredential.Object, resource); var provider = new TrackOneGenericTokenProvider(eventHubCredential); mockCredential .Setup(credential => credential.GetTokenAsync(It.Is <string[]>(value => value.FirstOrDefault() == GetTokenScope()), It.IsAny <CancellationToken>())) .ReturnsAsync(accessToken); var token = await provider.GetTokenAsync(resource, TimeSpan.FromHours(1)); Assert.That(token, Is.Not.Null, "A token should have been produced."); Assert.That(token.TokenValue, Is.EqualTo(jwtToken), "The JWT token should match."); Assert.That(token.Audience, Is.EqualTo(resource), "The audience should match the resource."); Assert.That(token.ExpiresAtUtc, Is.EqualTo(expiration.UtcDateTime), "The token expiration should match."); }