private void RuntimeHost_ClientConfigurationNeeded(ClientConfigurationEventArgs args)
 {
     args.ClientConfiguration = new ClientConfiguration
     {
         AppConfig = sessionContext.Next.AppConfig,
         SessionId = sessionContext.Next.SessionId,
         Settings  = sessionContext.Next.Settings
     };
 }
        private Response HandleConfigurationRequest()
        {
            var args = new ClientConfigurationEventArgs();

            ClientConfigurationNeeded?.Invoke(args);

            return(new ConfigurationResponse {
                Configuration = args.ClientConfiguration
            });
        }
        public void Communication_MustProvideClientConfigurationUponRequest()
        {
            var args          = new ClientConfigurationEventArgs();
            var nextAppConfig = new AppConfig();
            var nextSessionId = Guid.NewGuid();
            var nextSettings  = new Settings();

            nextSession.SetupGet(s => s.AppConfig).Returns(nextAppConfig);
            nextSession.SetupGet(s => s.Id).Returns(nextSessionId);
            nextSession.SetupGet(s => s.Settings).Returns(nextSettings);
            StartSession();

            runtimeHost.Raise(r => r.ClientConfigurationNeeded += null, args);

            Assert.AreSame(nextAppConfig, args.ClientConfiguration.AppConfig);
            Assert.AreEqual(nextSessionId, args.ClientConfiguration.SessionId);
            Assert.AreSame(nextSettings, args.ClientConfiguration.Settings);
        }