Skip to content

Commit

Permalink
[SHIBUI-525]
Browse files Browse the repository at this point in the history
unit tests WIP
some general cleanup .. and added some repetition
  • Loading branch information
Bill Smith committed Jun 21, 2018
1 parent d9633de commit 38b76f5
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import org.springframework.test.web.servlet.result.MockMvcResultHandlers
import org.springframework.test.web.servlet.setup.MockMvcBuilders
import org.w3c.dom.Document
import spock.lang.Specification
import spock.lang.Unroll

import static org.hamcrest.CoreMatchers.containsString
import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8
Expand Down Expand Up @@ -94,7 +95,6 @@ class MetadataFiltersControllerTests extends Specification {

when:
def result = mockMvc.perform(get('/api/MetadataResolver/foo/Filters'))
println(mapper.writeValueAsString(expectedContent))

then:
result.andExpect(expectedHttpResponseStatus)
Expand Down Expand Up @@ -122,9 +122,11 @@ class MetadataFiltersControllerTests extends Specification {
.andExpect(content().json(mapper.writeValueAsString(expectedFilter)))
}

def "FilterController.create creates the desired filter"() {
@Unroll
def "FilterController.create creates the desired filter (filterType: #filterType)"(String filterType) {
given:
def randomFilter = testObjectGenerator.entityAttributesFilter()
def randomFilter = testObjectGenerator.buildRandomFilterOfType(filterType)
println('WOO! ' + randomFilter.class)
def metadataResolver = new MetadataResolver()
metadataResolver.setResourceId(randomGenerator.randomId())
metadataResolver.setMetadataFilters(testObjectGenerator.buildAllTypesOfFilterList())
Expand All @@ -142,9 +144,6 @@ class MetadataFiltersControllerTests extends Specification {
def expectedResponseHeaderValue = "/api/MetadataResolver/$expectedMetadataResolverUUID/Filters/$expectedFilterUUID"
def expectedJsonBody = mapper.writeValueAsString(randomFilter)
def postedJsonBody = expectedJsonBody - ~/"id":.*?,/ // remove the "id:<foo>,"
println postedJsonBody
def filter = mapper.readValue(postedJsonBody, MetadataFilter)
println filter
when:
def result = mockMvc.perform(
Expand All @@ -156,11 +155,18 @@ class MetadataFiltersControllerTests extends Specification {
result.andExpect(status().isCreated())
.andExpect(content().json(expectedJsonBody, true))
.andExpect(header().string(expectedResponseHeader, containsString(expectedResponseHeaderValue)))
where:
filterType | _
'entityAttributes' | _
'entityRoleWhiteList' | _
'signatureValidation' | _
}
def "FilterController.update updates the target EntityAttributes filter as desired"() {
@Unroll
def "FilterController.update updates the target #filterType filter as desired"(String filterType) {
given:
def originalFilter = testObjectGenerator.entityAttributesFilter()
def originalFilter = testObjectGenerator.buildRandomFilterOfType(filterType)
def updatedFilter = testObjectGenerator.copyOf(originalFilter)
updatedFilter.name = 'Updated Filter'
def postedJsonBody = mapper.writeValueAsString(updatedFilter)
Expand Down Expand Up @@ -192,6 +198,12 @@ class MetadataFiltersControllerTests extends Specification {
expectedJson << [version: updatedFilter.hashCode()]
result.andExpect(status().isOk())
.andExpect(content().json(JsonOutput.toJson(expectedJson), true))
where:
filterType | _
'entityAttributes' | _
'entityRoleWhiteList' | _
'signatureValidation' | _
}
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 @@ -5,6 +5,7 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFil
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilterTarget
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityRoleWhiteListFilter
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.MetadataFilter
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.SignatureValidationFilter
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.FilterRepresentation
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.FilterTargetRepresentation
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.RelyingPartyOverridesRepresentation
Expand Down Expand Up @@ -119,10 +120,42 @@ class TestObjectGenerator {
(1..generator.randomInt(4, 10)).each {
filterList.add(buildFilter { entityAttributesFilter() })
filterList.add(buildFilter { entityRoleWhitelistFilter() })
filterList.add(buildFilter { signatureValidationFilter() })
}
return filterList
}

MetadataFilter buildRandomFilterOfType(String filterType) {
def randomFilter
switch (filterType) {
case 'entityAttributes':
randomFilter = entityAttributesFilter()
break
case 'entityRoleWhiteList':
randomFilter = entityRoleWhitelistFilter()
break
case 'signatureValidation':
randomFilter = signatureValidationFilter()
break
default:
randomFilter = new MetadataFilter()
}
randomFilter
}

SignatureValidationFilter signatureValidationFilter() {
new SignatureValidationFilter().with {
it.name = 'SignatureValidation'
it.requireSignedRoot = generator.randomBoolean()
it.certificateFile = generator.randomString(50)
it.defaultCriteriaRef = generator.randomString(10)
it.signaturePrevalidatorRef = generator.randomString(10)
it.dynamicTrustedNamesStrategyRef = generator.randomString(10)
it.trustEngineRef = generator.randomString(10)
it.publicKey = generator.randomString(50)
it
}
}
EntityRoleWhiteListFilter entityRoleWhitelistFilter() {
new EntityRoleWhiteListFilter().with {
it.name = 'EntityRoleWhiteList'
Expand Down

0 comments on commit 38b76f5

Please sign in to comment.