// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using Microsoft.Identity.Client;
namespace {{YOUR_NAMESPACE}}.SSO
{
///
/// Helper class used to simplify unit test.
/// https://stackoverflow.com/questions/65334284/how-to-mock-moq-iconfidentialclientapplication-which-has-sealed-setup-abstract
///
internal class IdentityClientAdapter : IIdentityClientAdapter
{
private readonly IConfidentialClientApplication _confidentialClientApplication;
public IdentityClientAdapter(IConfidentialClientApplication confidentialClientApplication)
{
_confidentialClientApplication = confidentialClientApplication;
}
public async Task GetAccessToken(string ssoToken, IEnumerable scopes)
{
var userAssertion = new UserAssertion(ssoToken);
return await _confidentialClientApplication
.AcquireTokenOnBehalfOf(scopes, userAssertion)
.ExecuteAsync()
.ConfigureAwait(false);
}
}
}