private static void ValidateArgs(AccessTokenRequestArgs args) { if (args == null) { throw new ArgumentNullException(nameof(args)); } }
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); } }
public void GetAsync_ArgsEqNull_Throws() { AccessTokenRequestArgs args = null; Func <Task> act = () => _sut.GetAsync(args); act.Should().Throw <ArgumentNullException>(); }
public async Task <AccessTokenResponse> SendRequestAsync(AccessTokenRequestArgs args, CancellationToken token) { var requestBody = CreateBody(args.ClientId, args.ClientAssertion); var response = await _httpClient.PostAsync(RemoveSlashSuffix(args.RequestUri), requestBody, token); response.EnsureSuccessStatusCode(); return(await AccessTokenResponse.FromHttpContentAsync(response.Content)); }