From 741c86258bd494e1c77bab148a9758b1bbbc42e5 Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Mon, 13 Aug 2018 12:00:05 -0400 Subject: [PATCH] Unit test to demo the incorrect version when updating resolver --- ...ResolversControllerIntegrationTests.groovy | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) 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 index 25071cb98..3ceb55417 100644 --- 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 @@ -255,6 +255,33 @@ class MetadataResolversControllerIntegrationTests extends Specification { createdResolver.metadataFilters[0] instanceof EntityAttributesFilter } + def "PUT MetadataResolver with one EntityAttributesFilters attached and check version -> /api/MetadataResolvers"() { + given: 'MetadataResolver with attached entity attributes is available in data store' + def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') + resolver.metadataFilters << generator.entityAttributesFilter() + def resolverResourceId = resolver.resourceId + metadataResolverRepository.save(resolver) + + when: 'GET request is made with resource Id matching the existing resolver' + def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", String) + def existingMetadataResolverMap = new JsonSlurper().parseText(result.body) + def existingMetadataVersion = existingMetadataResolverMap.version + + and: 'PUT call is made with' + existingMetadataResolverMap.name = 'Updated' + def updatedResultFromPUT = this.restTemplate.exchange( + "$BASE_URI/${existingMetadataResolverMap.resourceId}", + PUT, + createRequestHttpEntityFor { JsonOutput.toJson(existingMetadataResolverMap) }, + String) + def updatedResultFromGET = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", String) + def updatedVersionReturnedFromPUT = new JsonSlurper().parseText(updatedResultFromPUT.body).version + def updatedVersionReturnedFromGET = new JsonSlurper().parseText(updatedResultFromGET.body).version + + then: + updatedVersionReturnedFromPUT == updatedVersionReturnedFromGET + } + private HttpEntity createRequestHttpEntityFor(Closure jsonBodySupplier) { new HttpEntity(jsonBodySupplier(), ['Content-Type': 'application/json'] as HttpHeaders) }