private async Task DeleteCG(Uri cgUri)
        {
            var request    = new HttpRequestMessage(HttpMethod.Delete, CG_PATH);
            var cgToDelete = new ConsumerGroupBuilder().WithUri(cgUri).BuildDto();

            request.Content = BuildJsonHttpContent(cgToDelete);

            var deleteResponse = await Client.SendAsync(request);

            var deleteResponseContent = await deleteResponse.Content.ReadAsStringAsync();

            _output.WriteLine(deleteResponseContent);
            deleteResponse.EnsureSuccessStatusCode();

            var getResponse = await Client.GetAsync(CG_PATH);

            var getResponseContent = await getResponse.Content.ReadAsStringAsync();

            var foundCgs = JsonConvert.DeserializeObject <List <ConsumerGroup> >(getResponseContent);

            _output.WriteLine("Found CGs: " + string.Join(", ", foundCgs));

            var cgShouldBeNull = foundCgs.SingleOrDefault(e => Uri.Compare(e.Uri, cgUri, UriComponents.AbsoluteUri, UriFormat.UriEscaped, StringComparison.InvariantCulture) == 0);

            _output.WriteLine("cgShouldBeNull: " + cgShouldBeNull);
            Assert.Null(cgShouldBeNull);
        }
        public void InternalHasValidationResult_GenerateIdentifier()
        {
            // Arrange
            var pidUriTemplateFlattened = new PidUriTemplateFlattenedBuilder().GenerateSampleData().Build();
            var resource           = CreateResource(null, pidUriTemplateFlattened.Id);
            var expectedidentifier = "https://pid.bayer.com/DINOS/4113458a-12a2-4f26-9ff7-1d8fb18b25ec";

            var consumerGroup = new ConsumerGroupBuilder()
                                .GenerateSampleData()
                                .WithId($"{Graph.Metadata.Constants.Entity.IdPrefix}{new Guid()}")
                                .WithPidUriTemplate(pidUriTemplateFlattened.Id)
                                .BuildResultDTO();

            _consumerGroupService.Setup(s => s.GetEntity(It.IsAny <string>())).Returns(consumerGroup);
            _pidUriTemplateService.Setup(t => t.GetFlatIdentifierTemplateById(It.IsAny <string>())).Returns(pidUriTemplateFlattened);
            _pidUriGenerationService.Setup(g => g.GenerateIdentifierFromTemplate(It.IsAny <PidUriTemplateFlattened>(), It.IsAny <Entity>())).Returns(expectedidentifier);

            SetupPidUriTemplateService();
            SetupPidUriGenerationService();

            EntityValidationFacade validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, consumerGroup.Id);

            // Act
            _validator.HasValidationResult(validationFacade, GetPidUriProperty(resource));

            // Assert
            Entity pidUri = validationFacade.RequestResource.Properties.SingleOrDefault(p => p.Key == Graph.Metadata.Constants.EnterpriseCore.PidUri).Value[0];

            Assert.Equal(expectedidentifier, pidUri.Id);
        }
        public void InternalHasValidationResult_ForbiddenConsumerGroup()
        {
            // Arrange
            var deprecatedCG = new ConsumerGroupBuilder()
                               .GenerateSampleData()
                               .WithId($"https://pid.bayer.com/kos/{Guid.NewGuid()}")
                               .WithLifecycleStatus(Graph.Metadata.Constants.ConsumerGroup.LifecycleStatus.Deprecated)
                               .BuildResultDTO();
            var activeCG = new ConsumerGroupBuilder()
                           .GenerateSampleData()
                           .WithId($"https://pid.bayer.com/kos/{Guid.NewGuid()}")
                           .BuildResultDTO();

            IList <ConsumerGroupResultDTO> activeConsumerGroups = new List <ConsumerGroupResultDTO> {
                activeCG
            };

            _consumerGroupServiceMock.Setup(m => m.GetActiveEntities()).Returns(activeConsumerGroups).Verifiable();

            var resource         = CreateResourceWithConsumerGroup(deprecatedCG.Id);
            var validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null);

            //// Act
            _validator.HasValidationResult(validationFacade, GetConsumerGroupProperty(resource));

            //// Assert
            Assert.Contains(Graph.Metadata.Constants.Resource.HasConsumerGroup, validationFacade.RequestResource.Properties);
            Assert.Equal(1, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.HasConsumerGroup].Count);
            Assert.Equal(deprecatedCG.Id, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.HasConsumerGroup][0]);
            Assert.Equal(1, validationFacade.ValidationResults.Count);
        }
        public void InternalHasValidationResult_CreateValidationResult_ForbiddenTemplate()
        {
            // Arrange
            var pidUriTemplateFlattened = new PidUriTemplateFlattenedBuilder().GenerateSampleData().Build();
            var resource        = CreateResource(null, pidUriTemplateFlattened.Id);
            var expectedMessage = RegistrationService.Common.Constants.Messages.PidUriTemplate.ForbiddenTemplate;

            var consumerGroup = new ConsumerGroupBuilder()
                                .GenerateSampleData()
                                .WithPidUriTemplate("https://pid.bayer.com/kos/19050#9e8fb007-9cfd-4cf9-9084-2412cd999999")
                                .BuildResultDTO();

            _consumerGroupService.Setup(s => s.GetEntity(It.IsAny <string>())).Returns(consumerGroup);
            _pidUriTemplateService.Setup(t => t.GetFlatIdentifierTemplateById(It.IsAny <string>())).Returns(pidUriTemplateFlattened);

            SetupPidUriTemplateService();
            SetupPidUriGenerationService();

            EntityValidationFacade validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null);

            // Act
            _validator.HasValidationResult(validationFacade, GetPidUriProperty(resource));

            // Assert
            AssertValidationResult(validationFacade, expectedMessage);
        }
        public void InternalHasValidationResult_CreateValidationResult_MatchTemplateFailed()
        {
            // Arrange
            var pidUriTemplateFlattened = new PidUriTemplateFlattenedBuilder().GenerateSampleData().Build();
            var resource        = CreateResource("https://pid.bayer.com/Indigo/4113458a-12a2-4f26-9ff7-1d8fb18b25ec", pidUriTemplateFlattened.Id);
            var expectedMessage = RegistrationService.Common.Constants.Messages.PidUriTemplate.MatchedFailed;

            var consumerGroup = new ConsumerGroupBuilder()
                                .GenerateSampleData()
                                .BuildResultDTO();

            _consumerGroupService.Setup(s => s.GetEntity(It.IsAny <string>())).Returns(consumerGroup);
            _pidUriTemplateService.Setup(t => t.GetFlatIdentifierTemplateById(It.IsAny <string>())).Returns(pidUriTemplateFlattened);

            SetupPidUriTemplateService();
            SetupPidUriGenerationService();

            EntityValidationFacade validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null);

            // Act
            _validator.HasValidationResult(validationFacade, GetPidUriProperty(resource));

            // Assert
            AssertValidationResult(validationFacade, expectedMessage);
        }
        public void InternalHasValidationResult_CreateValidationResult_IdentifierMatchForbiddenTemplate()
        {
            // Arrange
            var resource                = CreateResource("https://pid.bayer.com/DINOS/4113458a-12a2-4f26-9ff7-1d8fb18b25ec");
            var expectedMessage         = Graph.Metadata.Constants.Messages.Identifier.MatchForbiddenTemplate;
            var pidUriTemplateFlattened = new PidUriTemplateFlattenedBuilder().GenerateSampleData().Build();

            var consumerGroup = new ConsumerGroupBuilder()
                                .GenerateSampleData()
                                .WithPidUriTemplate("https://pid.bayer.com/kos/19050#9e8fb007-9cfd-4cf9-9084-2412cd999999")
                                .BuildResultDTO();

            _consumerGroupService.Setup(s => s.GetEntity(It.IsAny <string>())).Returns(consumerGroup);

            SetupPidUriTemplateService(new List <PidUriTemplateFlattened>()
            {
                pidUriTemplateFlattened
            });
            SetupPidUriGenerationService();

            EntityValidationFacade validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null);

            // Act
            _validator.HasValidationResult(validationFacade, GetPidUriProperty(resource));

            // Assert
            AssertValidationResult(validationFacade, expectedMessage);
        }
        public void InternalHasValidationResult_CreateValidationResult_IdentifierMatchValidTemplate()
        {
            // Arrange
            var resource = CreateResource("https://pid.bayer.com/DINOS/4113458a-12a2-4f26-9ff7-1d8fb18b25ec", "https://pid.bayer.com/kos/19050#14d9eeb8-d85d-446d-9703-3a0f43482f5a");

            var pidUriTemplateFlattened = new PidUriTemplateFlattenedBuilder().GenerateSampleData().Build();

            var consumerGroup = new ConsumerGroupBuilder()
                                .GenerateSampleData()
                                .WithId($"{Graph.Metadata.Constants.Entity.IdPrefix}{new Guid()}")
                                .BuildResultDTO();

            _consumerGroupService.Setup(s => s.GetEntity(It.IsAny <string>())).Returns(consumerGroup);

            SetupPidUriTemplateService(new List <PidUriTemplateFlattened>()
            {
                pidUriTemplateFlattened
            });
            SetupPidUriGenerationService();

            EntityValidationFacade validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, consumerGroup.Id);

            // Act
            _validator.HasValidationResult(validationFacade, GetPidUriProperty(resource));

            // Assert
            Entity identifier = validationFacade.RequestResource.Properties[Graph.Metadata.Constants.EnterpriseCore.PidUri].FirstOrDefault();

            Assert.Contains(Graph.Metadata.Constants.Identifier.HasUriTemplate, identifier.Properties);
            var template = identifier.Properties[Graph.Metadata.Constants.Identifier.HasUriTemplate];

            Assert.Contains("https://pid.bayer.com/kos/19050#14d9eeb8-d85d-446d-9703-3a0f43482f5a", template);
        }
