public static void ReadStopwatchAndRequestKey_Should_Not_Have_Effect_When_Context_Is_Null() { // arrange NancyContext context = null; // act PipelinesExtension.ReadStopwatchAndRequestKey(context); // assert Assert.Null(context); }
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); }
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"]); }
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")); }
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())); }
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")); }
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())); }
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"]); }
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())); }
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"]); }