Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
            });
        }