Skip to content

Commit 7a413a9

Browse files
committed
#938 Removed the concept of AuthenticationContext in preference to AuthenticationRequestToken
1 parent 60bde43 commit 7a413a9

27 files changed

+139
-342
lines changed

Tests/xUnitinvi/ClientActions/AuthClient/AuthControllerTests.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ public async Task StartAuthProcess_PinCode_ReturnsFromRequestExecutor()
6161
var result = await controller.RequestAuthUrl(parameters, request);
6262

6363
// Assert
64-
Assert.Equal("MY_TOKEN", result.DataTransferObject.Token.AuthorizationKey);
65-
Assert.Equal("MY_SECRET", result.DataTransferObject.Token.AuthorizationSecret);
64+
Assert.Equal("MY_TOKEN", result.DataTransferObject.AuthorizationKey);
65+
Assert.Equal("MY_SECRET", result.DataTransferObject.AuthorizationSecret);
6666
}
6767

6868
[Fact]
@@ -86,8 +86,8 @@ public async Task StartAuthProcess_WithRedirectUrl_ReturnsFromRequestExecutor()
8686
var result = await controller.RequestAuthUrl(parameters, request);
8787

8888
// Assert
89-
Assert.Equal("MY_TOKEN", result.DataTransferObject.Token.AuthorizationKey);
90-
Assert.Equal("MY_SECRET", result.DataTransferObject.Token.AuthorizationSecret);
89+
Assert.Equal("MY_TOKEN", result.DataTransferObject.AuthorizationKey);
90+
Assert.Equal("MY_SECRET", result.DataTransferObject.AuthorizationSecret);
9191
}
9292

9393
[Fact]
@@ -111,8 +111,8 @@ public async Task StartAuthProcess_WithRedirectUrlAndAuthId_ReturnsFromRequestEx
111111
var result = await controller.RequestAuthUrl(parameters, request);
112112

113113
// Assert
114-
Assert.Equal("MY_TOKEN", result.DataTransferObject.Token.AuthorizationKey);
115-
Assert.Equal("MY_SECRET", result.DataTransferObject.Token.AuthorizationSecret);
114+
Assert.Equal("MY_TOKEN", result.DataTransferObject.AuthorizationKey);
115+
Assert.Equal("MY_SECRET", result.DataTransferObject.AuthorizationSecret);
116116
}
117117

118118
[Fact]

Tests/xUnitinvi/IntegrationTests/AuthIntegrationTests.cs

+7-7
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,14 @@ public async Task AuthenticateWithRedirectUrl()
103103
AuthAccessType = AuthAccessType.ReadWrite
104104
});
105105

106-
var authenticatedClient = await GetAuthenticatedTwitterClientViaRedirect(client, authContext);
106+
var authenticatedClient = await GetAuthenticatedTwitterClientViaRedirect(client, authContext).ConfigureAwait(false);
107107

108108
// assert
109109
var authenticatedUser = await authenticatedClient.Account.GetAuthenticatedUser().ConfigureAwait(false);
110110

111111
// has write permissions
112-
var tweet = await authenticatedClient.Tweets.PublishTweet("random tweet");
113-
await tweet.Destroy();
112+
var tweet = await authenticatedClient.Tweets.PublishTweet("random tweet").ConfigureAwait(false);
113+
await tweet.Destroy().ConfigureAwait(false);
114114

115115
Assert.Equal(authenticatedUser.ScreenName, IntegrationTestConfig.ProtectedUser.AccountId);
116116
}
@@ -138,22 +138,22 @@ public async Task AuthenticateWithReadOnlyPermissions()
138138
Assert.Equal(authenticatedUser.ScreenName, IntegrationTestConfig.ProtectedUser.AccountId);
139139
}
140140

141-
private async Task<TwitterClient> GetAuthenticatedTwitterClientViaRedirect(ITwitterClient client, IAuthenticationContext authContext)
141+
private async Task<TwitterClient> GetAuthenticatedTwitterClientViaRedirect(ITwitterClient client, IAuthenticationRequestToken authRequestToken)
142142
{
143143
var expectAuthRequestTask = AExtensions.HttpRequest(new AssertHttpRequestConfig(_logger.WriteLine))
144144
.OnPort(8042)
145145
.WithATimeoutOf(TimeSpan.FromSeconds(30))
146-
.Matching(request => { return request.Url.AbsoluteUri.Contains(authContext.Token.AuthorizationKey); })
146+
.Matching(request => { return request.Url.AbsoluteUri.Contains(authRequestToken.AuthorizationKey); })
147147
.MustHaveHappened();
148148

149-
await AuthenticateWithRedirectUrlOnTwitterAuthPage(authContext.AuthorizationURL, authContext.Token.AuthorizationKey).ConfigureAwait(false);
149+
await AuthenticateWithRedirectUrlOnTwitterAuthPage(authRequestToken.AuthorizationURL, authRequestToken.AuthorizationKey).ConfigureAwait(false);
150150

151151
var authRequest = await expectAuthRequestTask.ConfigureAwait(false);
152152

153153
// Ask the user to enter the pin code given by Twitter
154154
var callbackUrl = authRequest.Url.AbsoluteUri;
155155

156-
var userCredentials = await client.Auth.RequestCredentialsFromCallbackUrl(callbackUrl, authContext);
156+
var userCredentials = await client.Auth.RequestCredentialsFromCallbackUrl(callbackUrl, authRequestToken).ConfigureAwait(false);
157157
var authenticatedClient = new TwitterClient(userCredentials);
158158
return authenticatedClient;
159159
}

