public async Task GivenARegistry_WithoutMIEnabled_WhenGetToken_TokenException_ShouldBeThrown()
        {
            IAccessTokenProvider tokenProvider     = new AzureAccessTokenProvider(new NullLogger <AzureAccessTokenProvider>());
            IHttpClientFactory   httpClientFactory = Substitute.For <IHttpClientFactory>();
            var httpClient = new HttpClient();

            httpClientFactory.CreateClient().ReturnsForAnyArgs(httpClient);
            AzureContainerRegistryAccessTokenProvider acrTokenProvider = new AzureContainerRegistryAccessTokenProvider(tokenProvider, httpClientFactory, Options.Create(_convertDataConfiguration), new NullLogger <AzureContainerRegistryAccessTokenProvider>());

            await Assert.ThrowsAsync <AzureContainerRegistryTokenException>(() => acrTokenProvider.GetTokenAsync(RegistryServer, default));
        }
        public async Task GivenAResourceUrl_WhenGetAccessToken_CachedAccessTokenWillBeReturnedIfNotExpired()
        {
            var resourceUrl         = "http://test";
            var accessTokenProvider = new AzureAccessTokenProvider(new MockTimeBasedTokenCredential(), new NullLogger <AzureAccessTokenProvider>());

            var accessToken = await accessTokenProvider.GetAccessTokenAsync(resourceUrl);

            Thread.Sleep(2000);
            var cachedToken = await accessTokenProvider.GetAccessTokenAsync(resourceUrl);

            Assert.Equal(accessToken, cachedToken);
        }
        public async Task GivenANullResourceUrl_WhenGetAccessToken_ArgumentNullExceptionShouldBeThrown(string resourceUrl)
        {
            var accessTokenProvider = new AzureAccessTokenProvider(new MockTokenCredential(), new NullLogger <AzureAccessTokenProvider>());

            _ = await Assert.ThrowsAsync <ArgumentNullException>(() => accessTokenProvider.GetAccessTokenAsync(resourceUrl));
        }