public CourseSearchServiceTests() { configuration = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build(); var courseSearchClientSettings = new CourseSearchClientSettings { CourseSearchSvcSettings = configuration.GetSection("Configuration:CourseSearchClient:CourseSearchSvc").Get <CourseSearchSvcSettings>() ?? new CourseSearchSvcSettings(), CourseSearchAuditCosmosDbSettings = configuration.GetSection("Configuration:CourseSearchClient:CosmosAuditConnection").Get <CourseSearchAuditCosmosDbSettings>() ?? new CourseSearchAuditCosmosDbSettings(), PolicyOptions = configuration.GetSection("Configuration:CourseSearchClient:Policies").Get <PolicyOptions>() ?? new PolicyOptions(), }; var serviceProvider = new ServiceCollection() .AddFindACourseServices(courseSearchClientSettings); serviceProvider.AddSingleton(sp => { return(new MapperConfiguration(cfg => { cfg.AddProfile(typeof(FindACourseProfile)); cfg.AddProfile(typeof(TLevelDetailsProfile)); }).CreateMapper()); }); var services = serviceProvider.BuildServiceProvider(); findACourseClient = services.GetService <IFindACourseClient>(); auditService = services.GetService <IAuditService>(); mapper = services.GetService <IMapper>(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.Configure <CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddAutoMapper(typeof(Startup).Assembly, typeof(DFC.FindACourseClient.FindACourseProfile).Assembly); services.AddScoped <ICorrelationIdProvider, CorrelationIdProvider>(); services.AddScoped <IFindACourseService, FindACourseService>(); services.AddScoped <IFindACourseRepository, FindACourseRepository>(); services.AddApplicationInsightsTelemetry(); services.AddDFCLogging(Configuration["ApplicationInsights:InstrumentationKey"]); var courseSearchSettings = Configuration.GetSection(CourseSearchAppSettings).Get <CourseSearchSettings>(); services.AddSingleton(courseSearchSettings ?? new CourseSearchSettings()); var courseSearchClientSettings = new CourseSearchClientSettings { CourseSearchSvcSettings = Configuration.GetSection(CourseSearchClientSvcSettings).Get <CourseSearchSvcSettings>() ?? new CourseSearchSvcSettings(), CourseSearchAuditCosmosDbSettings = Configuration.GetSection(CourseSearchClientAuditSettings).Get <CourseSearchAuditCosmosDbSettings>() ?? new CourseSearchAuditCosmosDbSettings(), PolicyOptions = Configuration.GetSection(CourseSearchClientPolicySettings).Get <PolicyOptions>() ?? new PolicyOptions(), }; services.AddSingleton(courseSearchClientSettings); services.AddScoped <ICourseSearchApiService, CourseSearchApiService>(); services.AddFindACourseServicesWithoutFaultHandling(courseSearchClientSettings); services.AddSingleton(Configuration.GetSection(nameof(CmsApiClientOptions)).Get <CmsApiClientOptions>() ?? new CmsApiClientOptions()); var staticContentDbConnection = Configuration.GetSection(StaticCosmosDbConfigAppSettings).Get <CosmosDbConnection>(); services.AddDocumentServices <StaticContentItemModel>(staticContentDbConnection, env.IsDevelopment()); services.AddTransient <IStaticContentReloadService, StaticContentReloadService>(); services.AddTransient <IApiService, ApiService>(); services.AddTransient <ICmsApiService, CmsApiService>(); services.AddTransient <IApiDataProcessorService, ApiDataProcessorService>(); services.AddTransient <IApiCacheService, ApiCacheService>(); services.AddTransient <IWebhooksService, WebhooksService>(); services.AddTransient <IViewHelper, ViewHelper>(); services.AddTransient <MemoryCache>(); var policyRegistry = services.AddPolicyRegistry(); services.AddFindACourseTransientFaultHandlingPolicies(courseSearchClientSettings, policyRegistry); services.AddHostedServiceTelemetryWrapper(); services.AddSubscriptionBackgroundService(Configuration); services.AddHostedService <StaticContentReloadBackgroundService>(); services.AddApiServices(Configuration, policyRegistry); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest); }
public FindACourseClientTests() { defaultLogger = A.Fake <ILogger <IFindACourseClient> >(); defaultSettings = new CourseSearchClientSettings { CourseSearchSvcSettings = new CourseSearchSvcSettings { ServiceEndpoint = new Uri("http://someurl.com"), ApiKey = "SomeAPIMSubscriptionKey", RequestTimeOutSeconds = 10, }, }; }
public FindACourseClientTests() { configuration = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build(); var courseSearchClientSettings = new CourseSearchClientSettings { CourseSearchSvcSettings = configuration.GetSection("Configuration:CourseSearchClient:CourseSearchSvc").Get <CourseSearchSvcSettings>() ?? new CourseSearchSvcSettings(), CourseSearchAuditCosmosDbSettings = configuration.GetSection("Configuration:CourseSearchClient:CosmosAuditConnection").Get <CourseSearchAuditCosmosDbSettings>() ?? new CourseSearchAuditCosmosDbSettings(), PolicyOptions = configuration.GetSection("Configuration:CourseSearchClient:Policies").Get <PolicyOptions>() ?? new PolicyOptions(), }; var serviceProvider = new ServiceCollection() .AddFindACourseServices(courseSearchClientSettings); var services = serviceProvider.BuildServiceProvider(); findACourseClient = services.GetService <IFindACourseClient>(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.Configure <CookiePolicyOptions>(options => { //This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); var aVAPIServiceSettings = configuration.GetSection(AVAPIServiceAppSettings).Get <AVAPIServiceSettings>(); services.AddSingleton(aVAPIServiceSettings ?? new AVAPIServiceSettings()); var courseSearchSettings = configuration.GetSection(CourseSearchAppSettings).Get <CourseSearchSettings>(); services.AddSingleton(courseSearchSettings ?? new CourseSearchSettings()); var courseSearchClientSettings = new CourseSearchClientSettings { CourseSearchSvcSettings = configuration.GetSection(CourseSearchClientSvcSettings).Get <CourseSearchSvcSettings>() ?? new CourseSearchSvcSettings(), CourseSearchAuditCosmosDbSettings = configuration.GetSection(CourseSearchClientAuditSettings).Get <CourseSearchAuditCosmosDbSettings>() ?? new CourseSearchAuditCosmosDbSettings(), PolicyOptions = configuration.GetSection(CourseSearchClientPolicySettings).Get <PolicyOptions>() ?? new PolicyOptions(), }; services.AddSingleton(courseSearchClientSettings); services.AddScoped <ICourseSearchApiService, CourseSearchApiService>(); services.AddFindACourseServicesWithoutFaultHandling(courseSearchClientSettings); var policyRegistry = services.AddPolicyRegistry(); services.AddFindACourseTransientFaultHandlingPolicies(courseSearchClientSettings, policyRegistry); var serviceBusOptions = configuration.GetSection(ServiceBusOptionsAppSettings).Get <ServiceBusOptions>(); var topicClient = new TopicClient(serviceBusOptions.ServiceBusConnectionString, serviceBusOptions.TopicName); services.AddSingleton <ITopicClient>(topicClient); services.AddSingleton <ICosmosRepository <CurrentOpportunitiesSegmentModel>, CosmosRepository <CurrentOpportunitiesSegmentModel> >(s => { var cosmosDbConnection = configuration.GetSection(CosmosDbConfigAppSettings).Get <CosmosDbConnection>(); var documentClient = new DocumentClient(cosmosDbConnection.EndpointUrl, cosmosDbConnection.AccessKey); return(new CosmosRepository <CurrentOpportunitiesSegmentModel>(cosmosDbConnection, documentClient, s.GetService <IWebHostEnvironment>().IsDevelopment())); }); services.AddSingleton <ICosmosRepository <APIAuditRecordAV>, CosmosRepository <APIAuditRecordAV> >(s => { var cosmosDbAuditConnection = configuration.GetSection(AVFeedAuditSettings).Get <CosmosDbConnection>(); var documentClient = new DocumentClient(cosmosDbAuditConnection.EndpointUrl, cosmosDbAuditConnection.AccessKey); return(new CosmosRepository <APIAuditRecordAV>(cosmosDbAuditConnection, documentClient, s.GetService <IWebHostEnvironment>().IsDevelopment())); }); services.AddScoped <ICourseCurrentOpportunitiesRefresh, CourseCurrentOpportunitiesRefresh>(); services.AddScoped <IAVCurrentOpportunitiesRefresh, AVCurrentOpportuntiesRefresh>(); services.AddScoped <ICurrentOpportunitiesSegmentService, CurrentOpportunitiesSegmentService>(); services.AddScoped <ICurrentOpportunitiesSegmentUtilities, CurrentOpportunitiesSegmentUtilities>(); services.AddScoped <IJobProfileSegmentRefreshService <RefreshJobProfileSegmentServiceBusModel>, JobProfileSegmentRefreshService <RefreshJobProfileSegmentServiceBusModel> >(); services.AddSingleton(serviceProvider => { return(new MapperConfiguration(cfg => { cfg.AddProfiles( new List <Profile> { new CurrentOpportunitiesSegmentModelProfile(), new CoursesProfile(), new ApprenticeshipProfile(), new FindACourseProfile(), }); }).CreateMapper()); }); var corePolicyOptions = configuration.GetSection(AVAPIServiceClientPolicySettings).Get <CorePolicyOptions>() ?? new CorePolicyOptions(); corePolicyOptions.HttpRateLimitRetry ??= new RateLimitPolicyOptions(); policyRegistry.AddRateLimitPolicy(nameof(RefreshClientOptions), corePolicyOptions.HttpRateLimitRetry); policyRegistry.AddStandardPolicies(nameof(RefreshClientOptions), corePolicyOptions); services.BuildHttpClient <IApprenticeshipVacancyApi, ApprenticeshipVacancyApi, RefreshClientOptions>(configuration, nameof(RefreshClientOptions)) .AddPolicyHandlerFromRegistry($"{nameof(RefreshClientOptions)}_{nameof(CorePolicyOptions.HttpRateLimitRetry)}") .AddPolicyHandlerFromRegistry($"{nameof(RefreshClientOptions)}_{nameof(CorePolicyOptions.HttpRetry)}") .AddPolicyHandlerFromRegistry($"{nameof(RefreshClientOptions)}_{nameof(CorePolicyOptions.HttpCircuitBreaker)}"); services.AddScoped <IAVAPIService, AVAPIService>(); services.AddScoped <Data.Contracts.IAuditService, AuditService>(); services.AddDFCLogging(configuration["ApplicationInsights:InstrumentationKey"]); services.AddHealthChecks() .AddCheck <CurrentOpportunitiesSegmentService>("Current Opportunities Segment Service") .AddCheck <CourseCurrentOpportunitiesRefresh>("Course Search") .AddCheck <AVAPIService>("Apprenticeship Service"); services.AddMvc().AddNewtonsoftJson().SetCompatibilityVersion(CompatibilityVersion.Version_3_0); }