public void Should_send_entire_body() { var data1 = Encoding.ASCII.GetBytes("Some content"); var data2 = Encoding.ASCII.GetBytes("Some more content"); var fakeResponse = new Response() { StatusCode = HttpStatusCode.OK, Contents = s => { s.Write(data1, 0, data1.Length); s.Write(data2, 0, data2.Length); } }; var fakeContext = new NancyContext() { Response = fakeResponse }; this.SetupFakeNancyCompleteCallback(fakeContext); var fakeConsumer = new FakeConsumer(false); ResponseCallBack callback = (r, h, b) => fakeConsumer.InvokeBodyDelegate(b); this.host.ProcessRequest(environment, callback, fakeErrorCallback); fakeConsumer.ConsumedData.SequenceEqual(data1.Concat(data2)).ShouldBeTrue(); }
public void InitializationOfAmqpStuff() { const String queueName = "queue_name"; const String exchangeName = "exchange_name"; const String routingKey = "routing_key"; var configuration = new EnvironmentConfiguration(); configuration.Endpoint(new Uri("amqp://localhost:5672")); configuration.GeneratesMessageIdBy(new Mock<INewId>().Object); configuration.ResolveMessageTypeBy(new Mock<IMessageTypeResolver>().Object); var model = new Mock<IModel>(); var connectionBuilder = StubConnectionBuilder(model); var broker = new BrokerWrapper(connectionBuilder.Object, model.Object, configuration); var consumer = new FakeConsumer(_ => Task.Factory.StartNew(() => { })); var queue = broker.DeclareQueue(queueName); var exchange = broker.DeclareDirectExchange(exchangeName); broker.DeclareExchangeBinding(exchange, queue, routingKey); broker.SubscribeByAtLeastOnce(queue, _ => { _.Consumes(consumer); }); broker.Connect(); model.Verify(_ => _.QueueDeclare(queueName, false, false, false, It.IsAny<IDictionary<String, Object>>())); model.Verify(_ => _.ExchangeDeclare(exchangeName, "direct", false, false, It.IsAny<IDictionary<String, Object>>())); model.Verify(_ => _.QueueBind(queueName, exchangeName, routingKey, It.IsAny<IDictionary<String, Object>>())); }
public void WhenSendingMessages() { var consumer = new FakeConsumer<TestMessages.ADerivedTestMessage> (msg => HandleReceived(msg)); _bus = new Bus.Bus (); _bus.Subscribe (consumer); RunAsync (); }
public void CanHandleContravariantMessages() { var handledMessages = new List<IMessage> (); IConsume<IMessage> consumer = new FakeConsumer<IMessage> (msg => handledMessages.Add (msg)); var wideningConsumer = new WideningConsumer<TestMessages.ADerivedTestMessage, IMessage>(consumer); var message = new TestMessages.ADerivedTestMessage (); wideningConsumer.Handle (message); Assert.AreEqual (1, handledMessages.Count); Assert.IsInstanceOf<TestMessages.ADerivedTestMessage>(handledMessages[0]); }
public async Task LogAsync() { var options = ErrorReportingOptions.Create( EventTarget.ForLogging("pid", loggingClient: new ThrowingLoggingClient())); var consumer = new FakeConsumer(); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( consumer, _service, _version, options, null); await logger.LogAsync(CreateException(), new FakeContextWrapper()); ValidateSingleEntry(consumer, _method, _uri, _userAgent, options); }
public async Task LogAsync() { var eventTarget = EventTarget.ForProject("pid"); var options = ErrorReportingOptions.CreateInstance(); var consumer = new FakeConsumer(); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( consumer, eventTarget, _serviceContext, options, null); await logger.LogAsync(CreateException(), new FakeContextWrapper()); ValidateSingleEntry(consumer, _method, _uri, _userAgent, options, eventTarget); }
public void NonWideningFails() { var handledMessages = new List<IMessage> (); FakeConsumer<TestMessages.ADerivedTestMessage> consumer = new FakeConsumer<TestMessages.ADerivedTestMessage> (msg => handledMessages.Add (msg)); IMessage message = new TestMessages.ADerivedTestMessage (); //comment this line back in to see that the code will not compile //consumer.Handle (message); Assert.AreEqual (1, handledMessages.Count); }
public async Task SerializerExtensionsSucceedWithMockedImplementations() { var jobs = new[] { new Job(1, Encoding.Unicode.GetBytes(@"{ 'Int': 1, 'String': 'hello' }")), new Job(2, Encoding.Unicode.GetBytes(@"{ 'Int': 2, 'String': 'world' }")), }; var fake = new FakeConsumer(jobs); var job = await fake.ReserveAsync <Jobject>(); Assert.Equal(1, job.Id); }
public void Log_Compat() { var eventTarget = EventTarget.ForLogging("pid", loggingClient: new ThrowingLoggingClient()); var options = ErrorReportingOptions.Create(eventTarget); var consumer = new FakeConsumer(); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( consumer, eventTarget, _serviceContext, options, null); logger.Log(CreateException(), new FakeContextWrapper()); ValidateSingleEntry(consumer, _method, _uri, _userAgent, options, eventTarget); }
public void Log_Simple() { var eventTarget = EventTarget.ForProject("pid"); var options = ErrorReportingOptions.CreateInstance(); var consumer = new FakeConsumer(); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( consumer, eventTarget, _serviceContext, options, null); logger.Log(CreateException(), new EmptyContextWrapper()); ValidateSingleEntry(consumer, "", "", "", options, eventTarget); }
public void WhenSendingMessages() { var c1 = new FakeConsumer<TestMessages.ADerivedTestMessage> (msg => Consumer1(msg)); var c2 = new FakeConsumer<TestMessages.TestMessage> (msg => Consumer2(msg)); var c3 = new FakeConsumer<IMessage> (msg => Consumer3(msg)); _bus = new Bus (); _bus.Subscribe (c1); _bus.Subscribe (c2); _bus.Subscribe (c3); RunAsync (); }
public void Log_Simple() { var options = ErrorReportingOptions.Create( EventTarget.ForLogging("pid", loggingClient: new ThrowingLoggingClient())); var consumer = new FakeConsumer(); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( consumer, _service, _version, options, null); logger.Log(CreateException(), new EmptyContextWrapper()); ValidateSingleEntry(consumer, "", "", "", options); }
public void WhenSendingMessages() { var c1 = new FakeConsumer<TestMessages.ADerivedTestMessage> (msg => Consumer1(msg)); var c2 = new FakeConsumer<TestMessages.TestMessage> (msg => Consumer2(msg)); var c3 = new FakeConsumer<IMessage> (msg => Consumer3(msg)); _bus = new Bus.Bus (); _bus.Subscribe (c1); _bus.Subscribe (c2); _bus.Subscribe (c3); for (int i = 0; i < _numberOfMessagesToSend; i++) { _bus.Send (new TestMessages.ADerivedTestMessage{ Id = "P1-" + i }); } }
private void ValidateSingleEntry(FakeConsumer consumer, string method, string uri, string userAgent, ErrorReportingOptions options) { var entries = consumer.Entries.ToList(); if (entries.Count != 1) { Assert.True(false, $"Expected single matching entry. Received:\n{string.Join("\n", entries)}"); } var entry = entries[0]; var json = entry.JsonPayload?.Fields; var eventTarget = options.EventTarget; Assert.Equal(eventTarget.LogTarget.GetFullLogName(eventTarget.LogName), entry.LogName); var currentSeconds = Timestamp.FromDateTime(DateTime.UtcNow).Seconds; Assert.InRange(entry.Timestamp.Seconds, currentSeconds - 10, currentSeconds); Assert.Equal(eventTarget.MonitoredResource, entry.Resource); Assert.Equal(LogSeverity.Error, entry.Severity); Assert.Contains(_exceptionMessage, json["message"].StringValue); var context = json["context"]?.StructValue?.Fields; var httpRequest = context["httpRequest"]?.StructValue?.Fields; Assert.Equal(method, httpRequest["method"].StringValue); Assert.Equal(uri, httpRequest["url"].StringValue); Assert.Equal(userAgent, httpRequest["userAgent"].StringValue); var reportLocation = context["reportLocation"]?.StructValue?.Fields; if (_isWindows) { Assert.InRange(reportLocation["lineNumber"].NumberValue, 1, 5000); // Longer than this file should ever be... Assert.NotEqual("", reportLocation["filePath"].StringValue); } Assert.Equal(nameof(CreateException), reportLocation["functionName"].StringValue); var serviceContext = json["serviceContext"]?.StructValue?.Fields; Assert.Equal(_service, serviceContext["service"].StringValue); Assert.Equal(_version, serviceContext["version"].StringValue); Assert.Contains(_traceId, entry.Trace); Assert.Equal($"{_spanId:x16}", entry.SpanId); Assert.True(entry.TraceSampled); }
public void Should_dispose_context_if_body_delegate_throws() { var fakeResponse = new Response() { StatusCode = HttpStatusCode.OK, Contents = s => { throw new InvalidOperationException(); } }; var fakeContext = new NancyContext() { Response = fakeResponse }; var mockDisposable = A.Fake<IDisposable>(); fakeContext.Items.Add("Test", mockDisposable); this.SetupFakeNancyCompleteCallback(fakeContext); var fakeConsumer = new FakeConsumer(false); ResponseCallBack callback = (r, h, b) => fakeConsumer.InvokeBodyDelegate(b); this.host.ProcessRequest(environment, callback, fakeErrorCallback); A.CallTo(() => mockDisposable.Dispose()).MustHaveHappened(Repeated.Exactly.Once); }
public void Should_send_null_continuation() { var fakeResponse = new Response() { StatusCode = HttpStatusCode.OK, Contents = s => s.WriteByte(12) }; var fakeContext = new NancyContext() { Response = fakeResponse }; this.SetupFakeNancyCompleteCallback(fakeContext); var fakeConsumer = new FakeConsumer(false); ResponseCallBack callback = (r, h, b) => fakeConsumer.InvokeBodyDelegate(b); this.host.ProcessRequest(environment, callback, fakeErrorCallback); fakeConsumer.ContinuationSent.ShouldBeFalse(); }
public void Should_invoke_view_delegate_to_get_response() { var called = false; var fakeResponse = new Response() { StatusCode = HttpStatusCode.OK, Contents = s => called = true }; var fakeContext = new NancyContext() { Response = fakeResponse }; this.SetupFakeNancyCompleteCallback(fakeContext); var fakeConsumer = new FakeConsumer(false); ResponseCallBack callback = (r, h, b) => fakeConsumer.InvokeBodyDelegate(b); this.host.ProcessRequest(environment, callback, fakeErrorCallback); called.ShouldBeTrue(); }
public void Should_dispose_context_if_body_delegate_throws() { var fakeResponse = new Response() { StatusCode = HttpStatusCode.OK, Contents = s => { throw new InvalidOperationException(); } }; var fakeContext = new NancyContext() { Response = fakeResponse }; var mockDisposable = A.Fake <IDisposable>(); fakeContext.Items.Add("Test", mockDisposable); this.SetupFakeNancyCompleteCallback(fakeContext); var fakeConsumer = new FakeConsumer(false); ResponseCallBack callback = (r, h, b) => fakeConsumer.InvokeBodyDelegate(b); this.host.ProcessRequest(environment, callback, fakeErrorCallback); A.CallTo(() => mockDisposable.Dispose()).MustHaveHappened(Repeated.Exactly.Once); }
public void Should_dispose_context_on_completion_of_body_delegate() { var data1 = Encoding.ASCII.GetBytes("Some content"); var fakeResponse = new Response() { StatusCode = HttpStatusCode.OK, Contents = s => s.Write(data1, 0, data1.Length) }; var fakeContext = new NancyContext() { Response = fakeResponse }; var mockDisposable = A.Fake <IDisposable>(); fakeContext.Items.Add("Test", mockDisposable); this.SetupFakeNancyCompleteCallback(fakeContext); var fakeConsumer = new FakeConsumer(false); ResponseCallBack callback = (r, h, b) => fakeConsumer.InvokeBodyDelegate(b); this.host.ProcessRequest(environment, callback, fakeErrorCallback); A.CallTo(() => mockDisposable.Dispose()).MustHaveHappened(Repeated.Exactly.Once); }
public void Should_invoke_view_delegate_to_get_response() { var called = false; var fakeResponse = new Response() { StatusCode = HttpStatusCode.OK, Contents = s => called = true }; var fakeContext = new NancyContext() { Response = fakeResponse }; this.SetupFakeNancyCompleteCallback(fakeContext); var fakeConsumer = new FakeConsumer(false); ResponseCallBack callback = (r, h, b) => fakeConsumer.InvokeBodyDelegate(b); this.host.ProcessRequest(environment, callback, fakeErrorCallback); called.ShouldBeTrue(); }
public ConsumerBuilder(string environment) { _consumer = new FakeConsumer(environment); }
public void Should_send_null_continuation() { var fakeResponse = new Response() { StatusCode = HttpStatusCode.OK, Contents = s => s.WriteByte(12) }; var fakeContext = new NancyContext() { Response = fakeResponse }; this.SetupFakeNancyCompleteCallback(fakeContext); var fakeConsumer = new FakeConsumer(false); ResponseCallBack callback = (r, h, b) => fakeConsumer.InvokeBodyDelegate(b); this.host.ProcessRequest(environment, callback, fakeErrorCallback); fakeConsumer.ContinuationSent.ShouldBeFalse(); }
public void Should_send_entire_body() { var data1 = Encoding.ASCII.GetBytes("Some content"); var data2 = Encoding.ASCII.GetBytes("Some more content"); var fakeResponse = new Response() { StatusCode = HttpStatusCode.OK, Contents = s => { s.Write(data1, 0, data1.Length); s.Write(data2, 0, data2.Length); } }; var fakeContext = new NancyContext() { Response = fakeResponse }; this.SetupFakeNancyCompleteCallback(fakeContext); var fakeConsumer = new FakeConsumer(false); ResponseCallBack callback = (r, h, b) => fakeConsumer.InvokeBodyDelegate(b); this.host.ProcessRequest(environment, callback, fakeErrorCallback); fakeConsumer.ConsumedData.SequenceEqual(data1.Concat(data2)).ShouldBeTrue(); }
public void Should_dispose_context_on_completion_of_body_delegate() { var data1 = Encoding.ASCII.GetBytes("Some content"); var fakeResponse = new Response() { StatusCode = HttpStatusCode.OK, Contents = s => s.Write(data1, 0, data1.Length) }; var fakeContext = new NancyContext() { Response = fakeResponse }; var mockDisposable = A.Fake<IDisposable>(); fakeContext.Items.Add("Test", mockDisposable); this.SetupFakeNancyCompleteCallback(fakeContext); var fakeConsumer = new FakeConsumer(false); ResponseCallBack callback = (r, h, b) => fakeConsumer.InvokeBodyDelegate(b); this.host.ProcessRequest(environment, callback, fakeErrorCallback); A.CallTo(() => mockDisposable.Dispose()).MustHaveHappened(Repeated.Exactly.Once); }