Exemplo n.º 1
0
        public async Task ProcessSessionEndedAsync(SessionEndedEvent message)
        {
            var emailAndDemoMode = await IsDemoMode(message.CustomerId);

            if (!emailAndDemoMode.Item2)
            {
                _log.Info("Customer email not in demo mode", new { message.CustomerId });
                return;
            }

            var newEmail = $"{Guid.NewGuid()}@{_demoModeEmailSuffix}";

            _log.Info("Changing user's email because of logout", new
            {
                message.CustomerId,
                message.TimeStamp,
                message.Token,
                oldEmail = emailAndDemoMode.Item1,
                newEmail
            });

            await _customerManagementServiceClient.EmailsApi.UpdateEmailAsync(new UpdateEmailRequestModel
            {
                CustomerId = message.CustomerId,
                NewEmail   = newEmail
            });
        }
        public async Task WhenSetClientConnectionEncryptionLevelSetToLow_ThenConnectionSucceeds(
            [WindowsInstance(InitializeScript = @"
                & reg add ""HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services"" /t REG_DWORD /v MinEncryptionLevel /d 1 /f | Out-Default
            ")] ResourceTask <InstanceLocator> testInstance,
            [Credential(Role = PredefinedRole.IapTunnelUser)] ResourceTask <ICredential> credential)
        {
            var locator = await testInstance;

            using (var tunnel = IapTunnel.ForRdp(
                       locator,
                       await credential))
            {
                var session = await Connect(tunnel, locator);

                AwaitEvent <SessionStartedEvent>();
                Assert.IsNull(this.ExceptionShown);

                SessionEndedEvent expectedEvent = null;

                this.serviceProvider.GetService <IEventService>()
                .BindHandler <SessionEndedEvent>(e =>
                {
                    expectedEvent = e;
                });

                Delay(TimeSpan.FromSeconds(5));
                session.Close();

                Assert.IsNotNull(expectedEvent);
            }
        }
Exemplo n.º 3
0
        public void EndSession(long sessionId)
        {
            _sessions.TryRemove(sessionId, out var session);

            SessionEndedEvent?.Invoke(session);

            _logger.LogInformation($"SessionId: {session.Id}");
        }
        private void OnRdpSessionEnded(SessionEndedEvent e)
        {
            var node = (VmInstanceNode)TryFindNode(e.Instance);

            if (node != null)
            {
                // Another connection might still be open, so re-check before
                // marking the node as not connected.
                node.IsConnected = this.sessionBroker.IsConnected(node.Reference);
            }
        }
Exemplo n.º 5
0
        public async void StartSession()//запуск сессии
        {
            for (int i = 1; i <= CountTests; i++)
            {
                var test = new Test((i - 1) * StepTest, i); //создаем экземпляр классTest
                await test.StartTest();                     //запускаем и ожидаем выполнения теста

                ListTests.Add(test);                        //добавляем завершенный тест в список
            }
            SessionEndedEvent?.Invoke();                    //уведомляем о завершении
        }
Exemplo n.º 6
0
        public async Task WhenCredentialsValid_ThenConnectingSucceeds(
            [Values(RdpConnectionBarState.AutoHide, RdpConnectionBarState.Off, RdpConnectionBarState.Pinned)]
            RdpConnectionBarState connectionBarState,

            [Values(RdpDesktopSize.ClientSize, RdpDesktopSize.ScreenSize)]
            RdpDesktopSize desktopSize,

            [Values(RdpAudioMode.DoNotPlay, RdpAudioMode.PlayLocally, RdpAudioMode.PlayOnServer)]
            RdpAudioMode audioMode,

            [Values(RdpRedirectClipboard.Disabled, RdpRedirectClipboard.Enabled)]
            RdpRedirectClipboard redirectClipboard,

            [WindowsInstance(MachineType = MachineTypeForRdp)] ResourceTask <InstanceLocator> testInstance,
            [Credential(Role = PredefinedRole.IapTunnelUser)] ResourceTask <ICredential> credential)
        {
            var locator = await testInstance;

            using (var tunnel = RdpTunnel.Create(
                       locator,
                       await credential))
                using (var gceAdapter = new ComputeEngineAdapter(this.serviceProvider.GetService <IAuthorizationAdapter>()))
                {
                    var credentials = await gceAdapter.ResetWindowsUserAsync(
                        locator,
                        CreateRandomUsername(),
                        TimeSpan.FromSeconds(60),
                        CancellationToken.None);

                    var settings = VmInstanceConnectionSettings.CreateNew(
                        locator.ProjectId,
                        locator.Name);
                    settings.Username.StringValue          = credentials.UserName;
                    settings.Password.Value                = credentials.SecurePassword;
                    settings.ConnectionBar.EnumValue       = connectionBarState;
                    settings.DesktopSize.EnumValue         = desktopSize;
                    settings.AudioMode.EnumValue           = audioMode;
                    settings.RedirectClipboard.EnumValue   = redirectClipboard;
                    settings.AuthenticationLevel.EnumValue = RdpAuthenticationLevel.NoServerAuthentication;
                    settings.BitmapPersistence.EnumValue   = RdpBitmapPersistence.Disabled;

                    var rdpService = new RemoteDesktopSessionBroker(this.serviceProvider);
                    var session    = rdpService.Connect(
                        locator,
                        "localhost",
                        (ushort)tunnel.LocalPort,
                        settings);

                    AwaitEvent <SessionStartedEvent>();
                    Assert.IsNull(this.ExceptionShown);


                    SessionEndedEvent expectedEvent = null;

                    this.serviceProvider.GetService <IEventService>()
                    .BindHandler <SessionEndedEvent>(e =>
                    {
                        expectedEvent = e;
                    });
                    session.Close();

                    Assert.IsNotNull(expectedEvent);
                }
        }