public void Consumer_CanAuthorizeUserAsync()
        {
            //arrange
            options.RequestTokenResponseCallbackUrl =  TU.GenerateLocalHostBaseAddress();
            IConsumer consumer = new ConsumerFactory(options)
                .CreateConsumer();
            string verifier = null;
            var lisnrManualResetEvent = new ManualResetEvent(false);
            var requestLoginManualEvent = new ManualResetEvent(false);
            var authorizeUserManualEvent = new ManualResetEvent(false);

            Task<Uri> task = consumer.RequestLoginAsync();
            task.ContinueWith(uri => requestLoginManualEvent.Set());
            requestLoginManualEvent.WaitOne();

            Process.Start(task.Result.ToString());

            var listener = new HttpListener();
            listener.Prefixes.Add(options.RequestTokenResponseCallbackUrl);
            listener.Start();

            listener.BeginGetContext(
                ((r) =>
                {
                    var lisnr = (HttpListener)r.AsyncState;
                    var context = lisnr.EndGetContext(r);
                    var rq = context.Request.GetRequestParameters();
                    verifier = rq.Where(p => p.Name == "oauth_verifier")
                        .Select(p => p.Value)
                        .First();

                    lisnrManualResetEvent.Set();
                }),
            listener);

            lisnrManualResetEvent.WaitOne();
            ((IDisposable)listener).Dispose();

            //act
            //assert

            Task<TokenInfo> authorizeUserTask = consumer.AuthorizeUserAsync(verifier);
            task.ContinueWith(token => authorizeUserManualEvent.Set());
            authorizeUserManualEvent.WaitOne();

            //assert
            Assert.IsFalse(authorizeUserTask.IsFaulted);
            Assert.IsNull(authorizeUserTask.Exception);
            Assert.IsNotNull(authorizeUserTask.Result);
        }