public void OperationUpdatesSessionStatus([TestConfigurations] ServerConfiguration config)
 {
     using (ServerContext context = new ServerContext(config))
     {
         using (var connection = context.OpenRdpConnection())
         {
             context.Source.Disconnect(context.TargetConnection, connection.SessionId);
             Assert.That(context.Source.GetSessionState(context.TargetConnection, connection.SessionId),
                         Is.EqualTo(ConnectionState.Disconnected));
         }
     }
 }
 public void OperationClosesSession([TestConfigurations] ServerConfiguration config)
 {
     using (var context = new ServerContext(config))
     {
         using (var connection = context.OpenRdpConnection())
         {
             context.Source.Logoff(context.TargetConnection, connection.SessionId);
             // Give Windows a bit of time to clean up the session.
             Thread.Sleep(1000);
             Assert.That(context.Source.SessionExists(context.TargetConnection, connection.SessionId), Is.False);
         }
     }
 }
 public void OperationDisconnectsClient([TestConfigurations] ServerConfiguration config)
 {
     using (var context = new ServerContext(config))
     {
         using (var connection = context.OpenRdpConnection())
         {
             var disconnectEvent = new ManualResetEvent(false);
             connection.Disconnected += delegate { disconnectEvent.Set(); };
             context.Source.Disconnect(context.TargetConnection, connection.SessionId);
             if (!disconnectEvent.WaitOne(TimeSpan.FromSeconds(10)))
             {
                 throw new TimeoutException("Not disconnected yet");
             }
         }
     }
 }
 public void ShowMessageBoxAndGetResponse([TestConfigurations] ServerConfiguration config)
 {
     using (var context = new ServerContext(config))
     {
         using (var connection = context.OpenRdpConnection())
         {
             var title = "Test " + Guid.NewGuid();
             context.Source.StartShowingMessageBox(context.TargetConnection, connection.SessionId, title,
                                                   "Hello!", RemoteMessageBoxButtons.AbortRetryIgnore,
                                                   TimeSpan.Zero);
             Assert.That(context.Target.WindowWithTitleExists(connection.SessionId, title));
             const RemoteMessageBoxResult expected = RemoteMessageBoxResult.Retry;
             // The automation ID of the button in the window is 4.
             context.Target.ClickButtonInWindow(connection.SessionId, title, ((int) expected).ToString());
             Assert.That(context.Source.GetLatestMessageBoxResponse(), Is.EqualTo(expected));
         }
     }
 }