Skip to content

Commit f214409

Browse files
committed
Adding a couple more logging tests
1 parent f64289d commit f214409

File tree

4 files changed

+128
-26
lines changed

4 files changed

+128
-26
lines changed

PactNet.Tests/Mocks/MockHttpService/Nancy/MockProviderAdminRequestHandlerTests.cs

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,24 @@ public void Handle_WithAGetRequestToInteractionsVerificationAndRegisteredInterac
351351
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
352352
}
353353

354+
[Fact]
355+
public void Handle_WithAGetRequestToInteractionsVerificationAndRegisteredInteractionWasNotCalled_LogsTheMissingRequest()
356+
{
357+
var context = new NancyContext
358+
{
359+
Request = new Request("GET", "/interactions/verification", "http")
360+
};
361+
362+
var handler = GetSubject();
363+
364+
365+
_mockProviderRepository.TestScopedInteractions.Returns(new List<ProviderServiceInteraction> { new ProviderServiceInteraction() });
366+
367+
var response = handler.Handle(context);
368+
369+
_mockLog.Received().Log(LogLevel.Error, Arg.Any<Func<string>>(), null, Arg.Any<object[]>());
370+
}
371+
354372
[Fact]
355373
public void Handle_WithAGetRequestToInteractionsVerificationAndRegisteredInteractionWasCalledMultipleTimes_ReturnsInternalServerErrorResponse()
356374
{
@@ -379,6 +397,34 @@ public void Handle_WithAGetRequestToInteractionsVerificationAndRegisteredInterac
379397
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
380398
}
381399

400+
[Fact]
401+
public void Handle_WithAGetRequestToInteractionsVerificationAndRegisteredInteractionWasCalledMultipleTimes_LogsTheError()
402+
{
403+
var context = new NancyContext
404+
{
405+
Request = new Request("GET", "/interactions/verification", "http")
406+
};
407+
408+
var interactions = new List<ProviderServiceInteraction>
409+
{
410+
new ProviderServiceInteraction()
411+
};
412+
413+
var handler = GetSubject();
414+
415+
_mockProviderRepository.TestScopedInteractions.Returns(interactions);
416+
417+
_mockProviderRepository.HandledRequests.Returns(new List<HandledRequest>
418+
{
419+
new HandledRequest(new ProviderServiceRequest(), interactions.First()),
420+
new HandledRequest(new ProviderServiceRequest(), interactions.First())
421+
});
422+
423+
var response = handler.Handle(context);
424+
425+
_mockLog.Received().Log(LogLevel.Error, Arg.Any<Func<string>>(), null, Arg.Any<object[]>());
426+
}
427+
382428
[Fact]
383429
public void Handle_WithAGetRequestToInteractionsVerificationAndNoInteractionsRegisteredHoweverMockProviderRecievedInteractions_ReturnsInternalServerErrorResponse()
384430
{
@@ -482,6 +528,42 @@ public void Handle_WithAGetRequestToInteractionsVerificationAndAnInteractionWasS
482528
Assert.Equal(failure, content);
483529
}
484530

531+
[Fact]
532+
public void Handle_WithAGetRequestToInteractionsVerificationAndAnInteractionWasSentButNotRegisteredByTheTest_LogsTheUnexpectedRequest()
533+
{
534+
const string failure = "An unexpected request POST /tester was seen by the mock provider service.";
535+
var context = new NancyContext
536+
{
537+
Request = new Request("GET", "/interactions/verification", "http")
538+
};
539+
540+
var handler = GetSubject();
541+
542+
var handledRequest = new ProviderServiceRequest();
543+
var handledInteraction = new ProviderServiceInteraction { Request = handledRequest };
544+
545+
var unExpectedRequest = new ProviderServiceRequest { Method = HttpVerb.Post, Path = "/tester" };
546+
547+
_mockProviderRepository.TestScopedInteractions
548+
.Returns(new List<ProviderServiceInteraction>
549+
{
550+
handledInteraction
551+
});
552+
553+
_mockProviderRepository.HandledRequests
554+
.Returns(new List<HandledRequest>
555+
{
556+
new HandledRequest(handledRequest, handledInteraction),
557+
new HandledRequest(unExpectedRequest, null)
558+
});
559+
560+
var response = handler.Handle(context);
561+
562+
var content = ReadResponseContent(response);
563+
564+
_mockLog.Received().Log(LogLevel.Error, Arg.Any<Func<string>>(), null, Arg.Any<object[]>());
565+
}
566+
485567
[Fact]
486568
public void Handle_WithAGetRequestToInteractionsVerificationAndAFailureOcurrs_ReturnsFailureResponseContent()
487569
{

PactNet.Tests/Mocks/MockHttpService/Nancy/MockProviderRequestHandlerTests.cs

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ private IMockProviderRequestHandler GetSubject()
2424
_mockProviderRepository = Substitute.For<IMockProviderRepository>();
2525
_mockLog = Substitute.For<ILog>();
2626

27+
_mockLog.Log(Arg.Any<LogLevel>(), Arg.Any<Func<string>>(), Arg.Any<Exception>(), Arg.Any<object[]>())
28+
.Returns(true);
29+
2730
return new MockProviderRequestHandler(_mockRequestMapper, _mockResponseMapper, _mockProviderRepository, _mockLog);
2831
}
2932

