public async Task <ActionResult> BulkLoad() { var config = await _odsSecretConfigurationProvider.GetSecretConfiguration(_instanceContext.Id); if (config == null) { _logger.Error(_missingOdsSecretConfig); return(JsonError(_missingOdsSecretConfig)); } var model = new OdsInstanceSettingsModel { OdsInstanceSettingsTabEnumerations = _tabDisplayService.GetOdsInstanceSettingsTabDisplay(OdsInstanceSettingsTabEnumeration .BulkLoad), BulkFileUploadModel = new BulkFileUploadModel { ApiKey = config.BulkUploadCredential?.ApiKey ?? string.Empty, ApiSecret = config.BulkUploadCredential?.ApiSecret ?? string.Empty, CloudOdsEnvironment = CloudOdsEnvironment.Production }, OdsInstance = _instanceContext }; return(View(model)); }
public async Task <ActionResult> BulkFileUpload(OdsInstanceSettingsModel model) { var bulkFiles = model.BulkFileUploadModel.BulkFiles.Where(file => file != null && file.ContentLength > 0).ToArray(); if (!bulkFiles.Any()) { return(new HttpStatusCodeResult(HttpStatusCode.NoContent)); } if (bulkFiles.Sum(f => f.ContentLength) > BulkFileUploadModel.MaxFileSize) { throw new Exception($"Upload exceeds maximum limit of {BulkFileUploadModel.MaxFileSize} bytes"); } if (bulkFiles.Length > 1) { throw new Exception("Currently, the bulk import process only supports a single file at a time"); } var uploadedFiles = _fileUploadHandler.SaveFilesToUploadDirectory(bulkFiles, fileName => InterchangeFileHelpers.BuildFileNameForImport(model.BulkFileUploadModel.BulkFileType, fileName)); var connectionInformation = await GetConnectionInformationProvider(); var config = await _odsSecretConfigurationProvider.GetSecretConfiguration(_instanceContext.Id); if (config == null) { throw new InvalidOperationException("ODS secret configuration can not be null."); } var schemaBasePath = HostingEnvironment.MapPath(ConfigurationManager.AppSettings["XsdFolder"]); var standardVersion = _inferOdsApiVersion.EdFiStandardVersion(connectionInformation.ApiServerUrl); var jobContext = new BulkUploadJobContext { DataDirectoryFullPath = uploadedFiles.Directory, Environment = CloudOdsEnvironment.Production.Value, OdsInstanceId = _instanceContext.Id, OdsInstanceName = _instanceContext.Name, ApiBaseUrl = connectionInformation.ApiBaseUrl, OauthUrl = connectionInformation.OAuthUrl, MetadataUrl = connectionInformation.MetadataUrl, DependenciesUrl = connectionInformation.DependenciesUrl, ClientKey = config.BulkUploadCredential?.ApiKey ?? string.Empty, ClientSecret = config.BulkUploadCredential?.ApiSecret ?? string.Empty, SchemaPath = $"{schemaBasePath}\\{standardVersion}" }; if (!_bulkUploadJob.IsJobRunning()) { _bulkUploadJob.EnqueueJob(jobContext); } var updatedValue = model; updatedValue.BulkFileUploadModel.IsJobRunning = _bulkUploadJob.IsJobRunning(); updatedValue.BulkFileUploadModel.IsSameOdsInstance = _bulkUploadJob.IsSameOdsInstance(_instanceContext.Id, typeof(BulkUploadJobContext)); return(PartialView("_SignalRStatus_BulkLoad", updatedValue)); }
public async Task <ActionResult> LearningStandards() { var odsApiFacade = await _odsApiFacadeFactory.Create(CloudOdsEnvironment.Production); var config = await _odsSecretConfigurationProvider.GetSecretConfiguration(_instanceContext.Id); if (config == null) { _logger.Error("ODS secret configuration is null."); throw new InvalidOperationException("ODS secret configuration can not be null."); } var model = new OdsInstanceSettingsModel { OdsInstanceSettingsTabEnumerations = _tabDisplayService.GetOdsInstanceSettingsTabDisplay(OdsInstanceSettingsTabEnumeration .LearningStandards), LearningStandardsModel = new LearningStandardsModel { ApiKey = config.LearningStandardsCredential?.ApiKey ?? string.Empty, ApiSecret = config.LearningStandardsCredential?.ApiSecret ?? string.Empty, HasApiData = odsApiFacade.DoesApiDataExist(), SynchronizationWasSuccessful = config.LearningStandardsCredential?.SynchronizationWasSuccessful ?? false, IsJobRunning = _learningStandardsJob.IsJobRunning(), IsSameOdsInstance = _learningStandardsJob.IsSameOdsInstance(_instanceContext.Id, typeof(LearningStandardsJobContext)), LastUpdatedDate = config.LearningStandardsCredential?.LastUpdatedDate ?? DateTime.MinValue }, OdsInstance = _instanceContext }; return(View(model)); }
public void When_Perform_Post_Request_To_BulkFileUpload_With_Multiple_Files_ThrowsException() { // Arrange var file1 = new Mock <HttpPostedFileBase>(); file1.Setup(x => x.ContentLength).Returns(200); var file2 = new Mock <HttpPostedFileBase>(); file2.Setup(x => x.ContentLength).Returns(200); var model = new OdsInstanceSettingsModel { BulkFileUploadModel = new BulkFileUploadModel { BulkFiles = new List <HttpPostedFileBase> { file1.Object, file2.Object } } }; // Assert Assert.ThrowsAsync <Exception>(() => SystemUnderTest.BulkFileUpload(model)).Message .Contains("Currently, the bulk import process only supports a single file at a time").ShouldBeTrue(); }
protected override void AdditionalSetup() { _settingsModel = new OdsInstanceSettingsModel { LearningStandardsModel = new LearningStandardsModel { ApiKey = ApiKey, ApiSecret = ApiSecret } }; ApiModeProvider .Setup(x => x.GetApiMode()) .Returns(ApiMode.Sandbox); ApiConnectionInformationProvider .Setup(x => x.GetConnectionInformationForEnvironment(CloudOdsEnvironment.Production)) .ReturnsAsync(new OdsApiConnectionInformation("Ods Instance", ApiMode.Sandbox) { ApiServerUrl = ProductionUrl }); LearningStandardsSetupCommand.Setup(x => x.Execute(It.IsAny <AcademicBenchmarkConfig>())) .Returns(Task.CompletedTask); LearningStandardsJob.Setup(x => x.EnqueueJob(It.IsAny <LearningStandardsJobContext>())); }
public ActionResult Setup(OdsInstanceSettingsModel model) { if (CloudOdsAdminAppSettings.Instance.SystemManagedSqlServer) { _productionSetupJob.EnqueueJob(1); } return(new HttpStatusCodeResult(200)); }
public ActionResult Descriptors() { var model = new OdsInstanceSettingsModel { OdsInstanceSettingsTabEnumerations = _tabDisplayService.GetOdsInstanceSettingsTabDisplay(OdsInstanceSettingsTabEnumeration.Descriptors), OdsInstance = _instanceContext }; return(View(model)); }
public ActionResult EducationOrganizations() { var model = new OdsInstanceSettingsModel { OdsInstanceSettingsTabEnumerations = _tabDisplayService.GetOdsInstanceSettingsTabDisplay(OdsInstanceSettingsTabEnumeration .EducationOrganizations), OdsInstance = _instanceContext }; return(View(model)); }
public async Task <ActionResult> LearningStandards(OdsInstanceSettingsModel model) { await _learningStandardsSetupCommand.Execute( new AcademicBenchmarkConfig { ApiKey = model.LearningStandardsModel.ApiKey, ApiSecret = model.LearningStandardsModel.ApiSecret, OdsApiMode = CloudOdsAdminAppSettings.Instance.Mode }); await RunLearningStandardsJob(); return(new HttpStatusCodeResult(200)); }
public async Task <ActionResult> Applications() { OdsInstanceSettingsModel model; model = new OdsInstanceSettingsModel { OdsInstanceSettingsTabEnumerations = _tabDisplayService.GetOdsInstanceSettingsTabDisplay(OdsInstanceSettingsTabEnumeration.Applications), OdsInstance = _instanceContext, ProductionApiUrl = (await GetConnectionInformationProvider()).ApiServerUrl }; return(View("Index", model)); }
OdsInstanceSettingsModel GetReportModel(int id) { var model = new OdsInstanceSettingsModel { ReportsModel = new ReportsModel { LocalEducationAgencyId = id }, OdsInstanceSettingsTabEnumerations = _tabDisplayService.GetOdsInstanceSettingsTabDisplay(OdsInstanceSettingsTabEnumeration.Reports), OdsInstance = _instanceContext }; return(model); }
public async Task <ActionResult> SaveBulkLoadCredentials(OdsInstanceSettingsModel model) { var config = await _odsSecretConfigurationProvider.GetSecretConfiguration(_instanceContext.Id); if (config == null) { return(JsonError(_missingOdsSecretConfig)); } config.BulkUploadCredential = new BulkUploadCredential { ApiKey = model.BulkFileUploadModel.ApiKey, ApiSecret = model.BulkFileUploadModel.ApiSecret }; await _odsSecretConfigurationProvider.SetSecretConfiguration(config, _instanceContext.Id); return(JsonSuccess("Credentials successfully saved")); }
public async Task <ActionResult> SetupComplete() { var defaultOdsInstance = await _cachedItems.GetDefaultCloudOdsInstance(); var model = new OdsInstanceSettingsModel { ProductionSetupCompletedModel = new OdsInstanceSetupCompletedModel { ProvisioningWarnings = await _getProductionApiProvisioningWarningsQuery.Execute(defaultOdsInstance) }, OdsInstanceSettingsTabEnumerations = _tabDisplayService.GetOdsInstanceSettingsTabDisplay(OdsInstanceSettingsTabEnumeration.Setup) }; return(View(model)); }
public async Task <ActionResult> Setup() { var setupCompleted = (await _odsApiFacadeFactory.Create(CloudOdsEnvironment.Production)).DoesApiDataExist(); if (setupCompleted) { return(RedirectToAction("SetupComplete")); } var model = new OdsInstanceSettingsModel { OdsInstanceSettingsTabEnumerations = _tabDisplayService.GetOdsInstanceSettingsTabDisplay(OdsInstanceSettingsTabEnumeration.Setup) }; return(View(model)); }
public async Task <ActionResult> Logging() { var settings = await _cloudOdsSettingsService.GetSettings(_appSettings.DefaultOdsInstance); var model = new OdsInstanceSettingsModel { LogSettingsModel = new LogSettingsModel { LogLevel = settings.LogLevel }, OdsInstanceSettingsTabEnumerations = _tabDisplayService.GetOdsInstanceSettingsTabDisplay(OdsInstanceSettingsTabEnumeration.Logging), OdsInstance = _instanceContext }; return(View(model)); }
public async Task When_Perform_Post_Request_To_BulkFileUpload_With_No_File_Returns_NoContent() { // Arrange var model = new OdsInstanceSettingsModel { BulkFileUploadModel = new BulkFileUploadModel { BulkFiles = new List <HttpPostedFileBase>() } }; // Act var result = (HttpStatusCodeResult)await SystemUnderTest.BulkFileUpload(model); // Assert result.ShouldNotBeNull(); result.StatusCode.ShouldBe((int)HttpStatusCode.NoContent); }
public async Task <ActionResult> Logging() { var settings = await _cloudOdsSettingsService.GetSettings( CloudOdsAdminAppSettings.Instance.OdsInstanceName, CloudOdsEnvironment.Production); var model = new OdsInstanceSettingsModel { LogSettingsModel = new LogSettingsModel { Environment = CloudOdsEnvironment.Production, LogLevel = settings.LogLevel }, OdsInstanceSettingsTabEnumerations = _tabDisplayService.GetOdsInstanceSettingsTabDisplay(OdsInstanceSettingsTabEnumeration.Logging), OdsInstance = _instanceContext }; return(View(model)); }
public void When_Perform_Post_Request_To_BulkFileUpload_With_Greater_File_ContentLength_ThrowsException() { // Arrange var file = new Mock <HttpPostedFileBase>(); file.Setup(x => x.ContentLength).Returns(20000002); var model = new OdsInstanceSettingsModel { BulkFileUploadModel = new BulkFileUploadModel { BulkFiles = new List <HttpPostedFileBase> { file.Object } } }; // Assert Assert.ThrowsAsync <Exception>(() => SystemUnderTest.BulkFileUpload(model)).Message .Contains("Upload exceeds maximum limit").ShouldBeTrue(); }
private OdsInstanceSettingsModel SetupBulkUpload(out FileUploadResult fileUploadResult) { const string filename = "test.xml"; var file = new Mock <HttpPostedFileBase>(); file.Setup(x => x.ContentLength).Returns(200); file.Setup(x => x.FileName).Returns("test.xml"); var model = new OdsInstanceSettingsModel { BulkFileUploadModel = new BulkFileUploadModel { BulkFiles = new List <HttpPostedFileBase> { file.Object } } }; fileUploadResult = new FileUploadResult { Directory = "directoryPath", FileNames = new[] { filename } }; InstanceContext.Id = OdsInstanceContext.Id; InstanceContext.Name = OdsInstanceContext.Name; FileUploadHandler.Setup(x => x.SaveFilesToUploadDirectory(It.IsAny <HttpPostedFileBase[]>(), It.IsAny <Func <string, string> >())) .Returns(fileUploadResult); ApiConnectionInformationProvider .Setup(x => x.GetConnectionInformationForEnvironment(CloudOdsEnvironment.Production)) .ReturnsAsync(_connectionInformation); OdsSecretConfigurationProvider.Setup(x => x.GetSecretConfiguration(It.IsAny <int>())) .Returns(Task.FromResult(OdsSecretConfig)); return(model); }
public async Task When_Perform_Post_Request_To_SaveBulkLoadCredentials_With_BulkUpload_Credentials_Return_Json_Success() { // Arrange const string expectedKey = "key"; const string expectedSecret = "secret"; var model = new OdsInstanceSettingsModel { BulkFileUploadModel = new BulkFileUploadModel { ApiKey = expectedKey, ApiSecret = expectedSecret } }; OdsSecretConfigurationProvider.Setup(x => x.GetSecretConfiguration(It.IsAny <int>())) .Returns(Task.FromResult(new OdsSecretConfiguration())); // Act var result = (ContentResult)await SystemUnderTest.SaveBulkLoadCredentials(model); // Assert result.Content.Contains("Credentials successfully saved").ShouldBeTrue(); }