示例#8
0
        public async void UpdateDefaultConsumerGroup_Should_InvokeUserRepositoryUpdate_Once()
        {
            var cg = new ConsumerGroupBuilder().WithUri(new Uri("http://meh#234#433/213")).BuildDto();
            await _userService.UpdateDefaultConsumerGroupAsync(_user.Id, cg);

            _mockUserRepository.Verify(x => x.GetOneAsync(_user.Id, It.IsAny <bool>()), Times.Once);
            _mockConsumerGroupService.Verify(x => x.GetOne(It.IsAny <int>()), Times.Never);
            _mockConsumerGroupService.Verify(x => x.GetOne(It.IsAny <Uri>()), Times.Once);
            _mockUserRepository.Verify(x => x.Update(It.IsAny <User>()), Times.Once);
        }
        public void DeleteByUri_Should_ThrowException_IfUriDoesNotExist()
        {
            var nonExistingUri = new Uri("http://non.exising.uri");
            var dto            = new ConsumerGroupBuilder().WithUri(nonExistingUri).BuildDto();

            _mockConsumerGroupRepository.Setup(x => x.GetOne(dto.Uri))
            .Throws(new EntityNotFoundException());

            Assert.Throws <EntityNotFoundException>(() => _consumerGroupService.Delete(dto));
            _mockConsumerGroupRepository.Verify(x => x.Delete(It.IsAny <ConsumerGroup>()), Times.Never);
        }
        private async Task CreateCg(Uri cgUri)
        {
            var cgToCreate     = new ConsumerGroupBuilder().WithUri(cgUri).BuildDto();
            var requestContent = BuildJsonHttpContent(cgToCreate);

            var response = await Client.PostAsync(CG_PATH, requestContent);

            var stringResponse = await response.Content.ReadAsStringAsync();

            _output.WriteLine("CreateCG: " + stringResponse + "\n");
            response.EnsureSuccessStatusCode();

            var cgs = JsonConvert.DeserializeObject <ConsumerGroup>(stringResponse);

            Assert.Equal(HttpStatusCode.Created, response.StatusCode);
            Assert.NotNull(cgs);
            Assert.NotEqual(0, cgs.Id);
            Assert.Equal(cgUri, cgs.Uri);
        }
        private async Task AssignCgToUser(Uri cgUri, Guid userId)
        {
            var cgDto          = new ConsumerGroupBuilder().WithUri(cgUri).BuildDto();
            var requestContent = BuildJsonHttpContent(cgDto);

            var response = await Client.PutAsync($"{USER_PATH}/{userId}/defaultConsumerGroup", requestContent);

            var stringResponse = await response.Content.ReadAsStringAsync();

            _output.WriteLine("AssignCgToUser: "******"\n");
            response.EnsureSuccessStatusCode();
            var responseUser = JsonConvert.DeserializeObject <User>(stringResponse);

            Assert.NotNull(responseUser);
            Assert.Equal(cgUri.AbsoluteUri, responseUser.DefaultConsumerGroup.Uri.AbsoluteUri);

            var cg = await GetFromUser <ConsumerGroup>(userId, "defaultConsumerGroup");

            Assert.NotNull(cg);
        }