Tests/xUnitinvi/xUnitinvi.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
<Content Include="banner.jpg">
3939
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
4040
</Content>
41+
<None Remove="coverage.json" />
4142
</ItemGroup>
4243

4344
</Project>

Tweetinvi.Controllers/Auth/AuthController.cs

+15-14
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,27 @@ public Task<ITwitterResult<CreateTokenResponseDTO>> CreateBearerToken(ITwitterRe
3030
return _authQueryExecutor.CreateBearerToken(request);
3131
}
3232

33-
public async Task<ITwitterResult<IAuthenticationContext>> RequestAuthUrl(IRequestAuthUrlParameters parameters, ITwitterRequest request)
33+
public async Task<ITwitterResult<IAuthenticationRequestToken>> RequestAuthUrl(IRequestAuthUrlParameters parameters, ITwitterRequest request)
3434
{
35-
var authContext = new AuthenticationContext(request.Query.TwitterCredentials);
36-
var token = authContext.Token;
37-
var authProcessParams = new RequestAuthUrlInternalParameters(parameters, token);
35+
var authToken = new AuthenticationRequestToken(request.Query.TwitterCredentials)
36+
{
37+
Id = parameters.RequestId
38+
};
39+
40+
var authProcessParams = new RequestAuthUrlInternalParameters(parameters, authToken);
3841

3942
if (string.IsNullOrEmpty(parameters.CallbackUrl))
4043
{
4144
authProcessParams.CallbackUrl = Resources.Auth_PinCodeUrl;
4245
}
4346
else if (parameters.RequestId != null)
4447
{
45-
token.Id = parameters.RequestId;
4648
var tweetinviTokenParameterName = parameters.AuthenticationTokenProvider?.CallbackTokenIdParameterName() ?? Resources.Auth_ProcessIdKey;
4749
authProcessParams.CallbackUrl = authProcessParams.CallbackUrl.AddParameterToQuery(tweetinviTokenParameterName, parameters.RequestId);
4850

4951
if (parameters.AuthenticationTokenProvider != null)
5052
{
51-
await parameters.AuthenticationTokenProvider.AddAuthenticationToken(token);
53+
await parameters.AuthenticationTokenProvider.AddAuthenticationToken(authToken);
5254
}
5355
}
5456

@@ -66,16 +68,15 @@ public async Task<ITwitterResult<IAuthenticationContext>> RequestAuthUrl(IReques
6668
throw new TwitterAuthAbortedException(requestTokenResponse);
6769
}
6870

69-
token.AuthorizationKey = tokenInformation.Groups["oauth_token"].Value;
70-
token.AuthorizationSecret = tokenInformation.Groups["oauth_token_secret"].Value;
71-
72-
authContext.AuthorizationURL = $"{Resources.Auth_AuthorizeBaseUrl}?oauth_token={token.AuthorizationKey}";
71+
authToken.AuthorizationKey = tokenInformation.Groups["oauth_token"].Value;
72+
authToken.AuthorizationSecret = tokenInformation.Groups["oauth_token_secret"].Value;
73+
authToken.AuthorizationURL = $"{Resources.Auth_AuthorizeBaseUrl}?oauth_token={authToken.AuthorizationKey}";
7374

74-
return new TwitterResult<IAuthenticationContext>
75+
return new TwitterResult<IAuthenticationRequestToken>
7576
{
7677
Request = requestTokenResponse.Request,
7778
Response = requestTokenResponse.Response,
78-
DataTransferObject = authContext
79+
DataTransferObject = authToken
7980
};
8081
}
8182

@@ -91,8 +92,8 @@ public async Task<ITwitterResult<ITwitterCredentials>> RequestCredentials(IReque
9192
}
9293

9394
var credentials = new TwitterCredentials(
94-
parameters.AuthToken.ConsumerKey,
95-
parameters.AuthToken.ConsumerSecret,
95+
parameters.AuthRequestToken.ConsumerKey,
96+
parameters.AuthRequestToken.ConsumerSecret,
9697
responseInformation.Groups["oauth_token"].Value,
9798
responseInformation.Groups["oauth_token_secret"].Value);
9899