@@ -180,7 +183,7 @@ public void Handle_WhenExceptionIsThrownHandlingRequest_PactFailureExceptionIsTh
180183
}
181184

182185
[Fact]
183-
public void Handle_WhenGetMatchingMockInteractionThrows_RequestIsMarkedAsHandled()
186+
public void Handle_WhenNoMatchingInteractionsAreFound_RequestIsMarkedAsHandled()
184187
{
185188
const string exceptionMessage = "No matching mock interaction has been registered for the current request";
186189
var expectedRequest = new ProviderServiceRequest
@@ -221,7 +224,48 @@ public void Handle_WhenGetMatchingMockInteractionThrows_RequestIsMarkedAsHandled
221224
}
222225

223226
[Fact]
224-
public void Handle_WhenGetMatchingMockInteractionThrows_PactFailureExceptionIsThrown()
227+
public void Handle_WhenNoMatchingInteractionsAreFound_ErrorIsLogged()
228+
{
229+
const string exceptionMessage = "No matching mock interaction has been registered for the current request";
230+
var expectedRequest = new ProviderServiceRequest
231+
{
232+
Method = HttpVerb.Get,
233+
Path = "/Test"
234+
};
235+
var nancyContext = new NancyContext
236+
{
237+
Request = new Request("GET", "/Test", "HTTP")
238+
};
239+
240+
var handler = GetSubject();
241+
242+
_mockRequestMapper
243+
.Convert(nancyContext.Request)
244+
.Returns(expectedRequest);
245+
246+
_mockResponseMapper.Convert(Arg.Any<ProviderServiceResponse>())
247+
.Returns(new Response
248+
{
249+
StatusCode = HttpStatusCode.InternalServerError
250+
});
251+
252+
_mockProviderRepository
253+
.When(x => x.GetMatchingTestScopedInteraction(expectedRequest))
254+
.Do(x => { throw new PactFailureException(exceptionMessage); });
255+
256+
try
257+
{
258+
handler.Handle(nancyContext);
259+
}
260+
catch (Exception)
261+
{
262+
}
263+
264+
_mockLog.Received().Log(LogLevel.Error, Arg.Any<Func<string>>(), null, Arg.Any<object[]>());
265+
}
266+
267+
[Fact]
268+
public void Handle_WhenNoMatchingInteractionsAreFound_PactFailureExceptionIsThrown()
225269
{
226270
const string exceptionMessage = "No matching mock interaction has been registered for the current request";
227271
var expectedRequest = new ProviderServiceRequest

PactNet/Mocks/MockHttpService/Nancy/MockProviderAdminRequestHandler.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,6 @@ private Response HandlePostInteractionsRequest(NancyContext context)
9595

9696
private Response HandleGetInteractionsVerificationRequest()
9797
{
98-
//TODO: add logs for this! Trello has the example
99-
//TODO: add the test name, so that we know what test
100-
10198
var registeredInteractions = _mockProviderRepository.TestScopedInteractions;
10299

103100
var comparisonResult = new ComparisonResult();

Samples/EventApi/Consumer.Tests/EventsApiConsumerTests.cs

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -106,27 +106,6 @@ public void CreateEvent_WhenCalledWithEvent_Succeeds()
106106
Status = 201
107107
});
108108

109-
_mockProviderService.UponReceiving("a request to create a new event 2")
110-
.With(new ProviderServiceRequest
111-
{
112-
Method = HttpVerb.Post,
113-
Path = "/events2",
114-
Headers = new Dictionary<string, string>
115-
{
116-
{ "Content-Type", "application/json; charset=utf-8" }
117-
},
118-
Body = new
119-
{
120-
eventId,
121-
timestamp = dateTime.ToString("O"),
122-
eventType = "DetailsView"
123-
}
124-
})
125-
.WillRespondWith(new ProviderServiceResponse
126-
{
127-
Status = 201
128-
});
129-
130109
var consumer = new EventsApiClient(_mockProviderServiceBaseUri);
131110

132111
//Act / Assert

0 commit comments

Comments
 (0)