public static IStudySpecificDatasetService GetStudySpecificDatasetService(ServiceProvider serviceProvider, List <Study> studies = null, List <Dataset> datasets = null)
        {
            if (studies == null)
            {
                studies = new List <Study>();
            }

            var db          = serviceProvider.GetService <SepesDbContext>();
            var config      = serviceProvider.GetService <IConfiguration>();
            var mapper      = serviceProvider.GetService <IMapper>();
            var logger      = serviceProvider.GetService <ILogger <StudySpecificDatasetService> >();
            var userService = UserFactory.GetUserServiceMockForAdmin(1);

            var studyPermissionService = StudyServiceMockFactory.StudyPermissionService(serviceProvider, userService.Object);

            var studyModelServiceMock = new Mock <IStudyEfModelService>();

            studyModelServiceMock.Setup(x => x.GetForDatasetsAsync(It.IsAny <int>(), It.IsAny <UserOperation>())).ReturnsAsync((int a, UserOperation b) => studies != null ? studies.FirstOrDefault(s => s.Id == a) : null);
            studyModelServiceMock.Setup(x => x.GetForDatasetCreationAsync(It.IsAny <int>(), It.IsAny <UserOperation>())).ReturnsAsync((int a, UserOperation b) => studies != null ? studies.FirstOrDefault(s => s.Id == a) : null);

            var dsCloudResourceServiceMock = new Mock <IDatasetCloudResourceService>();

            dsCloudResourceServiceMock.Setup(x => x.CreateResourcesForStudySpecificDatasetAsync(It.IsAny <Study>(), It.IsAny <Dataset>(), "192.168.1.1", default(CancellationToken))).Returns(default(Task));

            var studySpecificDatasetModelService = GetStudySpecificDatasetModelService(datasets);

            var studyWbsValidationService = StudyWbsValidationMockServiceFactory.GetService(serviceProvider, true, false);

            return(new StudySpecificDatasetService(db, mapper, logger, userService.Object, studyPermissionService, studyModelServiceMock.Object, studyWbsValidationService, studySpecificDatasetModelService.Object, dsCloudResourceServiceMock.Object));
        }
        public async Task AllowStudyCreation_OnFailedWbsValidation_AndSetRelevantProperties()
        {
            var study = CreateStudyInvalidWbs();
            var studyWbsValidationService = StudyWbsValidationMockServiceFactory.GetService(_serviceProvider, true, true);

            await studyWbsValidationService.ValidateForStudyCreateOrUpdate(study);

            Assert.False(study.WbsCodeValid);
        }
        public async Task ThrowIfInvalidAndReValidationThrows()
        {
            var study = CreateStudyInvalidWbs();
            var studyWbsValidationService = StudyWbsValidationMockServiceFactory.GetService(_serviceProvider, false, true);

            await Assert.ThrowsAsync <InvalidWbsException>(() => studyWbsValidationService.ValidateForSandboxCreationOrThrow(study));

            await Assert.ThrowsAsync <InvalidWbsException>(() => studyWbsValidationService.ValidateForDatasetCreationOrThrow(study));
        }
        public async Task AllowStudyCreation_OnValidWbs()
        {
            var study = CreateStudyValidWbs();
            var studyWbsValidationService = StudyWbsValidationMockServiceFactory.GetService(_serviceProvider, true, false);

            await studyWbsValidationService.ValidateForStudyCreateOrUpdate(study);

            Assert.True(study.WbsCodeValid);
        }
        public async Task AllowSandboxAndDatasetCreation_OnValidWbs()
        {
            var study = CreateStudyValidWbs();
            var studyWbsValidationService = StudyWbsValidationMockServiceFactory.GetService(_serviceProvider, true, false);

            await studyWbsValidationService.ValidateForSandboxCreationOrThrow(study);

            await studyWbsValidationService.ValidateForDatasetCreationOrThrow(study);

            Assert.True(study.WbsCodeValid);
        }
        public async Task AllowSandboxCreation_And_UpdateWbsValidationFields_IfReValidationSucceeds()
        {
            var study = CreateStudyInvalidWbs();
            var studyWbsValidationService = StudyWbsValidationMockServiceFactory.GetService(_serviceProvider, true, false);

            await studyWbsValidationService.ValidateForSandboxCreationOrThrow(study);

            await studyWbsValidationService.ValidateForDatasetCreationOrThrow(study);

            Assert.True(study.WbsCodeValid);
            Assert.NotNull((study.WbsCodeValidatedAt));
            Assert.True((DateTime.UtcNow - study.WbsCodeValidatedAt.Value).TotalSeconds < 10);
        }
Пример #7
0
        ISandboxService CreateForFailingSandboxCreate(string userAppRole,
                                                      int userId,
                                                      int studyId = StudyConstants.CREATED_BY_ME_ID,
                                                      string wbs  = StudyConstants.CREATED_BY_ME_WBS, bool wbsExists = false, bool wbsValidationFails = false)
        {
            var study = StudyModelFactory.CreateBasic(id: studyId, wbs: wbs);

            var studyWbsValidationService = StudyWbsValidationMockServiceFactory.GetService(_serviceProvider, wbsExists, wbsValidationFails);

            return(SandboxServiceWithMocksFactory.ForSandboxCreate(_serviceProvider, userAppRole, userId, studyWbsValidationService, new List <Study>()
            {
                study
            }));
        }
Пример #8
0
        SandboxServicesAndMocks CreateMockPackageWithExistingStudy(Study study, bool wbsExists = false, bool wbsValidationFails = false)
        {
            var studies = new List <Study>()
            {
                study
            };

            //STUDY MODEL SERVICE
            var studyModelServiceMock = new Mock <IStudyEfModelService>();

            studyModelServiceMock
            .Setup(x =>
                   x.GetForSandboxCreateAndDeleteAsync(It.IsAny <int>(), It.IsAny <UserOperation>()))
            .ReturnsAsync((int a, UserOperation b) => studies?.FirstOrDefault(s => s.Id == a));

            //SANDBOX MODEL SERVICE
            var sandboxModelServiceMock = new Mock <ISandboxModelService>();

            var studyWbsValidationService = StudyWbsValidationMockServiceFactory.GetService(_serviceProvider, wbsExists, wbsValidationFails);

            var sandboxService = SandboxServiceWithMocksFactory.Create(_serviceProvider, AppRoles.Admin, 1, studyModelServiceMock.Object, sandboxModelServiceMock.Object, studyWbsValidationService);

            return(new SandboxServicesAndMocks(sandboxService, studyModelServiceMock, sandboxModelServiceMock));
        }