public void Passing_null_args_shows_help()
        {
            var commandTool = new ConsulCommandLineTool();
            var result      = commandTool.Process(null);

            Assert.IsTrue(result.Code == OperationResultCode.NoArguments);
            Assert.IsFalse(result.Success);
            Assert.IsTrue(result.ShowHelp);
        }
        public void Badformat_service_definition_path_shows_correct_error()
        {
            var commandTool = new ConsulCommandLineTool();
            var args        = "-c -s bad_service_file.json";
            var result      = commandTool.Process(args.Split());

            Assert.IsTrue(result.Code == OperationResultCode.ServiceDefinitionFileBadFormat);
            Assert.IsFalse(result.Success);
            Assert.IsFalse(result.ShowHelp);
        }
        public void Nonexistant_service_definition_path_shows_correct_error()
        {
            var commandTool = new ConsulCommandLineTool();
            var args        = "-c -s DOESNOTEXIST.json";
            var result      = commandTool.Process(args.Split());

            Assert.IsTrue(result.Code == OperationResultCode.ServiceDefinitionFileNotFound);
            Assert.IsFalse(result.Success);
            Assert.IsFalse(result.ShowHelp);
        }
        public void Specifying_multiple_main_args_yields_error()
        {
            var commandTool = new ConsulCommandLineTool()
            {
                Client = new MockConsulWebClient()
                {
                    IsHostReachableCallback = () => { return(true); },
                }
            };
            var result = commandTool.Process(new string[] { "-s", GoodServiceDefinition, "--key", "meow" });

            Assert.IsTrue(result.Code == OperationResultCode.MutlipleMainOptions);
            Assert.IsFalse(result.Success);
            Assert.IsFalse(result.ShowHelp);
        }
        public void Missing_main_option_fails()
        {
            var commandTool = new ConsulCommandLineTool()
            {
                Client = new MockConsulWebClient()
                {
                    IsHostReachableCallback = () => { return(true); },
                }
            };
            var result = commandTool.Process(new string[] { GoodServiceDefinition });

            Assert.IsTrue(result.Code == OperationResultCode.MainOptionMissing);
            Assert.IsFalse(result.Success);
            Assert.IsFalse(result.ShowHelp);
        }
        public void Invalid_host_shows_correct_error()
        {
            var commandTool = new ConsulCommandLineTool()
            {
                Client = new MockConsulWebClient()
                {
                    IsHostReachableCallback = () => { return(false); },
                }
            };
            var args   = "--create --svc service.json -h \"asdf.100.12312.100 a3kil4hj\"";
            var result = commandTool.Process(Split(args));

            Assert.IsTrue(result.Code == OperationResultCode.InvalidHostUri);
            Assert.IsFalse(result.Success);
            Assert.IsFalse(result.ShowHelp);
        }
        public void Unreachable_host_shows_correct_error()
        {
            var commandTool = new ConsulCommandLineTool()
            {
                Client = new MockConsulWebClient()
                {
                    IsHostReachableCallback = () => { return(false); },
                }
            };

            var args   = "--create --svc service.json -h 100.100.100.100";
            var result = commandTool.Process(args.Split());

            Assert.IsTrue(result.Code == OperationResultCode.HostNotReachable);
            Assert.IsFalse(result.Success);
            Assert.IsFalse(result.ShowHelp);
        }
        public void Multiple_sub_options_fails()
        {
            var commandTool = new ConsulCommandLineTool()
            {
                Client = new MockConsulWebClient()
                {
                    IsHostReachableCallback = () => { return(true); },
                    RegisterCallback        = (svc) => { return(true); },
                }
            };

            var args   = "--create --delete --svc service.json";
            var result = commandTool.Process(args.Split());

            Assert.IsTrue(result.Code == OperationResultCode.MutlipleSubOptions);
            Assert.IsFalse(result.Success);
            Assert.IsFalse(result.ShowHelp);
        }