diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataSourcesUiDefinitionControllerIntegrationTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataSourcesUiDefinitionControllerIntegrationTests.groovy index 9d804ad57..2695ac803 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataSourcesUiDefinitionControllerIntegrationTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataSourcesUiDefinitionControllerIntegrationTests.groovy @@ -1,5 +1,6 @@ package edu.internet2.tier.shibboleth.admin.ui.controller +import org.springframework.beans.factory.BeanInitializationException import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest import org.springframework.boot.test.web.client.TestRestTemplate @@ -23,7 +24,6 @@ class MetadataSourcesUiDefinitionControllerIntegrationTests extends Specificatio def "GET Metadata Sources UI definition schema"() { when: 'GET request is made for metadata source UI definition schema' - def result = this.restTemplate.getForEntity(RESOURCE_URI, Object) then: "Request completed successfully" @@ -33,7 +33,7 @@ class MetadataSourcesUiDefinitionControllerIntegrationTests extends Specificatio def "GET Malformed Metadata Sources UI definition schema"() { when: 'GET request is made for malformed metadata source UI definition schema' - configureMalformedJsonInput() + configureMalformedJsonInput(simulateApplicationStartup { false }) def result = this.restTemplate.getForEntity(RESOURCE_URI, Object) then: "Request results in HTTP 500" @@ -42,8 +42,32 @@ class MetadataSourcesUiDefinitionControllerIntegrationTests extends Specificatio result.body.sourceUiSchemaDefinitionFile } - private configureMalformedJsonInput() { + def "Malformed Metadata Sources UI definition schema is detected during application start up"() { + when: 'Application is starting up and malformed JSON schema is detected' + configureMalformedJsonInput(simulateApplicationStartup { true }) + + then: + def ex = thrown(BeanInitializationException) + ex.message.contains('An error is detected during JSON parsing =>') + ex.message.contains('Offending resource =>') + + } + + private configureMalformedJsonInput(boolean simulateApplicationStartup) { controllerUnderTest.metadataSourcesUiSchemaLocation = 'classpath:metadata-sources-ui-schema_MALFORMED.json' - controllerUnderTest.init() + try { + controllerUnderTest.init() + } + catch (Exception e) { + if (simulateApplicationStartup) { + throw e + } + } + + } + + //Just for the nicer, readable, DSL-like + private static boolean simulateApplicationStartup(Closure booleanFlagSupplier) { + booleanFlagSupplier() } } \ No newline at end of file