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); }
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); }
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); }
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)); }