Tweetinvi.Controllers/Auth/AuthQueryExecutor.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public Task<ITwitterResult> RequestAuthUrl(RequestAuthUrlInternalParameters para
4747

4848
request.Query.Url = _queryGenerator.GetRequestAuthUrlQuery(parameters);
4949
request.Query.HttpMethod = HttpMethod.POST;
50-
request.TwitterClientHandler = new AuthHttpHandler(callbackParameter, parameters.AuthenticationToken, oAuthWebRequestGenerator);;
50+
request.TwitterClientHandler = new AuthHttpHandler(callbackParameter, parameters.AuthRequestToken, oAuthWebRequestGenerator);
5151

5252
return _twitterAccessor.ExecuteRequest(request);
5353
}
@@ -59,8 +59,8 @@ public Task<ITwitterResult> RequestCredentials(IRequestCredentialsParameters par
5959

6060
request.Query.Url = _queryGenerator.GetRequestCredentialsQuery(parameters);
6161
request.Query.HttpMethod = HttpMethod.POST;
62-
request.Query.TwitterCredentials = new TwitterCredentials(parameters.AuthToken.ConsumerKey, parameters.AuthToken.ConsumerSecret);
63-
request.TwitterClientHandler = new AuthHttpHandler(callbackParameter, parameters.AuthToken, oAuthWebRequestGenerator);
62+
request.Query.TwitterCredentials = new TwitterCredentials(parameters.AuthRequestToken.ConsumerKey, parameters.AuthRequestToken.ConsumerSecret);
63+
request.TwitterClientHandler = new AuthHttpHandler(callbackParameter, parameters.AuthRequestToken, oAuthWebRequestGenerator);
6464

6565
return _twitterAccessor.ExecuteRequest(request);
6666
}

Tweetinvi.Controllers/Auth/RequestAuthUrlInternalParameters.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ namespace Tweetinvi.Controllers.Auth
55
{
66
public class RequestAuthUrlInternalParameters : RequestUrlAuthUrlParameters
77
{
8-
public IAuthenticationToken AuthenticationToken { get; }
8+
public IAuthenticationRequestToken AuthRequestToken { get; }
99

10-
public RequestAuthUrlInternalParameters(IRequestAuthUrlParameters parameters, IAuthenticationToken authenticationToken) : base(parameters)
10+
public RequestAuthUrlInternalParameters(IRequestAuthUrlParameters parameters, IAuthenticationRequestToken authRequestToken) : base(parameters)
1111
{
12-
AuthenticationToken = authenticationToken;
12+
AuthRequestToken = authRequestToken;
1313
}
1414
}
1515
}

Tweetinvi.Core/Core/Client/Validators/AuthClientRequiredParametersValidator.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,19 @@ public void Validate(IRequestCredentialsParameters parameters)
5050
throw new ArgumentNullException($"{nameof(parameters)}{nameof(parameters.VerifierCode)}", "If you received a null verifier code, the authentication failed");
5151
}
5252

53-
if (parameters.AuthToken == null)
53+
if (parameters.AuthRequestToken == null)
5454
{
55-
throw new ArgumentNullException($"{nameof(parameters)}{nameof(parameters.AuthToken)}");
55+
throw new ArgumentNullException($"{nameof(parameters)}{nameof(parameters.AuthRequestToken)}");
5656
}
5757

58-
if (string.IsNullOrEmpty(parameters.AuthToken.ConsumerKey))
58+
if (string.IsNullOrEmpty(parameters.AuthRequestToken.ConsumerKey))
5959
{
60-
throw new ArgumentNullException($"{nameof(parameters)}{nameof(parameters.AuthToken)}{nameof(parameters.AuthToken.ConsumerKey)}");
60+
throw new ArgumentNullException($"{nameof(parameters)}{nameof(parameters.AuthRequestToken)}{nameof(parameters.AuthRequestToken.ConsumerKey)}");
6161
}
6262

63-
if (string.IsNullOrEmpty(parameters.AuthToken.ConsumerSecret))
63+
if (string.IsNullOrEmpty(parameters.AuthRequestToken.ConsumerSecret))
6464
{
65-
throw new ArgumentNullException($"{nameof(parameters)}{nameof(parameters.AuthToken)}{nameof(parameters.AuthToken.ConsumerSecret)}");
65+
throw new ArgumentNullException($"{nameof(parameters)}{nameof(parameters.AuthRequestToken)}{nameof(parameters.AuthRequestToken.ConsumerSecret)}");
6666
}
6767
}
6868
}

