public void InitializingCtor()
        {
            var consumer = new OAuth1Consumer(TestUtilities.ConsumerKey, TestUtilities.ConsumerSecret);

            Assert.AreEqual(TestUtilities.ConsumerKey, consumer.ConsumerKey);
            Assert.AreEqual(TestUtilities.ConsumerSecret, consumer.ConsumerSecret);
        }
        public async Task CompleteAuthorizationAsync()
        {
            this.MockHandler = async req => {
                Assert.AreEqual(TestUtilities.AccessTokenEndpoint, req.RequestUri);
                Assert.AreEqual(HttpMethod.Post, req.Method);

                string requestContent = await req.Content.ReadAsStringAsync();

                Assert.AreEqual(string.Empty, requestContent);

                var response = new HttpResponseMessage();
                response.Content = new FormUrlEncodedContent(
                    new Dictionary <string, string>
                {
                    { "oauth_token", TestUtilities.AccessToken },
                    { "oauth_token_secret", TestUtilities.AccessTokenSecret },
                });
                return(response);
            };

            var consumer = new OAuth1Consumer();

            consumer.HttpMessageHandler  = this.MockMessageHandler;
            consumer.ConsumerKey         = TestUtilities.ConsumerKey;
            consumer.ConsumerSecret      = TestUtilities.ConsumerSecret;
            consumer.AccessTokenEndpoint = TestUtilities.AccessTokenEndpoint;
            consumer.TemporaryToken      = TestUtilities.TempCredToken;
            consumer.TemporarySecret     = TestUtilities.TempCredTokenSecret;
            await consumer.CompleteAuthorizationAsync(ExpectedCallbackUri.AbsoluteUri);

            Assert.IsNull(consumer.TemporaryToken);
            Assert.IsNull(consumer.TemporarySecret);
            Assert.AreEqual(TestUtilities.AccessToken, consumer.AccessToken);
            Assert.AreEqual(TestUtilities.AccessTokenSecret, consumer.AccessTokenSecret);
        }
        public async Task CompleteAuthorizationAsyncUninitializedTemporaryToken()
        {
            var consumer = new OAuth1Consumer();

            consumer.HttpMessageHandler  = this.MockMessageHandler;
            consumer.ConsumerKey         = TestUtilities.ConsumerKey;
            consumer.ConsumerSecret      = TestUtilities.ConsumerSecret;
            consumer.AccessTokenEndpoint = TestUtilities.AccessTokenEndpoint;
            consumer.TemporarySecret     = TestUtilities.TempCredTokenSecret;
            await consumer.CompleteAuthorizationAsync(ExpectedCallbackUri);
        }
        public async Task StartAuthorizationAsyncBeforeConsumerSecretEndpointInitialization()
        {
            var consumer = new OAuth1Consumer();

            consumer.ConsumerKey = TestUtilities.ConsumerKey;
            consumer.TemporaryCredentialsEndpoint = TestUtilities.TemporaryCredentialsEndpoint;
            try {
                await consumer.StartAuthorizationAsync("oob");

                Assert.Fail("Expected exception not thrown.");
            } catch (InvalidOperationException) {
            }
        }
        public void IsAuthorized()
        {
            var consumer = new OAuth1Consumer();

            Assert.IsFalse(consumer.IsAuthorized);
            consumer.AccessToken = TestUtilities.AccessToken;
            Assert.IsFalse(consumer.IsAuthorized);             // just AccessToken

            consumer.ConsumerKey = TestUtilities.ConsumerKey;
            Assert.IsTrue(consumer.IsAuthorized);             // both

            consumer.AccessToken = null;
            Assert.IsFalse(consumer.IsAuthorized);             // just ConsumerKey
        }
        public async Task StartAuthorizationAsyncOob()
        {
            this.MockHandler = async req => {
                Assert.AreEqual(TestUtilities.TemporaryCredentialsEndpoint, req.RequestUri);
                Assert.AreEqual(HttpMethod.Post, req.Method);
                var oauthArgs = TestUtilities.ParseAuthorizationHeader(req.Headers.Authorization.Parameter);
                Assert.AreEqual("oob", oauthArgs["oauth_callback"]);
                Assert.AreEqual(TestUtilities.ConsumerKey, oauthArgs["oauth_consumer_key"]);
                Assert.IsTrue(string.IsNullOrEmpty(oauthArgs["oauth_token"]));
                Assert.IsFalse(string.IsNullOrEmpty(oauthArgs["oauth_signature_method"]));
                Assert.IsFalse(string.IsNullOrEmpty(oauthArgs["oauth_timestamp"]));
                Assert.IsFalse(string.IsNullOrEmpty(oauthArgs["oauth_nonce"]));
                Assert.AreEqual("1.0", oauthArgs["oauth_version"]);

                string requestContent = await req.Content.ReadAsStringAsync();

                Assert.AreEqual(string.Empty, requestContent);

                return(new HttpResponseMessage {
                    Content = new FormUrlEncodedContent(
                        new Dictionary <string, string> {
                        { "oauth_callback_confirmed", "true" },
                        { "oauth_token", TestUtilities.TempCredToken },
                        { "oauth_token_secret", TestUtilities.TempCredTokenSecret },
                    }),
                });
            };

            var consumer = new OAuth1Consumer();

            consumer.HttpMessageHandler           = this.MockMessageHandler;
            consumer.ConsumerKey                  = TestUtilities.ConsumerKey;
            consumer.ConsumerSecret               = TestUtilities.ConsumerSecret;
            consumer.TemporaryCredentialsEndpoint = TestUtilities.TemporaryCredentialsEndpoint;
            consumer.AuthorizationEndpoint        = TestUtilities.AuthorizationEndpoint;
            var authUri = await consumer.StartAuthorizationAsync("oob");

            Assert.AreEqual(TestUtilities.AuthorizationEndpoint.AbsoluteUri + "?oauth_token=" + Uri.EscapeDataString(TestUtilities.TempCredToken), authUri.AbsoluteUri);
        }
 public void DefaultCtor()
 {
     var consumer = new OAuth1Consumer();
 }