public void Send_MustHandleSessionStartRequest() { var args = default(SessionStartEventArgs); var sync = new AutoResetEvent(false); var configuration = new ServiceConfiguration { SessionId = Guid.NewGuid() }; var sessionStartRequested = false; sut.SessionStartRequested += (a) => { args = a; sessionStartRequested = true; sync.Set(); }; var token = sut.Connect().CommunicationToken.Value; var message = new SessionStartMessage(configuration) { CommunicationToken = token }; var response = sut.Send(message); sync.WaitOne(); Assert.IsTrue(sessionStartRequested); Assert.IsNotNull(args); Assert.IsNotNull(response); Assert.IsInstanceOfType(response, typeof(SimpleResponse)); Assert.AreEqual(configuration.SessionId, args.Configuration.SessionId); Assert.AreEqual(SimpleResponsePurport.Acknowledged, (response as SimpleResponse)?.Purport); }
public string StartSession(string sessionKey) { SessionStartMessage ssm = null; lock (lockObject) { var sess = sessions.Find(x => x.SessionKey == sessionKey); if (sess == null || sess.RequestedUtc == DateTime.MinValue) { return(null); } ensureDocLoaded(sess.DocId); var doc = docs.Find(x => x.DocId == sess.DocId); if (doc == null) { return(null); } ssm = new SessionStartMessage { Name = doc.Name, RevisionId = doc.Revisions.Count - 1, Text = doc.HeadText, PeerSelections = getDocSels(doc.DocId), }; sess.RequestedUtc = DateTime.MinValue; sess.Selection = new Selection { Start = 0, End = 0 }; } return(JsonConvert.SerializeObject(ssm)); }