Example #1
0
 public void Constructor_InitializesRequestIdProperty()
 {
     using (var test = new InboundRequestContextTest())
     {
         Assert.Equal(test.RequestId, test.Context.RequestId);
     }
 }
Example #2
0
 public void Dispose_DoesNotDisposeLogger()
 {
     using (var test = new InboundRequestContextTest())
     {
         test.Context.Dispose();
         test.Logger.Verify();
     }
 }
Example #3
0
 public void Dispose_DoesNotDisposeOfInboundRequestProcessingHandler()
 {
     using (var test = new InboundRequestContextTest())
     {
         test.Context.Dispose();
         test.Handler.Verify();
     }
 }
Example #4
0
 public void Dispose_DoesNotDisposeConnection()
 {
     using (var test = new InboundRequestContextTest())
     {
         test.Context.Dispose();
         test.Connection.Verify();
     }
 }
Example #5
0
 public void Cancel_IsIdempotent()
 {
     using (var test = new InboundRequestContextTest())
     {
         test.Context.Cancel();
         test.Context.Cancel();
     }
 }
Example #6
0
 public void Dispose_IsIdempotent()
 {
     using (var test = new InboundRequestContextTest())
     {
         test.Context.Dispose();
         test.Context.Dispose();
     }
 }
Example #7
0
        public void BeginResponseAsync_TranslatesRequestHandlerExceptionIntoFaultResponse()
        {
            using (var test = new InboundRequestContextTest())
                using (var sentEvent = new ManualResetEventSlim(initialState: false))
                {
                    var requestHandler = new Mock <IRequestHandler>(MockBehavior.Strict);

                    requestHandler.Setup(x => x.HandleResponseAsync(
                                             It.IsNotNull <IConnection>(),
                                             It.IsNotNull <Message>(),
                                             It.IsNotNull <IResponseHandler>(),
                                             It.IsAny <CancellationToken>()))
                    .Throws(new Exception("test"));

                    Message response = null;

                    test.Connection.Setup(x => x.SendAsync(It.IsNotNull <Message>(), It.IsAny <CancellationToken>()))
                    .Callback <Message, CancellationToken>(
                        (message, cancellationToken) =>
                    {
                        response = message;

                        sentEvent.Set();
                    })
                    .Returns(Task.FromResult(0));

                    test.Context.BeginResponseAsync(
                        new Message(
                            test.RequestId,
                            MessageType.Request,
                            MessageMethod.GetOperationClaims,
                            payload: null),
                        requestHandler.Object,
                        Mock.Of <IResponseHandler>());

                    sentEvent.Wait();

                    requestHandler.Verify(x => x.HandleResponseAsync(
                                              It.IsNotNull <IConnection>(),
                                              It.IsNotNull <Message>(),
                                              It.IsNotNull <IResponseHandler>(),
                                              It.IsAny <CancellationToken>()), Times.Once);

                    test.Connection.Verify(
                        x => x.SendAsync(It.IsNotNull <Message>(), It.IsAny <CancellationToken>()),
                        Times.Once);

                    Assert.NotNull(response);
                    Assert.Equal(test.RequestId, response.RequestId);
                    Assert.Equal(MessageType.Fault, response.Type);
                    Assert.Equal(MessageMethod.GetOperationClaims, response.Method);

                    var responsePayload = MessageUtilities.DeserializePayload <Fault>(response);

                    Assert.Equal("test", responsePayload.Message);
                }
        }
Example #8
0
        public void BeginFaultAsync_ThrowsForNullRequest()
        {
            using (var test = new InboundRequestContextTest())
            {
                var exception = Assert.Throws <ArgumentNullException>(
                    () => test.Context.BeginFaultAsync(request: null, exception: new Exception()));

                Assert.Equal("request", exception.ParamName);
            }
        }
Example #9
0
        public void BeginResponseAsync_ThrowsForNullRequest()
        {
            using (var test = new InboundRequestContextTest())
            {
                var exception = Assert.Throws <ArgumentNullException>(
                    () => test.Context.BeginResponseAsync(
                        request: null,
                        requestHandler: Mock.Of <IRequestHandler>(),
                        responseHandler: Mock.Of <IResponseHandler>()));

                Assert.Equal("request", exception.ParamName);
            }
        }
Example #10
0
        public void BeginFaultAsync_ThrowsForNullException()
        {
            using (var test = new InboundRequestContextTest())
            {
                var exception = Assert.Throws <ArgumentNullException>(
                    () => test.Context.BeginFaultAsync(
                        new Message(
                            test.RequestId,
                            MessageType.Request,
                            MessageMethod.GetOperationClaims,
                            payload: null),
                        exception: null));

                Assert.Equal("exception", exception.ParamName);
            }
        }
