diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java index 0062c9def..4dae0762b 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java @@ -38,7 +38,7 @@ public class MetadataResolver extends AbstractAuditable { @JsonProperty("@type") @Transient - String type; + String type = "BaseMetadataResolver"; @Column(unique = true) private String name; diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy new file mode 100644 index 000000000..80c6fe52e --- /dev/null +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy @@ -0,0 +1,81 @@ +package edu.internet2.tier.shibboleth.admin.ui.controller + +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.SerializationFeature +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule +import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.DynamicHttpMetadataResolver +import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository +import org.opensaml.saml.metadata.resolver.MetadataResolver +import org.opensaml.saml.metadata.resolver.impl.FilesystemMetadataResolver +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.boot.test.context.TestConfiguration +import org.springframework.boot.test.web.client.TestRestTemplate +import org.springframework.context.annotation.Bean +import org.springframework.test.annotation.DirtiesContext +import org.springframework.test.context.ActiveProfiles + +import spock.lang.Specification + +import javax.persistence.EntityManager + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ActiveProfiles("no-auth") +@DirtiesContext(methodMode = DirtiesContext.MethodMode.BEFORE_METHOD) +class MetadataResolversControllerIntegrationTests extends Specification { + + @Autowired + private TestRestTemplate restTemplate + + @Autowired + MetadataResolverRepository metadataResolverRepository + + @Autowired + EntityManager entityManager + + ObjectMapper mapper + + def setup() { + mapper = new ObjectMapper() + mapper.registerModule(new JavaTimeModule()) + mapper.enable(SerializationFeature.INDENT_OUTPUT) + } + + def "GET empty /api/MetadataResolvers"() { + when: + def result = this.restTemplate.getForEntity("/api/MetadataResolvers", String) + def returnedResolvers = mapper.readValue(result.body, + edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver[]) + + then: + result.statusCodeValue == 200 + returnedResolvers.size() == 0 + } + + def "GET one DynamicHttpMetadataResolver /api/MetadataResolvers"() { + given: + def resolver = new DynamicHttpMetadataResolver().with { + it.name = 'Test DynamicHttpMetadataResolver' + it + } + metadataResolverRepository.save(resolver) + + when: + def result = this.restTemplate.getForEntity("/api/MetadataResolvers", String) + def returnedResolvers = mapper.readValue(result.body, + edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver[]) + + then: + result.statusCodeValue == 200 + returnedResolvers.size() == 1 + returnedResolvers[0] instanceof DynamicHttpMetadataResolver + } + + @TestConfiguration + static class Config { + @Bean + MetadataResolver metadataResolver() { + new FilesystemMetadataResolver(new File('fake')) + } + } +} diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/MetadataResolverRepositoryTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/MetadataResolverRepositoryTests.groovy index 2204d4d19..0d4ffd64a 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/MetadataResolverRepositoryTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/MetadataResolverRepositoryTests.groovy @@ -49,7 +49,7 @@ class MetadataResolverRepositoryTests extends Specification { metadataResolverRepository.save(mdr) then: - basicPersistenceOfResolverIsCorrectFor { it instanceof DynamicHttpMetadataResolver } + basicPersistenceOfResolverIsCorrectFor { it instanceof MetadataResolver } } def "SHIBUI-553"() {