Example #1
0
                public void ScenarioOption()
                {
                    var injector = new MockInjector();
                    var program = injector.Create<Program>();
                    var runner = injector.GetMock<IRunner>();
                    var options = new Options
                    {
                        Scenario = "whee"
                    };

                    program.Run(options)
                           .Should().Be(0);

                    runner.Verify(r => r.Run("whee", null, null));
                }
Example #2
0
                public void ScenarioOptionThrowingException()
                {
                    var injector = new MockInjector();
                    var program = injector.Create<Program>();
                    var runner = injector.GetMock<IRunner>();
                    var output = injector.GetMock<IOutput>();
                    var options = new Options
                    {
                        Scenario = "s"
                    };

                    var exception = new InvalidOperationException("moo");
                    runner.Setup(r =>
                                 r.Run(It.IsAny<string>(),
                                       It.IsAny<string[]>(), null))
                          .Throws(exception);

                    program.Run(options)
                           .Should().Be(1);

                    output.Verify(o => o.Display(It.Is<ResultModel>(r =>
                        r.Result == Result.Fail && r.Message == exception.ToString())));
                }
Example #3
0
                public void ScenarioOptionWithArguments()
                {
                    var injector = new MockInjector();
                    var program = injector.Create<Program>();
                    var runner = injector.GetMock<IRunner>();
                    var options = new Options
                    {
                        Scenario = "moo",
                        ScenarioArguments = new[] {"a1", "a2"}
                    };

                    program.Run(options)
                           .Should().Be(0);

                    runner.Verify(r => r.Run("moo", new[] {"a1", "a2"}, null));
                }
Example #4
0
        public int Run(Options options)
        {
            if (options.Scenario != null)
            {
                endpointProvider.ServerBaseUrl = options.ListenUrl;
                if (options.ClientUrl != null && options.ClientUrl.Length > 0)
                    endpointProvider.ClientEndpoint = new Queue<string>(options.ClientUrl);
                endpointProvider.Username = options.Username;
                endpointProvider.Password = options.Password;
                endpointProvider.SkipAuthentication = options.SkipAuthentication;

                if (options.UseSoap11)
                {
                    endpointProvider.MessageVersion = MessageVersion.Soap11WSAddressing10;
                }

                try
                {
                    scenarioRunner.Run(options.Scenario, options.ScenarioArguments, options.ReceiverParty);
                    output.Display(new ResultModel
                    {
                        Result = Result.Pass
                    });
                }
                catch (Exception e)
                {
                    var baseException = e.GetBaseException();
                    var failException = baseException as FailException;
                    logger.Error(string.Format("Exception:\n{0}", e));
                    if (failException != null)
                    {
                        logger.Error(string.Format("Wrapped Exception:\n{0}", failException.WrappedException));
                    }
                    output.Display(new ResultModel
                    {
                        Result = Result.Fail,
                        Message = (failException ?? e).ToString()
                    });
                    return 1;
                }
            }
            else if (options.ListScenarios)
            {
                var helpText = new HelpText();
                foreach (var scenario in scenarioTypeFinder.Methods.Keys)
                {
                    helpText.AddPreOptionsLine(scenario);
                    foreach (var method in scenarioTypeFinder.Methods[scenario])
                    {
                        var parameters = new List<string>();
                        for (int i = 0; i < method.GetParameters().Length; i++)
                        {
                            parameters.Add(method.GetParameters()[i].Name);
                        }
                        helpText.AddPreOptionsLine(string.Format("|- {0}({1})", method.Name, string.Join(",", parameters)));
                    }
                    helpText.AddPreOptionsLine(Environment.NewLine);
                }
                output.String(helpText, log: false);
                return 1;
            }
            else if (options.ScenarioInfo != null)
            {
                throw new NotImplementedException();
            }
            else
            {
                output.String(options.GetUsage(), log: false);
                return 1;
            }

            return 0;
        }
Example #5
0
        static void SetupLogging(string[] args, Options options)
        {
            var configuration = new LoggingConfiguration();
            var fileTarget = new FileTarget
            {
                AutoFlush = true,
                FileName = options.LogFileName,
                Layout = @"[${date:format=yyyy-MM-dd HH\:mm\:ss.fff}] [${logger}] ${message}"
            };
            configuration.AddTarget("file", fileTarget);
            configuration.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, fileTarget));

            var consoleTarget = new ColoredConsoleTarget
            {
                ErrorStream = true
            };
            configuration.AddTarget("console", consoleTarget);
            configuration.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, consoleTarget));

            LogManager.Configuration = configuration;

            LogManager.GetCurrentClassLogger().Info("Arguments: {0}", args.Dump());
            LogManager.GetCurrentClassLogger().Info("Options: {0}", options.Dump());
        }
Example #6
0
        static int Main(string[] args)
        {
            var parser = GetParser();
            var options = new Options();

            if (!parser.ParseArguments(args, options))
            {
                Console.Out.Write(options.GetUsage());
                return 1;
            }

            SetupLogging(args, options);
            Container = CreateContainer();
            var program = Container.Resolve<Program>();
            return program.Run(options);
        }