Example #11
0
        public void Cancel_SendsCancelResponse()
        {
            using (var test = new InboundRequestContextTest())
                using (var handledEvent = new ManualResetEventSlim(initialState: false))
                {
                    test.Connection.Setup(
                        x => x.SendAsync(
                            It.Is <Message>(m => m.Type == MessageType.Cancel),
                            It.IsAny <CancellationToken>()))
                    .Returns(Task.FromResult(0));

                    var requestHandler = new Mock <IRequestHandler>(MockBehavior.Strict);

                    requestHandler.Setup(x => x.HandleResponseAsync(
                                             It.IsNotNull <IConnection>(),
                                             It.IsNotNull <Message>(),
                                             It.IsNotNull <IResponseHandler>(),
                                             It.IsAny <CancellationToken>()))
                    .Callback <IConnection, Message, IResponseHandler, CancellationToken>(
                        (connection, requestMessage, responseHandler, cancellationToken) =>
                    {
                        handledEvent.Set();
                    })
                    .Returns(Task.FromResult(0));

                    var request = MessageUtilities.Create(
                        test.RequestId,
                        MessageType.Cancel,
                        MessageMethod.PrefetchPackage,
                        new PrefetchPackageRequest(
                            packageSourceRepository: "a",
                            packageId: "b",
                            packageVersion: "c"));

                    test.Context.BeginResponseAsync(request, requestHandler.Object, Mock.Of <IResponseHandler>());

                    handledEvent.Wait();

                    test.Context.Cancel();

                    requestHandler.Verify(x => x.HandleResponseAsync(
                                              It.IsNotNull <IConnection>(),
                                              It.IsNotNull <Message>(),
                                              It.IsNotNull <IResponseHandler>(),
                                              It.IsAny <CancellationToken>()), Times.Once);
                }
        }
Example #12
0
        public void BeginResponseAsync_ThrowsForNullResponseHandler()
        {
            using (var test = new InboundRequestContextTest())
            {
                var exception = Assert.Throws <ArgumentNullException>(
                    () => test.Context.BeginResponseAsync(
                        new Message(
                            test.RequestId,
                            type: MessageType.Progress,
                            method: MessageMethod.GetOperationClaims,
                            payload: null),
                        requestHandler: Mock.Of <IRequestHandler>(),
                        responseHandler: null));

                Assert.Equal("responseHandler", exception.ParamName);
            }
        }
Example #13
0
        public void BeginFaultAsync_SendsReponse()
        {
            using (var test = new InboundRequestContextTest())
                using (var sentEvent = new ManualResetEventSlim(initialState: false))
                {
                    Message response = null;

                    test.Connection.Setup(x => x.SendAsync(It.IsNotNull <Message>(), It.IsAny <CancellationToken>()))
                    .Callback <Message, CancellationToken>(
                        (message, cancellationToken) =>
                    {
                        response = message;

                        sentEvent.Set();
                    })
                    .Returns(Task.FromResult(0));

                    test.Context.BeginFaultAsync(
                        new Message(
                            test.RequestId,
                            MessageType.Request,
                            MessageMethod.GetOperationClaims,
                            payload: null),
                        new Exception("test"));

                    sentEvent.Wait();

                    test.Connection.Verify(
                        x => x.SendAsync(It.IsNotNull <Message>(), It.IsAny <CancellationToken>()),
                        Times.Once);

                    Assert.NotNull(response);
                    Assert.Equal(test.RequestId, response.RequestId);
                    Assert.Equal(MessageType.Fault, response.Type);
                    Assert.Equal(MessageMethod.GetOperationClaims, response.Method);

                    var responsePayload = MessageUtilities.DeserializePayload <Fault>(response);

                    Assert.Equal("test", responsePayload.Message);
                }
        }
Example #14
0
        public void BeginResponseAsync_CallsRequestHandler()
        {
            using (var test = new InboundRequestContextTest())
                using (var handledEvent = new ManualResetEventSlim(initialState: false))
                {
                    var requestHandler = new Mock <IRequestHandler>(MockBehavior.Strict);

                    requestHandler.Setup(x => x.HandleResponseAsync(
                                             It.IsNotNull <IConnection>(),
                                             It.IsNotNull <Message>(),
                                             It.IsNotNull <IResponseHandler>(),
                                             It.IsAny <CancellationToken>()))
                    .Callback <IConnection, Message, IResponseHandler, CancellationToken>(
                        (connection, message, responseHandler, cancellationToken) =>
                    {
                        handledEvent.Set();
                    })
                    .Returns(Task.FromResult(0));

                    test.Context.BeginResponseAsync(
                        new Message(
                            test.RequestId,
                            MessageType.Request,
                            MessageMethod.GetOperationClaims,
                            payload: null),
                        requestHandler.Object,
                        Mock.Of <IResponseHandler>());

                    handledEvent.Wait();

                    requestHandler.Verify(x => x.HandleResponseAsync(
                                              It.IsNotNull <IConnection>(),
                                              It.IsNotNull <Message>(),
                                              It.IsNotNull <IResponseHandler>(),
                                              It.IsAny <CancellationToken>()), Times.Once);
                }
        }