public void InternalHasValidationResult_SingleKeywordAlreadyInCorrectFormat() { const string keyword = "https://pid.bayer.com/kos/19050#11111111-1111-1111-1111-111111111111"; const string type = COLID.Graph.Metadata.Constants.Keyword.Type; var entityResult = new BaseEntityResultCTO() { Entity = new BaseEntityResultDTO() { Id = keyword } }; string createdKeywordId; // Arrange _entityServiceMock.Setup(m => m.CheckIfPropertyValueExists(_labelUri, It.IsAny <string>(), type, out createdKeywordId)).Returns(true).Verifiable(); _entityServiceMock.Setup(m => m.CreateEntity(It.IsAny <BaseEntityRequestDTO>())).ReturnsAsync(entityResult).Verifiable(); var resource = CreateResourceWithKeyword(keyword); var validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null); // Act _validator.HasValidationResult(validationFacade, GetKeywordProperty(resource)); // Assert Assert.Contains(Graph.Metadata.Constants.Resource.Keyword, validationFacade.RequestResource.Properties); Assert.Single(validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword]); Assert.Equal(keyword, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword].First()); Assert.Equal(0, validationFacade.ValidationResults.Count); _entityServiceMock.Verify(m => m.CheckIfPropertyValueExists(_labelUri, keyword, type, out createdKeywordId), Times.Never); _entityServiceMock.Verify(m => m.CreateEntity(It.IsAny <BaseEntityRequestDTO>()), Times.Never); }
public void InternalHasValidationResult_OneKeywordNotUrlFormatAndExists(string validKeywordId, string validKeyword) { const string type = COLID.Graph.Metadata.Constants.Keyword.Type; var keywordList = new List <dynamic>() { validKeywordId, validKeyword }; string existingKeywordId = "https://pid.bayer.com/kos/19050#33333333-3333-3333-3333-333333333333"; const bool keywordExists = true; // Arrange _entityServiceMock.Setup(m => m.CheckIfPropertyValueExists(_labelUri, It.IsAny <string>(), type, out existingKeywordId)).Returns(keywordExists).Verifiable(); _entityServiceMock.Setup(m => m.CreateEntity(It.IsAny <BaseEntityRequestDTO>())).ReturnsAsync(It.IsAny <BaseEntityResultCTO>()).Verifiable(); var resource = CreateResourceWithKeyword(keywordList); var validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null); // Act _validator.HasValidationResult(validationFacade, GetKeywordProperty(resource)); // Assert Assert.Contains(Graph.Metadata.Constants.Resource.Keyword, validationFacade.RequestResource.Properties); Assert.Equal(2, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword].Count); Assert.Contains(validKeywordId, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword]); Assert.Contains(existingKeywordId, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword]); Assert.DoesNotContain(validKeyword, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword]); Assert.Equal(0, validationFacade.ValidationResults.Count); string val; _entityServiceMock.Verify(m => m.CheckIfPropertyValueExists(_labelUri, validKeywordId, type, out val), Times.Never); _entityServiceMock.Verify(m => m.CheckIfPropertyValueExists(_labelUri, validKeyword, type, out existingKeywordId), Times.Once); _entityServiceMock.Verify(m => m.CreateEntity(It.IsAny <BaseEntityRequestDTO>()), Times.Never); }
public void InternalHasValidationResult_NoKeywordInResource() { // Arrange string createdKeywordId; _keywordServiceMock.Setup(m => m.CheckIfKeywordExists(It.IsAny <string>(), out createdKeywordId)).Returns(true).Verifiable(); _keywordServiceMock.Setup(m => m.CreateKeyword(It.IsAny <string>())).Returns(It.IsAny <string>()).Verifiable(); var resource = new ResourceBuilder() .GenerateSampleData() .WithPidUri($"https://pid.bayer.com/kos/0308eeb4-ed33-43b8-abf7-599a57cbd718") .Build(); resource.Properties.Remove(Graph.Metadata.Constants.Resource.Keyword); var validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null); // Act _validator.HasValidationResult(validationFacade, GetKeywordProperty(resource)); // Assert Assert.DoesNotContain(Graph.Metadata.Constants.Resource.Keyword, validationFacade.RequestResource.Properties); Assert.Equal(0, validationFacade.ValidationResults.Count); _keywordServiceMock.Verify(m => m.CheckIfKeywordExists(It.IsAny <string>(), out createdKeywordId), Times.Never); _keywordServiceMock.Verify(m => m.CreateKeyword(It.IsAny <string>()), Times.Never); }
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); }
protected override void InternalHasValidationResult(EntityValidationFacade validationFacade, KeyValuePair <string, List <dynamic> > properties) { // If there are already critical errors that apply to the property, no further validation is performed. if (validationFacade.ValidationResults.Any(v => v.Node == validationFacade.RequestResource.Id && v.Path == properties.Key && v.ResultSeverity == ValidationResultSeverity.Violation)) { return; } // Only consumer groups that are active and for which the current user has the appropriate rights will be returned. // Therefore, the next step checks if a forbidden consumer group is used. var activeConsumerGroups = _consumerGroupService.GetActiveEntities(); foreach (var propertyValue in properties.Value) { if (propertyValue is null) { continue; } if (activeConsumerGroups.All(cg => cg.Id != propertyValue)) { validationFacade.ValidationResults.Add(new ValidationResultProperty(validationFacade.RequestResource.Id, properties.Key, propertyValue, string.Format(Common.Constants.Messages.Resource.ForbiddenConsumerGroup, propertyValue), ValidationResultSeverity.Violation)); } } ; }
protected override void InternalHasValidationResult(EntityValidationFacade validationFacade, KeyValuePair <string, List <dynamic> > properties) { // If there are already critical errors that apply to the property, no further validation is performed. if (properties.Value == null || validationFacade.ValidationResults.Any(v => v.Node == validationFacade.RequestResource.Id && v.Path == properties.Key && v.ResultSeverity == ValidationResultSeverity.Violation)) { return; } foreach (var propertyValue in properties.Value) { if (propertyValue is Entity propertyEntity) { if (!_attachmentService.Exists(propertyEntity.Id.ToString())) { var validationResultProperty = new ValidationResultProperty(validationFacade.RequestResource.Id, properties.Key, propertyEntity.Id, string.Format(Common.Constants.Messages.Attachment.NotExists, propertyEntity.Id), ValidationResultSeverity.Violation); validationFacade.ValidationResults.Add(validationResultProperty); } } } ; }
public void InternalHasValidationResult_OneKeywordNotUrlFormatAndNotExists(string validKeywordId, string invalidKeywordId) { var keywordList = new List <dynamic>() { validKeywordId, invalidKeywordId }; string existingKeywordId = string.Empty; const bool keywordExists = false; const string createdKeywordId = "https://pid.bayer.com/kos/19050#44444444-4444-4444-4444-444444444444"; // Arrange _keywordServiceMock.Setup(m => m.CheckIfKeywordExists(It.IsAny <string>(), out existingKeywordId)).Returns(keywordExists).Verifiable(); _keywordServiceMock.Setup(m => m.CreateKeyword(It.IsAny <string>())).Returns(createdKeywordId).Verifiable(); var resource = CreateResourceWithKeyword(keywordList); var validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null); // Act _validator.HasValidationResult(validationFacade, GetKeywordProperty(resource)); // Assert Assert.Contains(Graph.Metadata.Constants.Resource.Keyword, validationFacade.RequestResource.Properties); Assert.Equal(2, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword].Count); Assert.Contains(validKeywordId, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword]); Assert.Contains(createdKeywordId, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword]); Assert.DoesNotContain(invalidKeywordId, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword]); Assert.Equal(0, validationFacade.ValidationResults.Count); string val; _keywordServiceMock.Verify(m => m.CheckIfKeywordExists(validKeywordId, out val), Times.Never); _keywordServiceMock.Verify(m => m.CheckIfKeywordExists(invalidKeywordId, out existingKeywordId), Times.Once); _keywordServiceMock.Verify(m => m.CreateKeyword(validKeywordId), Times.Never); _keywordServiceMock.Verify(m => m.CreateKeyword(invalidKeywordId), Times.Once); }
public void InternalHasValidationResult_CustomIdentifier_Successfully() { // Arrange var resource = CreateResource("https://pid.bayer.com/custom-valid-identifer"); var pidUriTemplateFlattened = new PidUriTemplateFlattenedBuilder().GenerateSampleData().Build(); SetupPidUriTemplateService(new List <PidUriTemplateFlattened>() { pidUriTemplateFlattened }); SetupPidUriGenerationService(); EntityValidationFacade validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null); // Act _validator.HasValidationResult(validationFacade, GetPidUriProperty(resource)); // Assert Assert.Contains(Graph.Metadata.Constants.EnterpriseCore.PidUri, validationFacade.RequestResource.Properties); Assert.Equal(0, validationFacade.ValidationResults.Count); Entity pidUri = validationFacade.RequestResource.Properties.SingleOrDefault(p => p.Key == Graph.Metadata.Constants.EnterpriseCore.PidUri).Value[0]; Assert.Equal("https://pid.bayer.com/custom-valid-identifer", pidUri.Id); Assert.DoesNotContain(Graph.Metadata.Constants.Identifier.HasUriTemplate, pidUri.Properties); }
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_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 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); }
protected override void InternalHasValidationResult(EntityValidationFacade validationFacade, KeyValuePair <string, List <dynamic> > properties) { if (IsIgnoredProperty(validationFacade.ResourceCrudAction, properties)) { return; } foreach (var person in properties.Value) { try { bool exists = _remoteAppDataService.CheckPerson(person).GetAwaiter().GetResult(); if (!exists) { var metadataProperty = validationFacade.MetadataProperties.FirstOrDefault(m => m.Key == properties.Key); var criticalError = metadataProperty.IsTechnicalMetadataProperty() ? ValidationResultSeverity.Violation : ValidationResultSeverity.Warning; validationFacade.ValidationResults.Add(new ValidationResultProperty(validationFacade.RequestResource.Id, properties.Key, person, string.Format(Common.Constants.Messages.Person.PersonNotFound, person), criticalError)); continue; } } catch (ArgumentException) { continue; } } }
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_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); }
protected override void InternalHasValidationResult(EntityValidationFacade validationFacade, KeyValuePair <string, List <dynamic> > property) { var metadataProperty = validationFacade.MetadataProperties.FirstOrDefault(t => t.Properties.GetValueOrNull(Graph.Metadata.Constants.EnterpriseCore.PidUri, true) == property.Key); // No key check needed string range = metadataProperty?.Properties.GetValueOrNull(Graph.Metadata.Constants.Shacl.Range, true); var taxonomies = _taxonomyService.GetTaxonomiesAsPlainList(range); var taxonomiesDictionary = taxonomies.ToDictionary(t => t.Id, t => t); IList <dynamic> values = property.Value.ToList(); foreach (var taxonomy in taxonomies) { values = CheckParent(taxonomy, values, taxonomiesDictionary); } foreach (var value in values) { if (taxonomies.All(t => t != null && t.Id != value)) { validationFacade.ValidationResults.Add(new ValidationResultProperty(validationFacade.RequestResource.Id, property.Key, value, string.Format(Common.Constants.Messages.Taxonomy.InvalidSelection, value), ValidationResultSeverity.Violation)); } } validationFacade.RequestResource.Properties[property.Key] = values.ToList(); }
public void InternalHasValidationResult_MultipleKeywordsAlreadyInCorrectFormat() { var keywordList = new List <dynamic>() { "https://pid.bayer.com/kos/19050#11111111-1111-1111-1111-111111111111", "https://pid.bayer.com/kos/19050#22222222-2222-2222-2222-222222222222", }; string createdKeywordId; // Arrange _keywordServiceMock.Setup(m => m.CheckIfKeywordExists(It.IsAny <string>(), out createdKeywordId)).Returns(true).Verifiable(); _keywordServiceMock.Setup(m => m.CreateKeyword(It.IsAny <string>())).Returns(It.IsAny <string>()).Verifiable(); var resource = CreateResourceWithKeyword(keywordList); var validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null); // Act _validator.HasValidationResult(validationFacade, GetKeywordProperty(resource)); // Assert Assert.Contains(Graph.Metadata.Constants.Resource.Keyword, validationFacade.RequestResource.Properties); Assert.Equal(2, validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword].Count); Assert.Equal(keywordList[0], validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword][0]); Assert.Equal(keywordList[1], validationFacade.RequestResource.Properties[Graph.Metadata.Constants.Resource.Keyword][1]); Assert.Equal(0, validationFacade.ValidationResults.Count); _keywordServiceMock.Verify(m => m.CheckIfKeywordExists(It.IsAny <string>(), out createdKeywordId), Times.Never); _keywordServiceMock.Verify(m => m.CreateKeyword(It.IsAny <string>()), Times.Never); }
public void InternalHasValidationResult_CreateValidationResult_PersonNotExists(string author) { // Arrange var resource = CreateResource(author); var expectedMessage = string.Format(RegistrationService.Common.Constants.Messages.Person.PersonNotFound, author); SetupRemoteAppDataService(false); EntityValidationFacade validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null); // Act _validator.HasValidationResult(validationFacade, GetAuthorProperty(resource)); // Assert Assert.Contains(Graph.Metadata.Constants.Resource.Author, validationFacade.RequestResource.Properties); Assert.Equal(1, validationFacade.ValidationResults.Count); string currentAuthor = validationFacade.RequestResource.Properties.SingleOrDefault(p => p.Key == Graph.Metadata.Constants.Resource.Author).Value[0]; Assert.Equal(author, currentAuthor); var validationResult = validationFacade.ValidationResults.FirstOrDefault(); Assert.Equal(expectedMessage, validationResult.Message); Assert.Equal(ValidationResultSeverity.Violation, validationResult.ResultSeverity); }
public async void CreateResource_Success_WithPreviousVersion() { // Arrange var requestBuilder = new ResourceBuilder() .GenerateSampleData(); var request = requestBuilder.BuildRequestDto(); var resource = requestBuilder.Build(); request.HasPreviousVersion = Graph.Metadata.Constants.Entity.IdPrefix + Guid.NewGuid(); var resourceCto = new ResourcesCTO(null, null); var validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, resourceCto, request.HasPreviousVersion, _metadata, null); var preProcessServiceResult = Task.FromResult(new Tuple <ValidationResult, bool, EntityValidationFacade>(null, false, validationFacade)); _mockPreProcessService.Setup(t => t.ValidateAndPreProcessResource(It.IsAny <string>(), request, It.IsAny <ResourcesCTO>(), ResourceCrudAction.Create, It.IsAny <bool>(), It.IsAny <string>())).Returns(preProcessServiceResult); // Act var result = await _service.CreateResource(request); // Assert Assert.NotNull(result); _mockResourceRepo.Verify(t => t.Create(validationFacade.RequestResource, It.IsAny <IList <MetadataProperty> >()), Times.Once); _mockResourceLinkingService.Verify(t => t.LinkResourceIntoList(validationFacade.RequestResource.PidUri, It.IsAny <Uri>()), Times.Once); }
protected override void InternalHasValidationResult(EntityValidationFacade validationFacade, KeyValuePair <string, List <dynamic> > property) { // In any case the edit date will be overwritten with the current date. validationFacade.RequestResource.Properties[property.Key] = new List <dynamic>() { DateTime.UtcNow.ToString("o") }; }
private KeyValuePair <string, List <dynamic> > GetKeyValuePair(string key, EntityValidationFacade validationFacade) { if (!validationFacade.RequestResource.Properties.ContainsKey(key)) { return(new KeyValuePair <string, List <dynamic> >(key, new List <dynamic>())); } return(new KeyValuePair <string, List <dynamic> >(key, validationFacade.RequestResource.Properties[key])); }
/// <summary> /// While publishing a resource, ensure property is on the right resource /// </summary> private void UpdatePropertyFromRepositoryResource(string propertyName, EntityValidationFacade validationFacade) { var repoResource = validationFacade.ResourcesCTO.GetDraftOrPublishedVersion(); if (repoResource.Properties.TryGetValue(propertyName, out var values)) { validationFacade.RequestResource.Properties.AddOrUpdate(propertyName, values); } }
private void AssertValidationResult(EntityValidationFacade validationFacade, string expectedMessage) { Assert.Contains(Graph.Metadata.Constants.EnterpriseCore.PidUri, validationFacade.RequestResource.Properties); Assert.Equal(1, validationFacade.ValidationResults.Count); var validationResult = validationFacade.ValidationResults.FirstOrDefault(); Assert.Equal(expectedMessage, validationResult.Message); Assert.Equal(ValidationResultSeverity.Violation, validationResult.ResultSeverity); }
protected override void InternalHasValidationResult(EntityValidationFacade validationFacade, KeyValuePair <string, List <dynamic> > properties) { var newValue = validationFacade.ResourceCrudAction == ResourceCrudAction.Publish ? Graph.Metadata.Constants.Resource.ColidEntryLifecycleStatus.Published : Graph.Metadata.Constants.Resource.ColidEntryLifecycleStatus.Draft; // Setting life cycle status to current crud operation validationFacade.RequestResource.Properties[properties.Key] = new List <dynamic>() { newValue }; }
private void AssertValidationFacade(EntityValidationFacade validationFacade, string email) { Assert.Contains(Graph.Metadata.Constants.Resource.Author, validationFacade.RequestResource.Properties); Assert.Equal(0, validationFacade.ValidationResults.Count); var lastChangeUserValue = GetLastChangeUserProperty(validationFacade.RequestResource).Value; Assert.Single(lastChangeUserValue); Assert.Contains(lastChangeUserValue, u => u == email); }
public void InternalHasValidationResult_Failed_SingleKeywordIsNull() { const string keyword = null; // Arrange var resource = CreateResourceWithKeyword(keyword); var validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null); // Act AND ASSERT Assert.Throws <ArgumentNullException>(() => _validator.HasValidationResult(validationFacade, GetKeywordProperty(resource))); }
protected override void InternalHasValidationResult(EntityValidationFacade validationFacade, KeyValuePair <string, List <dynamic> > property) { if (!_userInfoService.HasApiToApiPrivileges()) { // Set user email as author validationFacade.RequestResource.Properties[property.Key] = new List <dynamic>() { _userInfoService.GetEmail() }; } }
public void Validate(string key, EntityValidationFacade validationFacade) { var validators = GetValidators(); foreach (var validator in validators) { validator.HasValidationResult(validationFacade, GetKeyValuePair(key, validationFacade)); } HandleOverwriteProperties(GetKeyValuePair(key, validationFacade), validationFacade); }
public void HasValidationResult(EntityValidationFacade validationFacade, KeyValuePair <string, List <dynamic> > property) { var metadataProperty = validationFacade.MetadataProperties.FirstOrDefault(t => t.Key == property.Key); if (metadataProperty == null || !IsMatch(property.Key, metadataProperty)) { return; } InternalHasValidationResult(validationFacade, property); }
protected override void InternalHasValidationResult(EntityValidationFacade validationFacade, KeyValuePair <string, List <dynamic> > properties) { var mainEndpoints = properties.Value; foreach (var endpoint in mainEndpoints) { if (endpoint.Properties.TryGetValue(Graph.Metadata.Constants.Resource.DistributionEndpoints.DistributionEndpointLifecycleStatus, out List <dynamic> lifecycleStatus) && lifecycleStatus.Any(s => s == Common.Constants.DistributionEndpoint.LifeCycleStatus.Deprecated)) { validationFacade.ValidationResults.Add(new ValidationResultProperty(endpoint.Id, Graph.Metadata.Constants.Resource.DistributionEndpoints.DistributionEndpointLifecycleStatus, null, Common.Constants.Messages.DistributionEndpoint.InvalidLifecycleStatus, ValidationResultSeverity.Violation)); } } }
public void InternalHasValidationResult_CreateValidationResult_ContainsEmptyPidUri(string pidUriString) { // Arrange var resource = CreateResource(pidUriString); EntityValidationFacade validationFacade = new EntityValidationFacade(ResourceCrudAction.Create, resource, null, null, _metadata, null); // Act _validator.HasValidationResult(validationFacade, GetPidUriProperty(resource)); // Assert Assert.DoesNotContain(Graph.Metadata.Constants.EnterpriseCore.PidUri, validationFacade.RequestResource.Properties); }