public void TestThatGetAllUsersDispatches() { var postRequest1 = Request.From(ConsumerByteBuffer(PostJohnDoeUserMessage)); var postCompletes1 = new MockCompletesEventuallyResponse(); var postCompletes1WithCalls = postCompletes1.ExpectWithTimes(1); Dispatcher.DispatchFor(new Context(postRequest1, postCompletes1)); postCompletes1WithCalls.ReadFrom <int>("completed"); Assert.NotNull(postCompletes1.Response); var postRequest2 = Request.From(ConsumerByteBuffer(PostJaneDoeUserMessage)); var postCompletes2 = new MockCompletesEventuallyResponse(); var postCompletes2WithCalls = postCompletes2.ExpectWithTimes(1); Dispatcher.DispatchFor(new Context(postRequest2, postCompletes2)); postCompletes2WithCalls.ReadFrom <int>("completed"); Assert.NotNull(postCompletes2.Response); var getUserMessage = "GET /users HTTP/1.1\nHost: vlingo.io\n\n"; var getRequest = Request.From(ConsumerByteBuffer(getUserMessage)); var getCompletes = new MockCompletesEventuallyResponse(); var getCompletesWithCalls = getCompletes.ExpectWithTimes(1); Dispatcher.DispatchFor(new Context(getRequest, getCompletes)); getCompletesWithCalls.ReadFrom <int>("completed"); Assert.NotNull(getCompletes.Response); Assert.Equal(ResponseStatus.Ok, getCompletes.Response.Get().Status); var getUserData = JsonSerialization.DeserializedList <UserData>(getCompletes.Response.Get().Entity.Content, _settings); Assert.NotNull(getUserData); var johnUserData = UserData.UserAt(postCompletes1.Response.Get().HeaderOf(ResponseHeader.Location).Value, getUserData); Assert.Equal(JohnDoeUserData.NameData.Given, johnUserData.NameData.Given); Assert.Equal(JohnDoeUserData.NameData.Family, johnUserData.NameData.Family); Assert.Equal(JohnDoeUserData.ContactData.EmailAddress, johnUserData.ContactData.EmailAddress); Assert.Equal(JohnDoeUserData.ContactData.TelephoneNumber, johnUserData.ContactData.TelephoneNumber); var janeUserData = UserData.UserAt(postCompletes2.Response.Get().HeaderOf(ResponseHeader.Location).Value, getUserData); Assert.Equal(JaneDoeUserData.NameData.Given, janeUserData.NameData.Given); Assert.Equal(JaneDoeUserData.NameData.Family, janeUserData.NameData.Family); Assert.Equal(JaneDoeUserData.ContactData.EmailAddress, janeUserData.ContactData.EmailAddress); Assert.Equal(JaneDoeUserData.ContactData.TelephoneNumber, janeUserData.ContactData.TelephoneNumber); }