示例#12
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.UseEnvironment("Testing");

            builder.ConfigureAppConfiguration((context, conf) =>
            {
                conf.AddJsonFile(AppDomain.CurrentDomain.BaseDirectory + "appsettings.Testing.json");
                conf.AddUserSecrets <Startup>();
            });

            builder.ConfigureTestServices((services) =>
            {
                var configuration = services.BuildServiceProvider().GetRequiredService <IConfiguration>();
                services.AddRepositoryModules(configuration);
                services.AddServiceModules(configuration);

                services.AddMemoryCacheModule(configuration, JsonSerializerSettings.GetSerializerSettings());

                var testGraphsMapping = configuration.GetSection("FunctionalTests:Graphs").Get <Dictionary <string, string> >();
                var fakeRepo          = new FakeTripleStoreRepository(testGraphsMapping);

                services.RemoveAll(typeof(IRemoteRegistrationService));
                services.AddSingleton <IRemoteRegistrationService>(provider =>
                {
                    var mockRegServices = new Mock <IRemoteRegistrationService>();
                    var cgs             = new ConsumerGroupBuilder().GenerateSampleDataList();
                    mockRegServices.Setup(s => s.GetConsumerGroups()).ReturnsAsync(cgs);
                    return(mockRegServices.Object);
                });

                services.RemoveAll(typeof(ITripleStoreRepository));
                services.AddSingleton <ITripleStoreRepository>(provider =>
                {
                    return(fakeRepo);
                });
            });
        }
        private void SetUpRemoteRegistrationService()
        {
            var cgs = new ConsumerGroupBuilder().GenerateSampleDataList();

            _mockRegService.Setup(s => s.GetConsumerGroups()).ReturnsAsync(cgs);
        }
示例#14
0
 public async Task Delete_Returns_NotFound_IfConsumerGroupDoesNotExist()
 {
     var nonExistingCg = new ConsumerGroupBuilder().WithUri(new Uri("http://incredibleUri2020/")).BuildDto();
     await _api.DeleteWithContent_ShouldReturn_NotFound_IfEntityDoesNotExist(PATH, _api.BuildJsonHttpContent(nonExistingCg));
 }