private void createNewPropertyDescriptor(ForeignableOwner owner, PropertyDescriptorEntity descriptor, AbstractContext abstractContext, List<PropertyTagEntity> tags) { descriptor.setOwner(owner); abstractContext.addPropertyDescriptor(descriptor); entityManager.persist(descriptor); propertyTagEditingService.updateTags(tags, descriptor); entityManager.persist(abstractContext); }
private void saveExistingPropertyDescriptor(PropertyDescriptorEntity descriptor, List<PropertyTagEntity> tags, ResourceTypeEntity resourceType) { PropertyDescriptorEntity oldDescriptor = entityManager.find(PropertyDescriptorEntity.class, descriptor.getId()); List<Integer> encryptedPropertyIds = new ArrayList<>(); if (oldDescriptor.isEncrypt()) { encryptedPropertyIds.add(oldDescriptor.getId()); } PropertyDescriptorEntity mergedDescriptor = entityManager.merge(descriptor); propertyTagEditingService.updateTags(tags, mergedDescriptor); boolean canDecrypt = false; // decryption required - check permission if (!mergedDescriptor.isEncrypt() && encryptedPropertyIds.contains(mergedDescriptor.getId())) { // context? canDecrypt = permissionService.hasPermission(Permission.RESOURCETYPE_PROPERTY_DECRYPT, null, Action.ALL, null, resourceType); } manageChangeOfEncryptedPropertyDescriptor(mergedDescriptor, encryptedPropertyIds, canDecrypt); }
private void saveExistingPropertyDescriptor(PropertyDescriptorEntity descriptor, List<PropertyTagEntity> tags, ResourceEntity resource) { PropertyDescriptorEntity oldDescriptor = entityManager.find(PropertyDescriptorEntity.class, descriptor.getId()); List<Integer> encryptedPropertyIds = new ArrayList<>(); if (oldDescriptor.isEncrypt()) { encryptedPropertyIds.add(oldDescriptor.getId()); } PropertyDescriptorEntity mergedDescriptor = entityManager.merge(descriptor); propertyTagEditingService.updateTags(tags, mergedDescriptor); boolean canDecrypt = false; // decryption required - check permission if (!mergedDescriptor.isEncrypt() && encryptedPropertyIds.contains(mergedDescriptor.getId())) { // context? canDecrypt = permissionService.hasPermission(Permission.RESOURCE_PROPERTY_DECRYPT, null, Action.ALL, resource.getResourceGroup(), null); } manageChangeOfEncryptedPropertyDescriptor(mergedDescriptor, encryptedPropertyIds, canDecrypt); }
propertyTagEditingService.updateTags(tags, result);
@Test public void savePropertyDescriptorForOwnerWhenDescriptorIdIsNotNullAndSameOwnerShouldSavePropertyDescriptor() throws AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; AbstractContext abstractContextMock = mock(AbstractContext.class); PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(1).withOwner(changingOwner).build(); List<PropertyTagEntity> tags = new ArrayList<>(); when(propertyValidationServiceMock.isValidTechnicalKey(descriptor.getPropertyName())).thenReturn(true); Assert.assertNotNull(descriptor.getId()); // mock (implicit verify for merge) merging of descriptor PropertyDescriptorEntity mergedPropertyDescriptorMock = mock(PropertyDescriptorEntity.class); when(entityManagerMock.merge(descriptor)).thenReturn(mergedPropertyDescriptorMock); // mocking the manageChangeOfEncryptedPropertyDescriptor when(entityManagerMock.find(PropertyDescriptorEntity.class, descriptor.getId())).thenReturn(descriptor); when(entityManagerMock.createQuery("select p from PropertyEntity p where p.descriptor=:descriptor", PropertyEntity.class)).thenReturn(mock(TypedQuery.class)); ResourceEntity resourceEntityMock = mock(ResourceEntity.class); // when service.savePropertyDescriptorForOwner(changingOwner, abstractContextMock, descriptor, tags, resourceEntityMock); // then verify(propertyTagEditingServiceMock).updateTags(tags, mergedPropertyDescriptorMock); }
@Test public void savePropertyDescriptorForOwnerWhenDescriptorIdIsNullShouldCreateNewPropertyDescriptorForOwner() throws AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; AbstractContext abstractContextMock = mock(AbstractContext.class); PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().build(); List<PropertyTagEntity> tags = new ArrayList<>(); ResourceEntity resourceEntityMock = mock(ResourceEntity.class); when(propertyValidationServiceMock.isValidTechnicalKey(descriptor.getPropertyName())).thenReturn(true); Assert.assertNull(descriptor.getId()); // when service.savePropertyDescriptorForOwner(changingOwner, abstractContextMock, descriptor, tags, resourceEntityMock); // then verify(abstractContextMock).addPropertyDescriptor(descriptor); verify(entityManagerMock).persist(descriptor); verify(propertyTagEditingServiceMock).updateTags(tags, descriptor); verify(entityManagerMock).persist(abstractContextMock); }
@Test public void savePropertyDescriptorForOwnerWhenDescriptorIdIsNotNullNoForeignableFieldsChangedButDifferentOwnerShouldSavePropertyDescriptor() throws AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; AbstractContext abstractContextMock = mock(AbstractContext.class); PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(1).withOwner(ForeignableOwner.MAIA).build(); List<PropertyTagEntity> tags = new ArrayList<>(); when(propertyValidationServiceMock.isValidTechnicalKey(descriptor.getPropertyName())).thenReturn(true); Assert.assertNotNull(descriptor.getId()); // mock (implicit verify for merge) merging of descriptor PropertyDescriptorEntity mergedPropertyDescriptorMock = mock(PropertyDescriptorEntity.class); when(entityManagerMock.merge(descriptor)).thenReturn(mergedPropertyDescriptorMock); // mocking the manageChangeOfEncryptedPropertyDescriptor when(entityManagerMock.createQuery("select p from PropertyEntity p where p.descriptor=:descriptor", PropertyEntity.class)).thenReturn(mock(TypedQuery.class)); // return descriptor with same values (not changed fields) when(entityManagerMock.find(PropertyDescriptorEntity.class, descriptor.getId())).thenReturn(descriptor); ResourceEntity resourceEntityMock = mock(ResourceEntity.class); // when service.savePropertyDescriptorForOwner(changingOwner, abstractContextMock, descriptor, tags, resourceEntityMock); // then verify(propertyTagEditingServiceMock).updateTags(tags, mergedPropertyDescriptorMock); }
propertyTagEditingService.updateTags(tags,propertyTypeEntity);