public override async Task ExecuteAsync(List <string> arguments) { if (arguments.Count != EXPECTED_ARGUMENTS) { Console.WriteLine("Expected " + EXPECTED_ARGUMENTS + " arguments but found " + arguments.Count + "."); return; } string partitionId = arguments.ElementAt(0); string objectId = arguments.ElementAt(1); string value = arguments.ElementAt(2); try { Console.WriteLine($"Write... {partitionId} {objectId} {value}"); await WriteController.Execute(ConnectionManager, partitionId, objectId, value); Console.WriteLine($"Success..."); } catch (ServerBindException e) { Console.WriteLine($"ERROR: {e.Message}"); } catch (RpcException ex) when(ex.StatusCode == StatusCode.Internal) { Console.WriteLine($"Could not establish connection with server."); } }
public async Task PostItemSucceeds() { var item = new TestEntity { Name = "Ent" }; var repoItem = new TestEntity { Id = 123, Name = "Ent" }; var mockRepository = new Mock <IWriteRepository <TestEntity> >(MockBehavior.Strict); mockRepository.Setup(r => r.PostAsync(item)).Returns(Task.FromResult(repoItem)); var controller = new WriteController <TestEntity>(mockRepository.Object) { ControllerContext = { HttpContext = new DefaultHttpContext() } }; var request = controller.HttpContext.Request; request.Scheme = "https"; request.Host = new HostString("somehost"); request.Path = "/ents"; var actionResult = await controller.PostAsync(item) as CreatedResult; Assert.NotNull(actionResult); Assert.AreEqual("https://somehost/ents/123", actionResult.Location); var dataResult = actionResult.Value as TestEntity; Assert.NotNull(dataResult); Assert.AreEqual(123, dataResult.Id); Assert.AreEqual("Ent", dataResult.Name); }
public void POSTWritesFormattedMessageToLog() { var logSystem = new Mock <ILogger <FileSystemLoggingCategory> >(); var exceptionLogger = new Mock <ILogger <WriteController> >(); var message = new Message() { Id = 999, Date = new DateTime(2020, 10, 23, 12, 05, 59), Content = "this is a test" }; var logMessage = "Message contains Id: 999, Date: 23/10/2020 12:05:59, Content: this is a test"; logSystem .Setup(ls => ls.Log( LogLevel.Information, It.IsAny <EventId>(), It.Is <It.IsAnyType>((o, _) => o.ToString() == logMessage), It.IsAny <Exception>(), It.Is <Func <It.IsAnyType, Exception, string> >((v, t) => true))); var controller = new WriteController( logSystem.Object, exceptionLogger.Object); var result = controller.Post(message); Assert.AreEqual(200, (result as StatusCodeResult).StatusCode); logSystem.VerifyAll(); }
public async Task DeleteSucceeds() { var mockRepository = new Mock <IWriteRepository <TestEntity> >(MockBehavior.Strict); mockRepository.Setup(r => r.DeleteAsync(123)).Returns(Task.FromResult(true)); var controller = new WriteController <TestEntity>(mockRepository.Object); var result = await controller.DeleteAsync(123) as NoContentResult; Assert.NotNull(result); }
public void Test_WriteController_DeleteByIdFail() { // Arrange WriteController writeController = new WriteController(this._UoW); //Act var response = writeController.Delete(-1); //Assert Assert.AreEqual(response, false); }
public void Test_WriteController_DeleteByIdSuccess() { // Arrange WriteController writeController = new WriteController(this._UoW); //Act var response = writeController.Delete(4); //Assert Assert.AreEqual(response, true); }
public void DeleteItemWhenRepoThrows() { var item = new TestEntity { Id = 123, Name = "Ent" }; var mockRepository = new Mock <IWriteRepository <TestEntity> >(MockBehavior.Strict); mockRepository.Setup(r => r.DeleteAsync(123)).ThrowsAsync(new IOException()); var controller = new WriteController <TestEntity>(mockRepository.Object); Assert.ThrowsAsync <IOException>(async() => await controller.DeleteAsync(123)); }
public async Task PostItemNoItem() { var mockRepository = new Mock <IWriteRepository <TestEntity> >(MockBehavior.Strict); var controller = new WriteController <TestEntity>(mockRepository.Object); var actionResult = await controller.PostAsync(null) as BadRequestObjectResult; Assert.NotNull(actionResult); var message = actionResult.Value as string; Assert.NotNull(message); Assert.AreEqual(WriteController <TestEntity> .BadPostMessage, actionResult.Value); }
public async Task PutItemSucceeds() { var item = new TestEntity { Id = 123, Name = "Ent" }; var mockRepository = new Mock <IWriteRepository <TestEntity> >(MockBehavior.Strict); mockRepository.Setup(r => r.PutAsync(item)).Returns(Task.CompletedTask); var controller = new WriteController <TestEntity>(mockRepository.Object); var actionResult = await controller.PutAsync(123, item) as NoContentResult; Assert.NotNull(actionResult); }
/// <summary> /// The application entry point. /// </summary> /// <param name="args"> /// The command line arguments. /// </param> static void Main(string[] args) { // INITIALISE an IReadController, IWriteController, IFilterController, IReportController as their respective // concrete implementations, ReadController, WriteController, FilterController and ReportController IReadController readController = new ReadController(); IWriteController writeController = new WriteController(); IFilterController filterController = new FilterController(); IReportController reportController = new ReportController(); // INITIALISE an IExportController as ExportController, passing in the readController and WriteController IExportController conversationExporter = new ExportController(readController, writeController, filterController, reportController); ConversationExporterConfiguration configuration = new CommandLineArgumentParser().ParseCommandLineArguments(args, filterController); conversationExporter.ExportConversation(configuration.inputFilePath, configuration.outputFilePath); }
public async Task CreatePayment_When_Payload_Is_Valid_Then_Return_NoContent() { var request = new CreatePaymentRequest() { Amount = 12.34m, Currency = "USD", MerchantId = 123 }; var controller = new WriteController(_logger, _mockWriteService.Object); var expected = new NoContentResult(); var actual = await controller.CreatePayment(request); actual.Should().BeEquivalentTo(expected); }
public async Task DeleteIdLessThan1() { var item = new TestEntity { Name = "Ent" }; var mockRepository = new Mock <IWriteRepository <TestEntity> >(MockBehavior.Strict); var controller = new WriteController <TestEntity>(mockRepository.Object); var actionResult = await controller.DeleteAsync(0) as BadRequestObjectResult; Assert.NotNull(actionResult); var message = actionResult.Value as string; Assert.NotNull(message); Assert.AreEqual(WriteController <TestEntity> .BadIdMessage, actionResult.Value); }
public async Task PutItemIdNotMatchItemId() { var item = new TestEntity { Name = "Ent" }; var mockRepository = new Mock <IWriteRepository <TestEntity> >(MockBehavior.Strict); var controller = new WriteController <TestEntity>(mockRepository.Object); var actionResult = await controller.PutAsync(456, item) as BadRequestObjectResult; Assert.NotNull(actionResult); var message = actionResult.Value as string; Assert.NotNull(message); Assert.AreEqual(WriteController <TestEntity> .BadIdMatchMessage, actionResult.Value); }
public async Task CreatePayment_When_Payload_Is_Invalid_Then_Return_BadRequest() { var request = new CreatePaymentRequest() { Amount = 12.34m, Currency = "USD", MerchantId = 123 }; var controller = new WriteController(_logger, _mockWriteService.Object); controller.ModelState.AddModelError("CreatePaymentRequest", "Invalid payload request!"); var expected = new BadRequestResult(); var actual = await controller.CreatePayment(request); actual.Should().BeEquivalentTo(expected); }
public async Task CreatePayment_When_Exception_Is_Thrown_Then_Return_InternalServerError() { var request = new CreatePaymentRequest() { Amount = 12.34m, Currency = "USD", MerchantId = 123 }; var controller = new WriteController(_logger, _mockWriteService.Object); _mockWriteService.Setup(x => x.CreatePayment(It.IsAny <CreatePaymentRequest>())) .ThrowsAsync(new Exception()); var expected = new StatusCodeResult(500); var actual = await controller.CreatePayment(request); actual.Should().BeEquivalentTo(expected); _mockWriteService.Verify(); }
public void Initialize() { this._context = DataContextMocker.GetDataContext("WSiteAssign_UnitTest"); this._UoW = new UnitOfWork(this._context); this.writeController = new WriteController(this._UoW); }