Beispiel #1
0
        public static void ReadStopwatchAndRequestKey_Should_Not_Have_Effect_When_Context_Is_Null()
        {
            // arrange
            NancyContext context = null;

            // act
            PipelinesExtension.ReadStopwatchAndRequestKey(context);

            // assert
            Assert.Null(context);
        }
Beispiel #2
0
        public static void HandleExceptions_Log_Not_Have_Effect_And_Returns_Null_When_Context_Is_Null()
        {
            // arrange
            var          logger         = new CommunicationLoggerMock();
            var          jsonSerializer = JsonUtility.CamelCaseJsonSerializerSettings;
            var          exception      = new BadRequestException();
            NancyContext context        = null;

            // act
            var response = PipelinesExtension.HandleExceptions(context, exception, jsonSerializer, logger);

            // assert
            Assert.Null(response);
            Assert.Empty(logger.Logs);
        }
Beispiel #3
0
        public static void WriteStopwatchAndRequestKey_Should_Create_New_Request_Key()
        {
            // arrange
            NancyContext context = NancyContextMock.Create();

            // act
            PipelinesExtension.WriteStopwatchAndRequestKey(context);

            // assert
            Assert.NotNull(context);
            Assert.NotNull(context.Items);
            Assert.Equal(2, context.Items.Count);
            Assert.NotNull(context.Items["RequestKey"]);
            Assert.NotNull(context.Items["Stopwatch"]);
        }
Beispiel #4
0
        public static void ReadStopwatchAndRequestKey_Should_Not_Returns_Headers_When_Response_Is_Null()
        {
            // arrange
            NancyContext context = NancyContextMock.Create();

            context.Response = null;

            // act
            PipelinesExtension.ReadStopwatchAndRequestKey(context);

            // assert
            Assert.NotNull(context);
            Assert.NotNull(context.Response);
            Assert.False(context.Response.Headers.ContainsKey("RequestKey"));
            Assert.False(context.Response.Headers.ContainsKey("X-Internal-Time"));
        }
Beispiel #5
0
        public static void HandleExceptions_Log_Exception()
        {
            // arrange
            var logger         = new CommunicationLoggerMock();
            var jsonSerializer = JsonUtility.CamelCaseJsonSerializerSettings;
            var exception      = new Exception();
            var context        = NancyContextMock.Create();

            // act
            var response = PipelinesExtension.HandleExceptions(context, exception, jsonSerializer, logger);

            // assert
            Assert.Null(response);
            Assert.Single(logger.Logs);
            Assert.True(bool.Parse(logger.Logs.First().Items["WorksWithException"].ToString()));
        }
Beispiel #6
0
        public static void WriteStopwatchAndRequestKey_Should_Not_Returns_Headers_When_Items_Not_Exists()
        {
            // arrange
            NancyContext context = NancyContextMock.Create(
                responseContent: "some response",
                responseHeaders: new Dictionary <string, string>());

            // act
            PipelinesExtension.WriteStopwatchAndRequestKey(context);

            // assert
            Assert.NotNull(context);
            Assert.NotNull(context.Response);
            Assert.False(context.Response.Headers.ContainsKey("RequestKey"));
            Assert.False(context.Response.Headers.ContainsKey("X-Internal-Time"));
        }
Beispiel #7
0
        public static void HandleExceptions_Log_ApiException_When_Content_Is_Null()
        {
            // arrange
            var logger         = new CommunicationLoggerMock();
            var jsonSerializer = JsonUtility.CamelCaseJsonSerializerSettings;
            var exception      = new BadRequestException();
            var context        = NancyContextMock.Create();

            // act
            var response = PipelinesExtension.HandleExceptions(context, exception, jsonSerializer, logger);

            // assert
            Assert.NotNull(response);
            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Single(logger.Logs);
            Assert.True(bool.Parse(logger.Logs.First().Items["WorksWithoutException"].ToString()));
        }
Beispiel #8
0
        public static void WriteStopwatchAndRequestKey_Should_Use_Request_Key_From_Header()
        {
            // arrange
            NancyContext context = NancyContextMock.Create(
                requestHeaders: new Dictionary <string, IEnumerable <string> >
            {
                { "RequestKey", new string[] { "MyRequestKey" } }
            });

            // act
            PipelinesExtension.WriteStopwatchAndRequestKey(context);

            // assert
            Assert.NotNull(context);
            Assert.NotNull(context.Items);
            Assert.Equal(2, context.Items.Count);
            Assert.NotNull(context.Items["RequestKey"]);
            Assert.Equal("MyRequestKey", context.Items["RequestKey"]);
            Assert.NotNull(context.Items["Stopwatch"]);
        }
Beispiel #9
0
        public static void HandleExceptions_Log_ApiException_When_Content_Is_Not_Null_And_Context_Response_Is_Null()
        {
            // arrange
            var          logger         = new CommunicationLoggerMock();
            var          jsonSerializer = JsonUtility.CamelCaseJsonSerializerSettings;
            var          errors         = ErrorsResponse.WithSingleError("someerror", "someproperty");
            var          exception      = new BadRequestException(errors);
            NancyContext context        = NancyContextMock.Create();

            context.Response = null;

            // act
            var response = PipelinesExtension.HandleExceptions(context, exception, jsonSerializer, logger);

            // assert
            Assert.NotNull(response);
            Assert.Equal("application/json", response.ContentType);
            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.Single(logger.Logs);
            Assert.True(bool.Parse(logger.Logs.First().Items["WorksWithoutException"].ToString()));
        }
Beispiel #10
0
        public static void ReadStopwatchAndRequestKey_Should_Returns_Headers_When_Items_Exists()
        {
            // arrange
            NancyContext context = NancyContextMock.Create(
                responseContent: "some response",
                responseHeaders: new Dictionary <string, string>());

            context.Items.Add("Stopwatch", Stopwatch.StartNew());
            context.Items.Add("RequestKey", "1234567890");
            context.Items.Add("AccountId", "SomeId");

            // act
            PipelinesExtension.ReadStopwatchAndRequestKey(context);

            // assert
            Assert.NotNull(context);
            Assert.NotNull(context.Response);
            Assert.True(context.Response.Headers.ContainsKey("RequestKey"));
            Assert.True(context.Response.Headers.ContainsKey("AccountId"));
            Assert.True(context.Response.Headers.ContainsKey("X-Internal-Time"));
            Assert.True(int.Parse(context.Response.Headers["X-Internal-Time"]) >= 0);
            Assert.Equal("1234567890", context.Response.Headers["RequestKey"]);
            Assert.Equal("SomeId", context.Response.Headers["AccountId"]);
        }