private async static Task <int> RunOptionsAndReturnExitCode(CommandLineOptions opts) { if (opts.Action == "config") { if (string.IsNullOrEmpty(opts.PublicKey) || string.IsNullOrEmpty(opts.PrivateKey)) { Console.WriteLine("Invalid arguments. Both public and private keys must be set."); return(-1); } SaveSettings(opts); return(0); } var configuration = LoadConfiguration(); var appConfiguration = new AppConfiguration(configuration); if (string.IsNullOrEmpty(((IMongoDbAtlasRestApiConfiguration)appConfiguration).PublicKey) || string.IsNullOrEmpty(((IMongoDbAtlasRestApiConfiguration)appConfiguration).PrivateKey)) { Console.WriteLine("Missing configuration. Please use the config command or set the keys manually."); return(-1); } using var serviceProvider = CreateServiceProvider(opts, configuration); var factory = new ConsoleTaskFactory(serviceProvider); var task = factory.Create(opts.Action, opts.Resource, out var errorMessage); if (task == null) { Console.WriteLine(errorMessage); return(-1); } try { var output = await task.ExecuteAsync(opts); if (string.IsNullOrEmpty(output)) { Console.WriteLine("No data returned"); return(-1); } Console.WriteLine(output); return(0); } catch (Exception exc) { Console.WriteLine($"An error occured: {exc.Message}"); return(-2); } }
public void ConsoleTaskFactoryCreate_ShouldSetErrorMessageOnInvalidOptions(string action, string resource, string expected) { // Arrange var factory = new ConsoleTaskFactory(_serviceProvider); // Act var task = factory.Create(action, resource, out var actual); // Assert task.Should().BeNull(); actual.Should().NotBeNull(); actual.Should().Be(expected); }
public void ConsoleTaskFactoryCreate_ShouldCoverAllOptions(string action, string resource, string taskClassName) { // Arrange var factory = new ConsoleTaskFactory(_serviceProvider); // Act var task = factory.Create(action, resource, out var errorMessage); // Assert errorMessage.Should().BeNull(); task.Should().NotBeNull(); task.GetType().Name.Should().Be(taskClassName); }