Skip to content

Commit

Permalink
[SHIBUI-525]
Browse files Browse the repository at this point in the history
Finally fixed a test bug. Grr. >_<
  • Loading branch information
Bill Smith committed Jun 22, 2018
1 parent 8c67afe commit 101fcd3
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,39 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService {
'publicKey': filter.publicKey)
}

void constructXmlNodeForFilter(EntityAttributesFilter filter, def markupBuilderDelegate) {
markupBuilderDelegate.MetadataFilter('xsi:type': 'EntityAttributes') {
// TODO: enhance. currently this does weird things with namespaces
filter.attributes.each { attribute ->
mkp.yieldUnescaped(openSamlObjects.marshalToXmlString(attribute, false))
}
if (filter.entityAttributesFilterTarget.entityAttributesFilterTargetType == EntityAttributesFilterTarget
.EntityAttributesFilterTargetType.ENTITY) {
filter.entityAttributesFilterTarget.value.each {
Entity(it)
}
}
}
}

void constructXmlNodeForFilter(EntityRoleWhiteListFilter filter, def markupBuilderDelegate) {
markupBuilderDelegate.MetadataFilter(
'xsi:type': 'EntityRoleWhiteList',
'xmlns:md': 'urn:oasis:names:tc:SAML:2.0:metadata'
) {
filter.retainedRoles.each {
markupBuilderDelegate.RetainedRole(it)
}
}
}

void constructXmlNodeForFilter(RequiredValidUntilFilter filter, def markupBuilderDelegate) {
markupBuilderDelegate.MetadataFilter(
'xsi:type': 'RequiredValidUntil',
maxValidityInterval: filter.maxValidityInterval
)
}

