У меня есть метод под названием GenerateJWTToken()
для генерации токена на предъявителя. Он использует AuthenticationContext
Однако AuthenticationContext
не имеет интерфейса. Как имитировать это в модульном тесте?
Вот код:
private async Task<string> GenerateJWTToken()
{
var instance = _configuration["AzureAd:Instance"];
var tenantId = _configuration["AzureAd:TenantId"];
var clientId = _configuration["AzureAd:ClientId"];
var clientSecret = _configuration.GetSection("appsecret").Value;
var resource = _configuration["AzureAd:Resource"];
var authority = string.Format("{0}{1}", instance, tenantId);
ClientCredential credential = new ClientCredential(clientId, clientSecret);
AuthenticationContext authContext = new AuthenticationContext(authority, false);
var result = await authContext.AcquireTokenAsync(resource, credential);
return result.AccessToken;
}
public async Task<HttpResponseMessage> GetResponseFromService(string userToken)
{
string endpoint = _configuration.GetSection("Service:Endpoint").Value;
var httpRequestMessage = new HttpRequestMessage()
{
Method = HttpMethod.Get,
RequestUri = new Uri(endpoint)
};
var jwtToken = await GenerateJWTToken();
httpRequestMessage.Headers.Add("Authorization", "Bearer " + jwtToken);
httpRequestMessage.Headers.Add("token", userToken);
HttpResponseMessage httpResponseMessage = await _rpsRequest.ExecuteAsync(() => httpRequestMessage, maxRetry);
return httpResponseMessage
}
Предположим, нам нужно написать модульный тест на GetResponseFromService()
, может ли кто-нибудь показать мне, как имитировать AuthenticationContext.AcquireTokenAsync
порция? Спасибо!