Exemplo n.º 1
0
        public async Task Run()
        {
            var fakeHandler = new FakeHttpMessageHandler();
            var stream      = $"event: open\ndata: hello\n\nid: {_eventId}\ndata: {_json}\n\n";

            fakeHandler.QueueResponse(FakeResponse.StartsStream(StreamAction.Write(stream)));

            _eventSource = new SSEEventSource(new Uri("http://test.com"),
                                              builder => builder.MessageHandler(fakeHandler));

            _requestBuilder = new FakeStreamableRequestBuilder(new Uri("https://horizon-testnet.stellar.org"), "test",
                                                               null, _eventSource);
            var handler = new EventHandler <T>((sender, e) =>
            {
                _eventSource.Shutdown();
                _testAction(e);
            });
            var task          = _requestBuilder.Stream(handler).Connect();
            var timeoutTask   = Task.Delay(TimeSpan.FromSeconds(5.0));
            var completedTask = await Task.WhenAny(task, timeoutTask).ConfigureAwait(false);

            if (completedTask != task)
            {
                throw new Exception("Task did not complete.");
            }
        }
        public async Task TestHelloStream()
        {
            // Check we skip the first message with "hello" data
            var fakeHandler = new FakeHttpMessageHandler();
            var stream      = "event: open\ndata: hello\n\ndata: foobar\n\n";

            fakeHandler.QueueResponse(FakeResponse.StartsStream(StreamAction.Write(stream)));

            using (var eventSource = new SSEEventSource(_uri, builder => builder.MessageHandler(fakeHandler)))
            {
                string dataReceived = null;
                eventSource.Message += (sender, args) =>
                {
                    dataReceived = args.Data;
                    eventSource.Shutdown();
                };

                await eventSource.Connect();

                Assert.AreEqual("foobar", dataReceived);
            }
        }
        public async Task TestStream()
        {
            var json = File.ReadAllText(Path.Combine("testdata", "ledger.json"))
                       .Replace(Environment.NewLine, "");
            var fakeHandler = new FakeHttpMessageHandler();
            var stream      = $"event: open\ndata: hello\n\nid: 1234\ndata: {json}\n\n";

            fakeHandler.QueueResponse(FakeResponse.StartsStream(StreamAction.Write(stream)));

            var eventSource = new SSEEventSource(new Uri("http://test.com"),
                                                 builder => builder.MessageHandler(fakeHandler));

            LedgerResponse dataReceived = null;

            eventSource.Message += (sender, args) =>
            {
                dataReceived = JsonSingleton.GetInstance <LedgerResponse>(args.Data);
                eventSource.Shutdown();
            };

            await eventSource.Connect();

            LedgerDeserializeTest.AssertTestData(dataReceived);
        }