public void WhenConfigurationExists_ThenReturnConfiguration()
            {
                IConfiguration config = new AppConfigurationBuilder()
                                        .WithSetting("Key1", "Value1")
                                        .Build();

                _sut.AddSingleton(config);

                var result = _sut.GetConfiguration();

                Assert.That(result.Get <TestSettings>().Key1, Is.EqualTo("Value1"));
            }
        public TestShoppingServiceApi()
        {
            var environment   = Environment.GetEnvironmentVariable("SHOPPING_SERVICE_ENVIRONMENT");
            var configuration = AppConfigurationBuilder.Initialize(
                Directory.GetCurrentDirectory(),
                $"settings.{environment}.json"
                ).Build();

            var dbConnectionString = Environment.GetEnvironmentVariable("SHOPPING_SERVICE_DB_CONNECTION_STRING");
            var webHostBuilder     = WebApplicationBuilderFactory.Initialize(configuration, dbConnectionString);

            _server = new TestServer(webHostBuilder);
        }
示例#3
0
        static void Main(string[] args)
        {
            //Load application configurations from ApplicationConfig.json file
            var configBuilder     = new AppConfigurationBuilder(configFilePath);
            var configurations    = configBuilder.LoadJsonConfigFile();
            var sqlQueryContainer = new SqlQueryContainer(configurations);

            //Configurations and SqlQueryContainer validation
            if (configurations == null)
            {
                Console.WriteLine("JSON loader was not able to map data from configuration file. Check configuration file's path!");
            }
            ;

            if (sqlQueryContainer == null)
            {
                Console.WriteLine("Initializing SqlQueryContainer encountered problem. Check configuration file's path!");
            }
            ;

            //Ensure database is created.
            var databaseInitializer = new DatabaseInitializer(configurations, sqlQueryContainer);

            if (!databaseInitializer.CheckDatabaseEntityExists())
            {
                databaseInitializer.CreateDatabaseEntity();
            }

            //Ensure Table is created.
            var mainTableGenerator = new TableInitializer(configurations, sqlQueryContainer);

            if (!mainTableGenerator.CheckDatabaseEntityExists())
            {
                mainTableGenerator.CreateDatabaseEntity();
            }

            var dateImporter = new DataImporter(configurations, sqlQueryContainer);
            var appOutput    = new ApplicationOutput();

            //Import process
            try
            {
                dateImporter.DatabaseRecordsImport();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            Console.WriteLine(appOutput.Output());
        }
示例#4
0
        public static void Main(string[] args)
        {
            var environment   = Environment.GetEnvironmentVariable("SHOPPING_SERVICE_ENVIRONMENT");
            var configuration = AppConfigurationBuilder.Initialize(
                Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),
                $"settings.{environment}.json"
                ).Build();

            var dbConnectionString = Environment.GetEnvironmentVariable("SHOPPING_SERVICE_DB_CONNECTION_STRING");

            WebApplicationBuilderFactory
            .Initialize(configuration, dbConnectionString)
            .Build()
            .Run();
        }
示例#5
0
        static void Main(string[] args)
        {
            JsonConvert.DefaultSettings = () => new JsonSerializerSettings
            {
                Converters = new JsonConverter[] { new StringEnumConverter() }
            };

            var config = new AppConfigurationBuilder()
                         .AddJsonFile("cfg\\default.json")
                         .AddJsonFile("cfg\\app.json")
                         .Build();

            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Verbose()
                         .WriteTo.Console()
                         .WriteTo.File(
                Path.Combine(String.Format(config["LogPath"].AsString(), config["ServiceName"]),
                             $"{config["ServiceName"]}.txt"),
                rollingInterval: RollingInterval.Day)
                         .CreateLogger();

            var container = CreateContainer(config);

            void LogError(ILifetimeScope c, IPipelines pipelines) =>
            pipelines.OnError.AddItemToStartOfPipeline(
                (ctx, ex) =>
            {
                Log.Logger.Error("NancyHost Exception {@ex}", ex);

                switch (ex)
                {
                case ValidationException validationException:
                    return(new TextResponse(ex.Message)
                    {
                        StatusCode = HttpStatusCode.UnprocessableEntity,
                    });
                }

                return(null);
            });

            // ConfigurableAutofacBootstrapper реализован локально, т.к. его package не публикуется
            var bootstrapper = new ConfigurableAutofacBootstrapper(
                container,
                new List <Action <ILifetimeScope, IPipelines> > {
                LogError
            },
                typeof(CreateReceiptModule),
                typeof(SwaggerModule));

            InitSwagger(config);

            HostFactory.Run(x =>
            {
                x.UseLibLog();
                x.Service <BaseService>(
                    s =>
                {
                    s.ConstructUsing(settings => new BaseService());
                    s.WhenStarted(service => service.Start());
                    s.WhenStopped(service => service.Stop());
                    s.WithNancyEndpoint(
                        x,
                        c =>
                    {
                        c.UseBootstrapper(bootstrapper);
                        var uri = new Uri(config["HostUrl"]);
                        {
                            c.AddHost(uri.Scheme, uri.Host, uri.Port, uri.AbsolutePath);
                            //TODO: без авторезервирования не всегда запускается, потом убрать
                            c.ConfigureNancy(h => h.UrlReservations = new UrlReservations()
                            {
                                CreateAutomatically = true
                            });
                        }
                        c.CreateUrlReservationsOnInstall();
                        c.OpenFirewallPortsOnInstall(config["ServiceName"]);
                    });
                });
                x.StartAutomaticallyDelayed();
                x.SetServiceName(config["ServiceName"]);
                x.SetDisplayName(config["ServiceName"]);
                x.SetDescription($"{config["ServiceDescription"]} | {config["HostUrl"]}");
                x.RunAsNetworkService();
            });
        }
 protected InstallerTestBase()
 {
     ServiceCollection       = new ServiceCollection();
     AppConfigurationBuilder = new AppConfigurationBuilder();
 }