Skip to content

Commit

Permalink
SHIBUI-1992
Browse files Browse the repository at this point in the history
removed initializefrombackupfile default
  • Loading branch information
chasegawa committed Jul 27, 2021
1 parent 42792ca commit 4b0b45b
Show file tree
Hide file tree
Showing 6 changed files with 188 additions and 166 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService {
'xsi:type': 'FileBackedHTTPMetadataProvider',
backingFile: resolver.backingFile,
metadataURL: resolver.metadataURL,
initializeFromBackupFile: !resolver.initializeFromBackupFile ?: null,
initializeFromBackupFile: resolver.initializeFromBackupFile,
backupFileInitNextRefreshDelay: resolver.backupFileInitNextRefreshDelay,
requireValidMetadata: !resolver.requireValidMetadata ?: null,
failFastInitialization: !resolver.failFastInitialization ?: null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public FileBackedHttpMetadataResolver() {

private String backingFile;

private Boolean initializeFromBackupFile = true;
private Boolean initializeFromBackupFile;

private String backupFileInitNextRefreshDelay;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,29 +35,29 @@ public class OpenSamlFileBackedHTTPMetadataResolver extends FileBackedHTTPMetada

public OpenSamlFileBackedHTTPMetadataResolver(ParserPool parserPool,
IndexWriter indexWriter,
FileBackedHttpMetadataResolver sourceResolver) throws ResolverException {
FileBackedHttpMetadataResolver sourceResolver) throws ResolverException {
super(HttpClients.createMinimal(), sourceResolver.getMetadataURL(), sourceResolver.getBackingFile());
this.indexWriter = indexWriter;
this.sourceResolver = sourceResolver;
this.delegate = new OpenSamlMetadataResolverDelegate();

this.setId(sourceResolver.getResourceId());

OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromHttpMetadataResolverAttributes(
this, sourceResolver.getHttpMetadataResolverAttributes());
OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromReloadableMetadataResolverAttributes(
this, sourceResolver.getReloadableMetadataResolverAttributes(), parserPool);
OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromHttpMetadataResolverAttributes(this,
sourceResolver.getHttpMetadataResolverAttributes());
OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromReloadableMetadataResolverAttributes(this,
sourceResolver.getReloadableMetadataResolverAttributes(), parserPool);

this.setBackupFile(placeholderResolverService()
.resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackingFile()));
this.setBackupFile(placeholderResolverService().resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackingFile()));
this.setBackupFileInitNextRefreshDelay(toMillis(placeholderResolverService()
.resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackupFileInitNextRefreshDelay())));

this.setInitializeFromBackupFile(sourceResolver.getInitializeFromBackupFile());
.resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackupFileInitNextRefreshDelay())));
if (sourceResolver.getInitializeFromBackupFile() != null) {
this.setInitializeFromBackupFile(sourceResolver.getInitializeFromBackupFile());
}

this.setMetadataFilter(new MetadataFilterChain());

//TODO: Where does this get set in OpenSAML land?
// TODO: Where does this get set in OpenSAML land?
// sourceResolver.getMetadataURL();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,157 +92,157 @@ class MetadataFiltersControllerIntegrationTests extends Specification {
createRequestHttpEntityFor { JsonOutput.toJson(existingFilterMap) }, String)

then:
updatedResultFromPUT.statusCode.value() == 200
updatedResultFromPUT.statusCode.value() == 200
}

def "PUT EntityAttributesFilter and update it"() {
given: 'MetadataResolver with attached entity attributes is available in data store'
def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
resolver.metadataFilters << generator.entityAttributesFilter()
def filterResourceId = resolver.metadataFilters[0].resourceId
def resolverResourceId = resolver.resourceId
metadataResolverRepository.save(resolver)
MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver)
OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation)

when: 'GET request is made with resource Id matching the existing filter'
def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String)
def existingFilterMap = jsonSlurper.parseText(result.body)

and: 'PUT call is made with modified filter state'
existingFilterMap.name = 'Entity Attributes Filter Updated'
def updatedResultFromPUT = this.restTemplate.exchange(
"$BASE_URI/$resolverResourceId/Filters/$filterResourceId",
PUT,
createRequestHttpEntityFor { JsonOutput.toJson(existingFilterMap) }, String)

then:
updatedResultFromPUT.statusCode.value() == 200
}

