Skip to content

Commit b1bf3e4

Browse files
committed
Added tests and removed duplication method.
1 parent 8f59f9b commit b1bf3e4

File tree

5 files changed

+40
-20
lines changed

5 files changed

+40
-20
lines changed

src/Umbraco.AuthorizedServices/Services/IRefreshTokenParametersBuilder.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,4 @@ public interface IRefreshTokenParametersBuilder
1414
/// <param name="refreshToken">The refresh token.</param>
1515
/// <returns>A dictionary containing the refresh token parameters.</returns>
1616
Dictionary<string, string> BuildParameters(ServiceDetail serviceDetail, string refreshToken);
17-
18-
/// <summary>
19-
/// Builds the parameter dictionary used in long lived token refresh requests.
20-
/// </summary>
21-
/// <param name="serviceDetail">The service detail.</param>
22-
/// <param name="accessToken">The acccess token.</param>
23-
/// <returns>A dictionary containing the refresh token parameters.</returns>
24-
Dictionary<string, string> BuildParametesForOAuth2AccessTokenExchange(ServiceDetail serviceDetail, string accessToken);
2517
}

src/Umbraco.AuthorizedServices/Services/Implement/AuthorizedServiceCaller.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ internal sealed class AuthorizedServiceCaller : AuthorizedServiceBase, IAuthoriz
1616
private readonly JsonSerializerFactory _jsonSerializerFactory;
1717
private readonly IAuthorizedRequestBuilder _authorizedRequestBuilder;
1818
private readonly IRefreshTokenParametersBuilder _refreshTokenParametersBuilder;
19+
private readonly IExchangeTokenParametersBuilder _exchangeTokenParametersBuilder;
1920

2021
public AuthorizedServiceCaller(
2122
AppCaches appCaches,
@@ -28,13 +29,15 @@ public AuthorizedServiceCaller(
2829
IHttpClientFactory httpClientFactory,
2930
JsonSerializerFactory jsonSerializerFactory,
3031
IAuthorizedRequestBuilder authorizedRequestBuilder,
31-
IRefreshTokenParametersBuilder refreshTokenParametersBuilder)
32+
IRefreshTokenParametersBuilder refreshTokenParametersBuilder,
33+
IExchangeTokenParametersBuilder exchangeTokenParametersBuilder)
3234
: base(appCaches, tokenFactory, tokenStorage, keyStorage, authorizationRequestSender, logger, serviceDetailOptions)
3335
{
3436
_httpClientFactory = httpClientFactory;
3537
_jsonSerializerFactory = jsonSerializerFactory;
3638
_authorizedRequestBuilder = authorizedRequestBuilder;
3739
_refreshTokenParametersBuilder = refreshTokenParametersBuilder;
40+
_exchangeTokenParametersBuilder = exchangeTokenParametersBuilder;
3841
}
3942

4043
public async Task SendRequestAsync(string serviceAlias, string path, HttpMethod httpMethod)
@@ -174,7 +177,7 @@ private async Task<Token> EnsureExchangeAccessToken(string serviceAlias, Token t
174177
ServiceDetail serviceDetail = GetServiceDetail(serviceAlias);
175178

176179
Dictionary<string, string> parameters = serviceDetail.CanExchangeToken
177-
? _refreshTokenParametersBuilder.BuildParametesForOAuth2AccessTokenExchange(serviceDetail, refreshToken)
180+
? _exchangeTokenParametersBuilder.BuildParameters(serviceDetail, refreshToken)
178181
: _refreshTokenParametersBuilder.BuildParameters(serviceDetail, refreshToken);
179182

180183
HttpResponseMessage response = serviceDetail.CanExchangeToken

src/Umbraco.AuthorizedServices/Services/Implement/RefreshTokenParametersBuilder.cs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,4 @@ public Dictionary<string, string> BuildParameters(ServiceDetail serviceDetail, s
1212
{ "client_secret", serviceDetail.ClientSecret },
1313
{ "refresh_token", refreshToken }
1414
};
15-
16-
public Dictionary<string, string> BuildParametesForOAuth2AccessTokenExchange(ServiceDetail serviceDetail, string accessToken) =>
17-
new Dictionary<string, string>
18-
{
19-
{
20-
"grant_type", serviceDetail.ExchangeTokenProvision is not null ? serviceDetail.ExchangeTokenProvision.RefreshTokenGrantType : string.Empty
21-
},
22-
{ "access_token", accessToken }
23-
};
2415
}

tests/Umbraco.AuthorizedServices.Tests/Services/AuthorizedServiceCallerTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,8 @@ private AuthorizedServiceCaller CreateService(
279279
new TestHttpClientFactory(statusCode, responseContent),
280280
factory,
281281
new AuthorizedRequestBuilder(factory),
282-
new RefreshTokenParametersBuilder());
282+
new RefreshTokenParametersBuilder(),
283+
new ExchangeTokenParametersBuilder());
283284
}
284285

285286
private class TestHttpClientFactory : IHttpClientFactory
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using Umbraco.AuthorizedServices.Configuration;
2+
using Umbraco.AuthorizedServices.Services.Implement;
3+
4+
namespace Umbraco.AuthorizedServices.Tests.Services;
5+
6+
internal class ExchangeTokenParametersBuilderTests
7+
{
8+
[Test]
9+
public void BuildParameters_ReturnsExpectedResult()
10+
{
11+
// Arrange
12+
var serviceDetail = new ServiceDetail
13+
{
14+
ClientSecret = "TestClientSecret",
15+
CanExchangeToken = true,
16+
ExchangeTokenProvision = new()
17+
{
18+
TokenGrantType = "ig_exchange_token"
19+
}
20+
};
21+
const string AccessToken = "abcd";
22+
var sut = new ExchangeTokenParametersBuilder();
23+
24+
// Act
25+
Dictionary<string, string> result = sut.BuildParameters(serviceDetail, AccessToken);
26+
27+
// Assert
28+
result.Count.Should().Be(3);
29+
result["grant_type"].Should().Be("ig_exchange_token");
30+
result["client_secret"].Should().Be("TestClientSecret");
31+
result["access_token"].Should().Be(AccessToken);
32+
}
33+
}

0 commit comments

Comments
 (0)