Beispiel #1
0
        public async Task ThrowsIfMSINotEnabled()
        {
            _environment.SetEnvironmentVariable(EnvironmentSettingNames.MsiEndpoint, string.Empty);
            _environment.SetEnvironmentVariable(EnvironmentSettingNames.MsiSecret, string.Empty);

            var handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            handlerMock.Protected().Setup <Task <HttpResponseMessage> >("SendAsync",
                                                                        ItExpr.Is <HttpRequestMessage>(s => MatchesVerb(s, HttpMethod.Get) && UrlMatchesSystemAssignedIdentity(s, UriWithNoSasTokenHost)),
                                                                        ItExpr.IsAny <CancellationToken>()).ReturnsAsync(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(JsonConvert.SerializeObject(GetTokenServiceMsiResponse()))
            });

            _httpClientFactory = TestHelpers.CreateHttpClientFactory(handlerMock.Object);

            var tokenProvider = new ManagedIdentityTokenProvider(_environment, _httpClientFactory, new TestMetricsLogger(),
                                                                 NullLogger <ManagedIdentityTokenProvider> .Instance);

            await Assert.ThrowsAsync <InvalidOperationException>(async() => await tokenProvider.GetManagedIdentityToken(UriWithNoSasToken));
        }
Beispiel #2
0
        public async Task UsesUserAssignedIdentityToFetchToken()
        {
            _environment.SetEnvironmentVariable(EnvironmentSettingNames.MsiEndpoint, MsiEndpoint);
            _environment.SetEnvironmentVariable(EnvironmentSettingNames.MsiSecret, MSISecret);
            _environment.SetEnvironmentVariable(EnvironmentSettingNames.RunFromPackageManagedResourceId, UserAssignedIdentity);

            var handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            handlerMock.Protected().Setup <Task <HttpResponseMessage> >("SendAsync",
                                                                        ItExpr.Is <HttpRequestMessage>(s => MatchesVerb(s, HttpMethod.Get) && UrlMatchesUserAssignedIdentity(s, UriWithNoSasTokenHost, UserAssignedIdentity)),
                                                                        ItExpr.IsAny <CancellationToken>()).ReturnsAsync(new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(JsonConvert.SerializeObject(GetTokenServiceMsiResponse()))
            });

            _httpClientFactory = TestHelpers.CreateHttpClientFactory(handlerMock.Object);

            var tokenProvider = new ManagedIdentityTokenProvider(_environment, _httpClientFactory, new TestMetricsLogger(), NullLogger <ManagedIdentityTokenProvider> .Instance);
            var token         = await tokenProvider.GetManagedIdentityToken(UriWithNoSasToken);

            Assert.Equal(AccessToken, token);
        }
Beispiel #3
0
 public async Task ThrowsOnInvalidUrls(string url)
 {
     var tokenProvider = new ManagedIdentityTokenProvider(_environment, _httpClientFactory, new TestMetricsLogger(), NullLogger <ManagedIdentityTokenProvider> .Instance);
     await Assert.ThrowsAsync <ArgumentException>(async() => await tokenProvider.GetManagedIdentityToken(url));
 }