def "DELETE Filter"() {
given: 'MetadataResolver with attached filter is available in data store'
def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
resolver.metadataFilters << generator.entityAttributesFilter()
def filterResourceId = resolver.metadataFilters[0].resourceId
def resolverResourceId = resolver.resourceId
metadataResolverRepository.save(resolver)


when: 'GET request is made with resource Id matching the existing filter'
def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String)

then:
result.statusCode.value() == 200

and: 'DELETE call is made and then GET call is made for the just deleted resource'
restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filterResourceId")
def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String)

then: 'The deleted resource is gone'
GETResultAfterDelete.statusCode.value() == 404
}

def "DELETE Filter with resolver having more than TWO filters attached"() {
given: 'MetadataResolver with 3 attached filters is available in data store'
def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
resolver.metadataFilters << generator.entityAttributesFilter()
resolver.metadataFilters << generator.entityAttributesFilter()
resolver.metadataFilters << generator.entityAttributesFilter()
resolver.metadataFilters << generator.entityAttributesFilter()
resolver.metadataFilters << generator.entityAttributesFilter()
resolver.metadataFilters << generator.entityAttributesFilter()
resolver.metadataFilters << generator.entityAttributesFilter()
def filter_THREE_ResourceId = resolver.metadataFilters[2].resourceId
def filter_SIX_ResourceId = resolver.metadataFilters[5].resourceId
def resolverResourceId = resolver.resourceId
metadataResolverRepository.save(resolver)

when: 'GET resolver to count the original number of filters'
def originalResolverResult = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map)

then:
originalResolverResult.body.metadataFilters.size == 7

when: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter'
restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId")
def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId", String)

then: 'The deleted resource is gone'
GETResultAfterDelete.statusCodeValue == 404

and: 'GET resolver to count modified number of filters'
def resolverResult_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map)

then:
resolverResult_2.body.metadataFilters.size == 6

and: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter'
restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId")
def GETResultAfterDelete_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId", String)

then: 'The deleted resource is gone'
GETResultAfterDelete_2.statusCodeValue == 404

and: 'GET resolver to count modified number of filters'
def resolverResult_3 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map)

then:
resolverResult_3.body.metadataFilters.size == 5
}

def "POST new Filter updates resolver's modifiedDate - SHIBUI-1500"() {
given: 'MetadataResolver with attached entity attributes is available in data store'
def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
def filter = generator.entityAttributesFilter()
def resolverResourceId = resolver.resourceId
metadataResolverRepository.save(resolver)
MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver)
OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation)

when: 'Resolver without filter is fetched'
def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", String)
def originalModifiedDate = jsonSlurper.parseText(result.body).modifiedDate

and: 'POST call is made with new filter'
result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String)
def afterFilterAddedModifiedDate = jsonSlurper.parseText(result.body).modifiedDate

then:
originalModifiedDate < afterFilterAddedModifiedDate
}

def "EntityAttributesFilter with invalid script does not result in persisting that filter"() {
def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
def resolverResourceId = resolver.resourceId
metadataResolverRepository.save(resolver)
MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver)
OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation)
def filter = new EntityAttributesFilter().with {
it.name = 'SHIBUI-1249'
it.resourceId = 'SHIBUI-1249'
it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with {
it.entityAttributesFilterTargetType = CONDITION_SCRIPT
it.singleValue = """
echo('invalid;
"""
it
}
it
}

when:
def result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String)

then:
result.statusCodeValue == 400

when:
result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map)

