Example #1
0
        public async Task AddAsync_ContainsDuplicate_Overwrites()
        {
            await _sut.AddAsync("1", CreateAccessToken("1", 3600));

            await _sut.AddAsync("1", CreateAccessToken("modified", 3600));

            var result = await _sut.GetAsync("1");

            result.Should().Be("modified");
        }
        public async Task <string> GetAsync(AccessTokenRequestArgs args, CancellationToken token = default)
        {
            ValidateArgs(args);

            try
            {
                var accessToken = await _storage.GetAsync(args.RequestUri, token);

                if (accessToken != null)
                {
                    return(accessToken);
                }

                var accessTokenResponse = await _client.SendRequestAsync(args, token);

                EnsureValidAccessToken(accessTokenResponse);

                await _storage.AddAsync(args.RequestUri, accessTokenResponse, token);

                return(accessTokenResponse.AccessToken);
            }
            catch (Exception e)
            {
                throw new AuthenticationException("Could not retrieve an access token.", e);
            }
        }