void constructXmlNodeForResolver(DynamicHttpMetadataResolver resolver, def markupBuilderDelegate, Closure childNodes) {
markupBuilderDelegate.MetadataProvider(id: resolver.name,
'xsi:type': 'DynamicHttpMetadataProvider',
Expand Down Expand Up @@ -167,39 +200,6 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService {
}
}

void constructXmlNodeForFilter(EntityAttributesFilter filter, def markupBuilderDelegate) {
markupBuilderDelegate.MetadataFilter('xsi:type': 'EntityAttributes') {
// TODO: enhance. currently this does weird things with namespaces
filter.attributes.each { attribute ->
mkp.yieldUnescaped(openSamlObjects.marshalToXmlString(attribute, false))
}
if (filter.entityAttributesFilterTarget.entityAttributesFilterTargetType == EntityAttributesFilterTarget
.EntityAttributesFilterTargetType.ENTITY) {
filter.entityAttributesFilterTarget.value.each {
Entity(it)
}
}
}
}

void constructXmlNodeForFilter(EntityRoleWhiteListFilter filter, def markupBuilderDelegate) {
markupBuilderDelegate.MetadataFilter(
'xsi:type': 'EntityRoleWhiteList',
'xmlns:md': 'urn:oasis:names:tc:SAML:2.0:metadata'
) {
filter.retainedRoles.each {
markupBuilderDelegate.RetainedRole(it)
}
}
}

void constructXmlNodeForFilter(RequiredValidUntilFilter filter, def markupBuilderDelegate) {
markupBuilderDelegate.MetadataFilter(
'xsi:type': 'RequiredValidUntil',
maxValidityInterval: filter.maxValidityInterval
)
}

void constructXmlNodeForResolver(FileBackedHttpMetadataResolver resolver, def markupBuilderDelegate, Closure childNodes) {
markupBuilderDelegate.MetadataProvider(id: resolver.name,
'xsi:type': 'FileBackedHTTPMetadataProvider',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,8 @@ public ResponseEntity<?> update(@PathVariable String metadataResolverId,
MetadataFilter persistedFilter =
convertIntoTransientRepresentationIfNecessary(persistedMr.getMetadataFilters().stream(), updatedFilter.getResourceId());

persistedFilter.setVersion(persistedFilter.hashCode());

return ResponseEntity.ok().body(persistedFilter);
}

Expand Down Expand Up @@ -170,7 +172,8 @@ else if(filterWithUpdatedData instanceof EntityRoleWhiteListFilter) {
toFilter.setRemoveEmptyEntitiesDescriptors(fromFilter.getRemoveEmptyEntitiesDescriptors());
toFilter.setRemoveRolelessEntityDescriptors(fromFilter.getRemoveRolelessEntityDescriptors());
toFilter.setRetainedRoles(fromFilter.getRetainedRoles());
} else if (filterWithUpdatedData instanceof SignatureValidationFilter) {
}
else if (filterWithUpdatedData instanceof SignatureValidationFilter) {
SignatureValidationFilter toFilter = SignatureValidationFilter.class.cast(filterToBeUpdated);
SignatureValidationFilter fromFilter = SignatureValidationFilter.class.cast(filterWithUpdatedData);
toFilter.setRequireSignedRoot(fromFilter.getRequireSignedRoot());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,6 @@ class MetadataFiltersControllerTests extends Specification {
def "FilterController.create creates the desired filter (filterType: #filterType)"(String filterType) {
given:
def randomFilter = testObjectGenerator.buildRandomFilterOfType(filterType)
println('WOO! ' + randomFilter.class)
def metadataResolver = new MetadataResolver()
metadataResolver.setResourceId(randomGenerator.randomId())
metadataResolver.setMetadataFilters(testObjectGenerator.buildAllTypesOfFilterList())
Expand Down Expand Up @@ -161,6 +160,7 @@ class MetadataFiltersControllerTests extends Specification {
'entityAttributes' | _
'entityRoleWhiteList' | _
'signatureValidation' | _
'requiredValidUntil' | _
}
@Unroll
Expand All @@ -169,6 +169,7 @@ class MetadataFiltersControllerTests extends Specification {
def originalFilter = testObjectGenerator.buildRandomFilterOfType(filterType)
def updatedFilter = testObjectGenerator.copyOf(originalFilter)
updatedFilter.name = 'Updated Filter'
updatedFilter.version = originalFilter.hashCode()
def postedJsonBody = mapper.writeValueAsString(updatedFilter)
def originalMetadataResolver = new MetadataResolver()
Expand All @@ -194,7 +195,9 @@ class MetadataFiltersControllerTests extends Specification {
then:
def expectedJson = new JsonSlurper().parseText(postedJsonBody)
updatedFilter.fromTransientRepresentation()
if (filterType == 'entityAttributes') {
EntityAttributesFilter.cast(updatedFilter).fromTransientRepresentation()
}
expectedJson << [version: updatedFilter.hashCode()]
result.andExpect(status().isOk())
.andExpect(content().json(JsonOutput.toJson(expectedJson), true))
Expand All @@ -204,6 +207,7 @@ class MetadataFiltersControllerTests extends Specification {
'entityAttributes' | _
'entityRoleWhiteList' | _
'signatureValidation' | _
'requiredValidUntil' | _
}
def "FilterController.update filter 409's if the version numbers don't match"() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,11 @@ class TestObjectGenerator {
case 'signatureValidation':
randomFilter = signatureValidationFilter()
break
case 'requiredValidUntil':
randomFilter = requiredValidUntilFilter()
break
default:
randomFilter = new MetadataFilter()
throw new RuntimeException("Did you forget to create a TestObjectGenerator.copyOf method for filtertype: ${filterType} ?");
}
randomFilter
}
Expand Down Expand Up @@ -179,6 +182,15 @@ class TestObjectGenerator {
}
}

RequiredValidUntilFilter copyOf(RequiredValidUntilFilter requiredValidUntilFilter) {
new RequiredValidUntilFilter().with {
it.name = requiredValidUntilFilter.name
it.resourceId = requiredValidUntilFilter.resourceId
it.maxValidityInterval = requiredValidUntilFilter.maxValidityInterval
it
}
}

SignatureValidationFilter copyOf(SignatureValidationFilter signatureValidationFilter) {
new SignatureValidationFilter().with {
it.name = signatureValidationFilter.name
Expand Down

0 comments on commit 101fcd3

Please sign in to comment.