diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/DevConfig.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/DevConfig.groovy index 8db64fd67..2ed81b941 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/DevConfig.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/DevConfig.groovy @@ -15,6 +15,8 @@ import edu.internet2.tier.shibboleth.admin.ui.security.model.Role import edu.internet2.tier.shibboleth.admin.ui.security.model.User import edu.internet2.tier.shibboleth.admin.ui.security.repository.RoleRepository import edu.internet2.tier.shibboleth.admin.ui.security.repository.UserRepository +import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorService +import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorVersionService import edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Profile @@ -156,4 +158,10 @@ class DevConfig { it }) } + + @Profile('dev-ed-versioning') + @Bean + EntityDescriptorVersionService stubEntityDescriptorVersionService(EntityDescriptorService entityDescriptorService) { + return EntityDescriptorVersionService.stubImpl(entityDescriptorService) + } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/EntitiesVersioningConfiguration.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/EntitiesVersioningConfiguration.java new file mode 100644 index 000000000..5f1b64b46 --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/EntitiesVersioningConfiguration.java @@ -0,0 +1,15 @@ +package edu.internet2.tier.shibboleth.admin.ui.configuration; + +import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorService; +import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorVersionService; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class EntitiesVersioningConfiguration { + + //@Bean + EntityDescriptorVersionService entityDescriptorVersionService(EntityDescriptorService entityDescriptorService) { + //TODO create real impl when available + return null; + } +} diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/EntityDescriptorVersionService.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/EntityDescriptorVersionService.java index 5e1542ea2..da2910834 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/EntityDescriptorVersionService.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/EntityDescriptorVersionService.java @@ -4,6 +4,8 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.EntityDescriptorRepresentation; import edu.internet2.tier.shibboleth.admin.ui.domain.versioning.Version; +import java.time.LocalDateTime; +import java.util.Arrays; import java.util.List; /** @@ -14,4 +16,27 @@ public interface EntityDescriptorVersionService { List findVersionsForEntityDescriptor(String resourceId); EntityDescriptorRepresentation findSpecificVersionOfEntityDescriptor(String resourceId, String versionId); + + /* Factory method to return stub impl for dev and testing purposes */ + static EntityDescriptorVersionService stubImpl(final EntityDescriptorService entityDescriptorService) { + return new EntityDescriptorVersionService() { + @Override + public List findVersionsForEntityDescriptor(String resourceId) { + return Arrays.asList( + new Version("1", "kramer", LocalDateTime.now().minusDays(10)), + new Version("2", "newman", LocalDateTime.now().minusDays(5)) + ); + } + + @Override + public EntityDescriptorRepresentation findSpecificVersionOfEntityDescriptor(String resourceId, String versionId) { + EntityDescriptor ed = new EntityDescriptor(); + ed.setID("1"); + ed.setEntityID("http://versioning/stub"); + ed.setCreatedBy("kramer"); + ed.setCreatedDate(LocalDateTime.now().minusDays(10)); + return entityDescriptorService.createRepresentationFromDescriptor(ed); + } + }; + } } diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/TestEntityDescriptorVersioningConfiguration.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/TestEntityDescriptorVersioningConfiguration.groovy new file mode 100644 index 000000000..f3d1346e0 --- /dev/null +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/TestEntityDescriptorVersioningConfiguration.groovy @@ -0,0 +1,36 @@ +package edu.internet2.tier.shibboleth.admin.ui.configuration + +import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.EntityDescriptorRepresentation +import edu.internet2.tier.shibboleth.admin.ui.domain.versioning.Version +import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorService +import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorVersionService +import edu.internet2.tier.shibboleth.admin.ui.util.TestObjectGenerator +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration + +import java.time.LocalDateTime + +@Configuration +class TestEntityDescriptorVersioningConfiguration { + + @Autowired + EntityDescriptorService entityDescriptorService + + @Bean + EntityDescriptorVersionService stubEntityDescriptorVersionService() { + return new EntityDescriptorVersionService() { + @Override + List findVersionsForEntityDescriptor(String resourceId) { + return [new Version(id: '1', creator: 'kramer', date: LocalDateTime.now().minusDays(3)), + new Version(id: '2', creator: 'newman', date: LocalDateTime.now())] + } + + @Override + EntityDescriptorRepresentation findSpecificVersionOfEntityDescriptor(String resourceId, String versionId) { + return entityDescriptorService.createRepresentationFromDescriptor(new TestObjectGenerator().buildEntityDescriptor()) + } + } + } + +} diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImplTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImplTests.groovy index b0626d431..eeb22048e 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImplTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImplTests.groovy @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import edu.internet2.tier.shibboleth.admin.ui.ShibbolethUiApplication import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration import edu.internet2.tier.shibboleth.admin.ui.configuration.CustomPropertiesConfiguration +import edu.internet2.tier.shibboleth.admin.ui.configuration.TestEntityDescriptorVersioningConfiguration import edu.internet2.tier.shibboleth.admin.ui.domain.EntityDescriptor import edu.internet2.tier.shibboleth.admin.ui.domain.SPSSODescriptor import edu.internet2.tier.shibboleth.admin.ui.domain.XSAny @@ -40,7 +41,7 @@ import org.xmlunit.diff.ElementSelectors import spock.lang.Ignore import spock.lang.Specification -@ContextConfiguration(classes=[CoreShibUiConfiguration, CustomPropertiesConfiguration]) +@ContextConfiguration(classes=[CoreShibUiConfiguration, CustomPropertiesConfiguration, TestEntityDescriptorVersioningConfiguration]) @SpringBootTest(classes = ShibbolethUiApplication.class, webEnvironment = SpringBootTest.WebEnvironment.NONE) @PropertySource("classpath:application.yml") class JPAEntityDescriptorServiceImplTests extends Specification {