then:
result.body.metadataFilters.size == 0
}
// def "PUT EntityAttributesFilter and update it"() {
// given: 'MetadataResolver with attached entity attributes is available in data store'
// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
// resolver.metadataFilters << generator.entityAttributesFilter()
// def filterResourceId = resolver.metadataFilters[0].resourceId
// def resolverResourceId = resolver.resourceId
// metadataResolverRepository.save(resolver)
// MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver)
// OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation)
//
// when: 'GET request is made with resource Id matching the existing filter'
// def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String)
// def existingFilterMap = jsonSlurper.parseText(result.body)
//
// and: 'PUT call is made with modified filter state'
// existingFilterMap.name = 'Entity Attributes Filter Updated'
// def updatedResultFromPUT = this.restTemplate.exchange(
// "$BASE_URI/$resolverResourceId/Filters/$filterResourceId",
// PUT,
// createRequestHttpEntityFor { JsonOutput.toJson(existingFilterMap) }, String)
//
// then:
// updatedResultFromPUT.statusCode.value() == 200
// }
//
// def "DELETE Filter"() {
// given: 'MetadataResolver with attached filter is available in data store'
// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
// resolver.metadataFilters << generator.entityAttributesFilter()
// def filterResourceId = resolver.metadataFilters[0].resourceId
// def resolverResourceId = resolver.resourceId
// metadataResolverRepository.save(resolver)
//
//
// when: 'GET request is made with resource Id matching the existing filter'
// def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String)
//
// then:
// result.statusCode.value() == 200
//
// and: 'DELETE call is made and then GET call is made for the just deleted resource'
// restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filterResourceId")
// def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String)
//
// then: 'The deleted resource is gone'
// GETResultAfterDelete.statusCode.value() == 404
// }
//
// def "DELETE Filter with resolver having more than TWO filters attached"() {
// given: 'MetadataResolver with 3 attached filters is available in data store'
// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
// resolver.metadataFilters << generator.entityAttributesFilter()
// resolver.metadataFilters << generator.entityAttributesFilter()
// resolver.metadataFilters << generator.entityAttributesFilter()
// resolver.metadataFilters << generator.entityAttributesFilter()
// resolver.metadataFilters << generator.entityAttributesFilter()
// resolver.metadataFilters << generator.entityAttributesFilter()
// resolver.metadataFilters << generator.entityAttributesFilter()
// def filter_THREE_ResourceId = resolver.metadataFilters[2].resourceId
// def filter_SIX_ResourceId = resolver.metadataFilters[5].resourceId
// def resolverResourceId = resolver.resourceId
// metadataResolverRepository.save(resolver)
//
// when: 'GET resolver to count the original number of filters'
// def originalResolverResult = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map)
//
// then:
// originalResolverResult.body.metadataFilters.size == 7
//
// when: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter'
// restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId")
// def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId", String)
//
// then: 'The deleted resource is gone'
// GETResultAfterDelete.statusCodeValue == 404
//
// and: 'GET resolver to count modified number of filters'
// def resolverResult_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map)
//
// then:
// resolverResult_2.body.metadataFilters.size == 6
//
// and: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter'
// restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId")
// def GETResultAfterDelete_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId", String)
//
// then: 'The deleted resource is gone'
// GETResultAfterDelete_2.statusCodeValue == 404
//
// and: 'GET resolver to count modified number of filters'
// def resolverResult_3 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map)
//
// then:
// resolverResult_3.body.metadataFilters.size == 5
// }
//
// def "POST new Filter updates resolver's modifiedDate - SHIBUI-1500"() {
// given: 'MetadataResolver with attached entity attributes is available in data store'
// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
// def filter = generator.entityAttributesFilter()
// def resolverResourceId = resolver.resourceId
// metadataResolverRepository.save(resolver)
// MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver)
// OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation)
//
// when: 'Resolver without filter is fetched'
// def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", String)
// def originalModifiedDate = jsonSlurper.parseText(result.body).modifiedDate
//
// and: 'POST call is made with new filter'
// result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String)
// def afterFilterAddedModifiedDate = jsonSlurper.parseText(result.body).modifiedDate
//
// then:
// originalModifiedDate < afterFilterAddedModifiedDate
// }
//
// def "EntityAttributesFilter with invalid script does not result in persisting that filter"() {
// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
// def resolverResourceId = resolver.resourceId
// metadataResolverRepository.save(resolver)
// MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver)
// OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation)
// def filter = new EntityAttributesFilter().with {
// it.name = 'SHIBUI-1249'
// it.resourceId = 'SHIBUI-1249'
// it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with {
// it.entityAttributesFilterTargetType = CONDITION_SCRIPT
// it.singleValue = """
// echo('invalid;
// """
// it
// }
// it
// }
//
// when:
// def result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String)
//
// then:
// result.statusCodeValue == 400
//
// when:
// result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map)
//
// then:
// result.body.metadataFilters.size == 0
// }

private HttpEntity<String> createRequestHttpEntityFor(Closure jsonBodySupplier) {
new HttpEntity<String>(jsonBodySupplier(), ['Content-Type': 'application/json'] as HttpHeaders)
Expand Down
Loading

0 comments on commit 4b0b45b

Please sign in to comment.