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); }
public void Consumer_CannotRequestLoginAsync_InvalidConsumerKey_TaskFaultedWithException() { //arrange options.ConsumerKey = "InvalidConsumerKey"; IConsumer consumer = new ConsumerFactory(options) .CreateConsumer(); try { //act Task<Uri> task = consumer.RequestLoginAsync(); task.Wait(); } catch (AggregateException ex) { //assert Assert.IsNotNull(ex.InnerException); Assert.IsInstanceOfType(ex.InnerException, typeof(CommunicationException)); } }
public void Consumer_CanRequestLoginAsync() { //arrange IConsumer consumer = new ConsumerFactory(options) .CreateConsumer(); var manualResetEvent = new ManualResetEvent(false); //act Task<Uri> task = consumer.RequestLoginAsync(); task.ContinueWith(uri => manualResetEvent.Set()); manualResetEvent.WaitOne(); //assert Assert.IsFalse(task.IsFaulted); Assert.IsNull(task.Exception); Assert.IsNotNull(task.Result); }
public void Consumer_CannotRequestLoginAsync_InvalidTokenPath_TaskFaultedWithException() { //arrange options.RequestTokenUrl = "http://invalid"; IConsumer consumer = new ConsumerFactory(options) .CreateConsumer(); try { Task task = consumer.RequestLoginAsync(); task.Wait(); } catch (AggregateException ex) { Assert.IsNotNull(ex.InnerException); Assert.IsInstanceOfType(ex.InnerException, typeof(CommunicationException)); return; } Assert.Fail("Expected communication excepton."); }