Tweetinvi.Core/Core/Controllers/IAuthController.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.Threading.Tasks;
2-
using Tweetinvi.Core.Credentials;
32
using Tweetinvi.Core.DTO;
43
using Tweetinvi.Core.Web;
54
using Tweetinvi.Models;
@@ -10,7 +9,7 @@ namespace Tweetinvi.Core.Controllers
109
public interface IAuthController
1110
{
1211
Task<ITwitterResult<CreateTokenResponseDTO>> CreateBearerToken(ITwitterRequest request);
13-
Task<ITwitterResult<IAuthenticationContext>> RequestAuthUrl(IRequestAuthUrlParameters parameters, ITwitterRequest request);
12+
Task<ITwitterResult<IAuthenticationRequestToken>> RequestAuthUrl(IRequestAuthUrlParameters parameters, ITwitterRequest request);
1413
Task<ITwitterResult<ITwitterCredentials>> RequestCredentials(IRequestCredentialsParameters parameters, ITwitterRequest request);
1514
}
1615
}

Tweetinvi.Core/Core/Credentials/IWebTokenFactory.cs

-7
This file was deleted.

Tweetinvi.Core/Core/Web/IOAuthWebRequestGenerator.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public interface IOAuthWebRequestGenerator
2222
/// </summary>
2323
IEnumerable<IOAuthQueryParameter> GenerateApplicationParameters(
2424
IReadOnlyConsumerCredentials temporaryCredentials,
25-
IAuthenticationToken authenticationToken = null,
25+
IAuthenticationRequestToken authRequestToken = null,
2626
IEnumerable<IOAuthQueryParameter> additionalParameters = null);
2727

2828
/// <summary>

Tweetinvi.Core/Public/Auth/AuthenticationTokenProvider.cs

+11-11
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,27 @@ public interface IAuthenticationTokenProvider
2727
/// <summary>
2828
/// Returns the authentication token information from its id
2929
/// </summary>
30-
Task<IAuthenticationToken> GetAuthenticationTokenFromId(string tokenId);
30+
Task<IAuthenticationRequestToken> GetAuthenticationTokenFromId(string requestId);
3131

3232
/// <summary>
3333
/// Logic to add an authenticationToken to the store
3434
/// </summary>
35-
Task AddAuthenticationToken(IAuthenticationToken authenticationToken);
35+
Task AddAuthenticationToken(IAuthenticationRequestToken authenticationRequestToken);
3636

3737
/// <summary>
3838
/// Logic to remove an authenticationToken from the store
3939
/// </summary>
40-
Task RemoveAuthenticationToken(string tokenId);
40+
Task RemoveAuthenticationToken(string requestId);
4141
}
4242

4343
// ReSharper disable once ClassWithVirtualMembersNeverInherited.Global
4444
public class AuthenticationTokenProvider : IAuthenticationTokenProvider
4545
{
46-
private readonly ConcurrentDictionary<string, IAuthenticationToken> _store;
46+
private readonly ConcurrentDictionary<string, IAuthenticationRequestToken> _store;
4747

4848
public AuthenticationTokenProvider()
4949
{
50-
_store = new ConcurrentDictionary<string, IAuthenticationToken>();
50+
_store = new ConcurrentDictionary<string, IAuthenticationRequestToken>();
5151
}
5252

5353
public virtual string CallbackTokenIdParameterName()
@@ -73,21 +73,21 @@ public virtual string GenerateAuthTokenId()
7373
return Guid.NewGuid().ToString();
7474
}
7575

76-
public virtual Task<IAuthenticationToken> GetAuthenticationTokenFromId(string authorizationId)
76+
public virtual Task<IAuthenticationRequestToken> GetAuthenticationTokenFromId(string requestId)
7777
{
78-
_store.TryGetValue(authorizationId, out var authenticationToken);
78+
_store.TryGetValue(requestId, out var authenticationToken);
7979
return Task.FromResult(authenticationToken);
8080
}
8181

82-
public virtual Task AddAuthenticationToken(IAuthenticationToken authenticationToken)
82+
public virtual Task AddAuthenticationToken(IAuthenticationRequestToken authenticationRequestToken)
8383
{
84-
_store.AddOrUpdate(authenticationToken.Id, s => authenticationToken, (s, token) => authenticationToken);
84+
_store.AddOrUpdate(authenticationRequestToken.Id, s => authenticationRequestToken, (s, token) => authenticationRequestToken);
8585
return Task.CompletedTask;
8686
}
8787

88-
public virtual Task RemoveAuthenticationToken(string authorizationId)
88+
public virtual Task RemoveAuthenticationToken(string requestId)
8989
{
90-
_store.TryRemove(authorizationId, out _);
90+
_store.TryRemove(requestId, out _);
9191
return Task.CompletedTask;
9292
}
9393
}

0 commit comments

Comments
 (0)