public async Task RequestAuthUrl_PinCode_ReturnsFromRequestExecutor() { // Arrange var controller = CreateAuthController(); var request = A.Fake <ITwitterRequest>(); var expectedResult = A.Fake <ITwitterResult>(); var parameters = A.Fake <IRequestAuthUrlParameters>(); var response = "oauth_token=MY_TOKEN&oauth_token_secret=MY_SECRET&oauth_callback_confirmed=true"; A.CallTo(() => _fakeAuthQueryExecutor.RequestAuthUrl(It.IsAny <RequestAuthUrlInternalParameters>(), request)).Returns(expectedResult); A.CallTo(() => expectedResult.RawResult).Returns(response); // Act var result = await controller.RequestAuthUrl(parameters, request); // Assert Assert.Equal("MY_TOKEN", result.DataTransferObject.AuthorizationKey); Assert.Equal("MY_SECRET", result.DataTransferObject.AuthorizationSecret); }
public async Task <ITwitterResult <IAuthenticationRequest> > RequestAuthUrl(IRequestAuthUrlParameters parameters, ITwitterRequest request) { var authToken = new AuthenticationRequest(request.Query.TwitterCredentials); var authProcessParams = new RequestAuthUrlInternalParameters(parameters, authToken); if (string.IsNullOrEmpty(parameters.CallbackUrl)) { authProcessParams.CallbackUrl = Resources.Auth_PinCodeUrl; } var requestTokenResponse = await _authQueryExecutor.RequestAuthUrl(authProcessParams, request).ConfigureAwait(false); if (string.IsNullOrEmpty(requestTokenResponse.RawResult) || requestTokenResponse.RawResult == Resources.Auth_RequestToken) { throw new TwitterAuthException(requestTokenResponse, "Invalid authentication response"); } var tokenInformation = _parseRequestUrlResponseRegex.Match(requestTokenResponse.RawResult); if (!bool.TryParse(tokenInformation.Groups["oauth_callback_confirmed"].Value, out var callbackConfirmed) || !callbackConfirmed) { throw new TwitterAuthAbortedException(requestTokenResponse); } authToken.AuthorizationKey = tokenInformation.Groups["oauth_token"].Value; authToken.AuthorizationSecret = tokenInformation.Groups["oauth_token_secret"].Value; var authorizationUrl = new StringBuilder(Resources.Auth_AuthorizeBaseUrl); authorizationUrl.AddParameterToQuery("oauth_token", authToken.AuthorizationKey); authorizationUrl.AddParameterToQuery("force_login", parameters.ForceLogin); authorizationUrl.AddParameterToQuery("screen_name", parameters.ScreenName); authToken.AuthorizationURL = authorizationUrl.ToString(); return(new TwitterResult <IAuthenticationRequest> { Request = requestTokenResponse.Request, Response = requestTokenResponse.Response, DataTransferObject = authToken }); }