public void CreateMethod() { // preparation var eventLogRepository = new Mock <IEventLogRepository>(); var validationServer = new Mock <IValidationServerService>(); var deviceValidationService = new Mock <IDeviceValidationService>(); var logger = new Mock.LoggerMock <V1EventLog>(); var eventLogApi = new V1EventLog( eventLogRepository.Object, validationServer.Object, deviceValidationService.Object, logger ); }
public async Task RunAsyncMethod( bool isValidRoute, bool isValidDevice, string contentLength, string jsonFileName, int expectedStatusCode, int expectedSavedItemCount ) { // preparation var eventLogRepository = new Mock <IEventLogRepository>(); var validationServer = new Mock <IValidationServerService>(); var deviceValidationService = new Mock <IDeviceValidationService>(); var logger = new Mock.LoggerMock <V1EventLog>(); var eventLogApi = new V1EventLog( eventLogRepository.Object, validationServer.Object, deviceValidationService.Object, logger ); if (isValidRoute) { validationServer .Setup(x => x.Validate(It.IsAny <HttpRequest>())) .Returns(IValidationServerService.ValidateResult.Success); } else { validationServer .Setup(x => x.Validate(It.IsAny <HttpRequest>())) .Returns(IValidationServerService.ValidateResult.InvalidAzureFrontDoorId); } deviceValidationService .Setup(x => x.Validation(It.IsAny <string>(), It.IsAny <IDeviceVerification>(), It.IsAny <DateTimeOffset>())) .ReturnsAsync(isValidDevice); var context = new Mock <HttpContext>(); // Conetnt-Length header context.Setup(_ => _.Request.Headers).Returns(new HeaderDictionary()); if (contentLength != null) { IHeaderDictionary headers = new HeaderDictionary() { { "Content-Length", contentLength } }; context.Setup(_ => _.Request.Headers).Returns(headers); } // body string bodyString = GetTestJson(jsonFileName); using var stream = new MemoryStream(); using (var writer = new StreamWriter(stream, leaveOpen: true)) { await writer.WriteAsync(bodyString); await writer.FlushAsync(); } stream.Seek(0, SeekOrigin.Begin); context.Setup(x => x.Request.Body).Returns(stream); // action var result = await eventLogApi.RunAsync(context.Object.Request); Assert.IsTrue(result is StatusCodeResult); if (result is StatusCodeResult statusCodeResult) { Assert.AreEqual(expectedStatusCode, statusCodeResult.StatusCode); } eventLogRepository .Verify(x => x.UpsertAsync(It.IsAny <EventLogModel>()), Times.Exactly(expectedSavedItemCount)); }