From 005f2f757eaf8911a58b68eef4b6a215d243d12d Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Thu, 19 Jul 2018 11:56:16 -0400 Subject: [PATCH 1/3] SHIBUI-669: clean up the dead code --- ...DynamicHttpMetadataProviderController.java | 111 ------- ...eBackedHttpMetadataProviderController.java | 110 ------- ...ocalDynamicMetadataProviderController.java | 110 ------- ...HttpMetadataProviderControllerTests.groovy | 272 ----------------- ...HttpMetadataProviderControllerTests.groovy | 274 ----------------- ...amicMetadataProviderControllerTests.groovy | 276 ------------------ 6 files changed, 1153 deletions(-) delete mode 100644 backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/DynamicHttpMetadataProviderController.java delete mode 100644 backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/FileBackedHttpMetadataProviderController.java delete mode 100644 backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/LocalDynamicMetadataProviderController.java delete mode 100644 backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/DynamicHttpMetadataProviderControllerTests.groovy delete mode 100644 backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/FileBackedHttpMetadataProviderControllerTests.groovy delete mode 100644 backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/LocalDynamicMetadataProviderControllerTests.groovy diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/DynamicHttpMetadataProviderController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/DynamicHttpMetadataProviderController.java deleted file mode 100644 index 866f54231..000000000 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/DynamicHttpMetadataProviderController.java +++ /dev/null @@ -1,111 +0,0 @@ -package edu.internet2.tier.shibboleth.admin.ui.controller; - -import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.DynamicHttpMetadataResolver; -import edu.internet2.tier.shibboleth.admin.ui.repository.DynamicHttpMetadataResolverRepository; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.servlet.support.ServletUriComponentsBuilder; - -import java.net.URI; - -/** - * @author Bill Smith (wsmith@unicon.net) - */ -@RestController -@RequestMapping("/api/MetadataProvider/DynamicHttp") -public class DynamicHttpMetadataProviderController { - private static final Logger logger = LoggerFactory.getLogger(DynamicHttpMetadataProviderController.class); - - @Autowired - DynamicHttpMetadataResolverRepository repository; - - @DeleteMapping("/{resourceId}") - public ResponseEntity deleteByResourceId(@PathVariable String resourceId) { - if (repository.deleteByResourceId(resourceId)) { - return ResponseEntity.accepted().build(); - } else { - return ResponseEntity.notFound().build(); - } - } - - @GetMapping("/name/{metadataProviderName}") - @Transactional(readOnly = true) - public ResponseEntity getOneByName(@PathVariable String metadataProviderName) { - DynamicHttpMetadataResolver resolver = repository.findByName(metadataProviderName); - if (resolver == null) { - return ResponseEntity.notFound().build(); - } else { - resolver.setVersion(resolver.hashCode()); - return ResponseEntity.ok(resolver); - } - } - - @GetMapping("/{resourceId}") - @Transactional(readOnly = true) - public ResponseEntity getOneByResourceId(@PathVariable String resourceId) { - DynamicHttpMetadataResolver resolver = repository.findByResourceId(resourceId); - if (resolver == null) { - return ResponseEntity.notFound().build(); - } else { - resolver.setVersion(resolver.hashCode()); - return ResponseEntity.ok(resolver); - } - } - - @PostMapping - public ResponseEntity create(@RequestBody DynamicHttpMetadataResolver resolver) { - if (repository.findByName(resolver.getName()) != null) { - return ResponseEntity.status(HttpStatus.CONFLICT).build(); - } - - DynamicHttpMetadataResolver persistedResolver = repository.save(resolver); - persistedResolver.setVersion(persistedResolver.hashCode()); - - return ResponseEntity - .created(getResourceUriFor(persistedResolver)) - .body(persistedResolver); - } - - @PutMapping - public ResponseEntity update(@RequestBody DynamicHttpMetadataResolver resolver) { - DynamicHttpMetadataResolver existingResolver = repository.findByResourceId(resolver.getResourceId()); - - if (existingResolver == null) { - return ResponseEntity.notFound().build(); - } - - if (existingResolver.hashCode() != resolver.getVersion()) { - logger.info("Comparing: " + existingResolver.hashCode() + " with " + resolver.getVersion()); - return ResponseEntity.status(HttpStatus.CONFLICT).build(); - } - - resolver.setAudId(existingResolver.getAudId()); - //TODO: Do we need to set anything else? dates? - - DynamicHttpMetadataResolver updatedResolver = repository.save(resolver); - updatedResolver.setVersion(updatedResolver.hashCode()); - - return ResponseEntity.ok(updatedResolver); - } - - private static URI getResourceUriFor(DynamicHttpMetadataResolver resolver) { - return ServletUriComponentsBuilder - .fromCurrentServletMapping().path("/api/MetadataProvider/DynamicHttp/") - .pathSegment(resolver.getResourceId()) - .build() - .toUri(); - } - -} diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/FileBackedHttpMetadataProviderController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/FileBackedHttpMetadataProviderController.java deleted file mode 100644 index 5b8000482..000000000 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/FileBackedHttpMetadataProviderController.java +++ /dev/null @@ -1,110 +0,0 @@ -package edu.internet2.tier.shibboleth.admin.ui.controller; - -import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FileBackedHttpMetadataResolver; -import edu.internet2.tier.shibboleth.admin.ui.repository.FileBackedHttpMetadataResolverRepository; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.servlet.support.ServletUriComponentsBuilder; - -import java.net.URI; - -/** - * @author Bill Smith (wsmith@unicon.net) - */ -@RestController -@RequestMapping("/api/MetadataProvider/FileBackedHttp") -public class FileBackedHttpMetadataProviderController { - private static final Logger logger = LoggerFactory.getLogger(FileBackedHttpMetadataProviderController.class); - - @Autowired - FileBackedHttpMetadataResolverRepository repository; - - @DeleteMapping("/{resourceId}") - public ResponseEntity deleteByResourceId(@PathVariable String resourceId) { - if (repository.deleteByResourceId(resourceId)) { - return ResponseEntity.accepted().build(); - } else { - return ResponseEntity.notFound().build(); - } - } - - @GetMapping("/name/{metadataProviderName}") - @Transactional(readOnly = true) - public ResponseEntity getOneByName(@PathVariable String metadataProviderName) { - FileBackedHttpMetadataResolver resolver = repository.findByName(metadataProviderName); - if (resolver == null) { - return ResponseEntity.notFound().build(); - } else { - resolver.setVersion(resolver.hashCode()); - return ResponseEntity.ok(resolver); - } - } - - @GetMapping("/{resourceId}") - @Transactional(readOnly = true) - public ResponseEntity getOneByResourceId(@PathVariable String resourceId) { - FileBackedHttpMetadataResolver resolver = repository.findByResourceId(resourceId); - if (resolver == null) { - return ResponseEntity.notFound().build(); - } else { - resolver.setVersion(resolver.hashCode()); - return ResponseEntity.ok(resolver); - } - } - - @PostMapping - public ResponseEntity create(@RequestBody FileBackedHttpMetadataResolver resolver) { - if (repository.findByName(resolver.getName()) != null) { - return ResponseEntity.status(HttpStatus.CONFLICT).build(); - } - - FileBackedHttpMetadataResolver persistedResolver = repository.save(resolver); - persistedResolver.setVersion(persistedResolver.hashCode()); - - return ResponseEntity - .created(getResourceUriFor(persistedResolver)) - .body(persistedResolver); - } - - @PutMapping - public ResponseEntity update(@RequestBody FileBackedHttpMetadataResolver resolver) { - FileBackedHttpMetadataResolver existingResolver = repository.findByResourceId(resolver.getResourceId()); - - if (existingResolver == null) { - return ResponseEntity.notFound().build(); - } - - if (existingResolver.hashCode() != resolver.getVersion()) { - logger.info("Comparing: " + existingResolver.hashCode() + " with " + resolver.getVersion()); - return ResponseEntity.status(HttpStatus.CONFLICT).build(); - } - - resolver.setAudId(existingResolver.getAudId()); - //TODO: Do we need to set anything else? dates? - - FileBackedHttpMetadataResolver updatedResolver = repository.save(resolver); - updatedResolver.setVersion(updatedResolver.hashCode()); - - return ResponseEntity.ok(updatedResolver); - } - - private static URI getResourceUriFor(FileBackedHttpMetadataResolver resolver) { - return ServletUriComponentsBuilder - .fromCurrentServletMapping().path("/api/MetadataProvider/FileBackedHttp/") - .pathSegment(resolver.getResourceId()) - .build() - .toUri(); - } -} diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/LocalDynamicMetadataProviderController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/LocalDynamicMetadataProviderController.java deleted file mode 100644 index 2d3a104ee..000000000 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/LocalDynamicMetadataProviderController.java +++ /dev/null @@ -1,110 +0,0 @@ -package edu.internet2.tier.shibboleth.admin.ui.controller; - -import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.LocalDynamicMetadataResolver; -import edu.internet2.tier.shibboleth.admin.ui.repository.LocalDynamicMetadataResolverRepository; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.servlet.support.ServletUriComponentsBuilder; - -import java.net.URI; - -/** - * @author Bill Smith (wsmith@unicon.net) - */ -@RestController -@RequestMapping("/api/MetadataProvider/LocalDynamic") -public class LocalDynamicMetadataProviderController { - private static final Logger logger = LoggerFactory.getLogger(LocalDynamicMetadataProviderController.class); - - @Autowired - LocalDynamicMetadataResolverRepository repository; - - @DeleteMapping("/{resourceId}") - public ResponseEntity deleteByResourceId(@PathVariable String resourceId) { - if (repository.deleteByResourceId(resourceId)) { - return ResponseEntity.accepted().build(); - } else { - return ResponseEntity.notFound().build(); - } - } - - @GetMapping("/name/{metadataProviderName}") - @Transactional(readOnly = true) - public ResponseEntity getOneByName(@PathVariable String metadataProviderName) { - LocalDynamicMetadataResolver resolver = repository.findByName(metadataProviderName); - if (resolver == null) { - return ResponseEntity.notFound().build(); - } else { - resolver.setVersion(resolver.hashCode()); - return ResponseEntity.ok(resolver); - } - } - - @GetMapping("/{resourceId}") - @Transactional(readOnly = true) - public ResponseEntity getOneByResourceId(@PathVariable String resourceId) { - LocalDynamicMetadataResolver resolver = repository.findByResourceId(resourceId); - if (resolver == null) { - return ResponseEntity.notFound().build(); - } else { - resolver.setVersion(resolver.hashCode()); - return ResponseEntity.ok(resolver); - } - } - - @PostMapping - public ResponseEntity create(@RequestBody LocalDynamicMetadataResolver resolver) { - if (repository.findByName(resolver.getName()) != null) { - return ResponseEntity.status(HttpStatus.CONFLICT).build(); - } - - LocalDynamicMetadataResolver persistedResolver = repository.save(resolver); - persistedResolver.setVersion(persistedResolver.hashCode()); - - return ResponseEntity - .created(getResourceUriFor(persistedResolver)) - .body(persistedResolver); - } - - @PutMapping - public ResponseEntity update(@RequestBody LocalDynamicMetadataResolver resolver) { - LocalDynamicMetadataResolver existingResolver = repository.findByResourceId(resolver.getResourceId()); - - if (existingResolver == null) { - return ResponseEntity.notFound().build(); - } - - if (existingResolver.hashCode() != resolver.getVersion()) { - logger.info("Comparing: " + existingResolver.hashCode() + " with " + resolver.getVersion()); - return ResponseEntity.status(HttpStatus.CONFLICT).build(); - } - - resolver.setAudId(existingResolver.getAudId()); - //TODO: Do we need to set anything else? dates? - - LocalDynamicMetadataResolver updatedResolver = repository.save(resolver); - updatedResolver.setVersion(updatedResolver.hashCode()); - - return ResponseEntity.ok(updatedResolver); - } - - private static URI getResourceUriFor(LocalDynamicMetadataResolver resolver) { - return ServletUriComponentsBuilder - .fromCurrentServletMapping().path("/api/MetadataProvider/LocalDynamic/") - .pathSegment(resolver.getResourceId()) - .build() - .toUri(); - } -} diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/DynamicHttpMetadataProviderControllerTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/DynamicHttpMetadataProviderControllerTests.groovy deleted file mode 100644 index 5b10c9f6e..000000000 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/DynamicHttpMetadataProviderControllerTests.groovy +++ /dev/null @@ -1,272 +0,0 @@ -package edu.internet2.tier.shibboleth.admin.ui.controller - -import com.fasterxml.jackson.databind.ObjectMapper -import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration -import edu.internet2.tier.shibboleth.admin.ui.configuration.MetadataResolverConfiguration -import edu.internet2.tier.shibboleth.admin.ui.configuration.SearchConfiguration -import edu.internet2.tier.shibboleth.admin.ui.configuration.TestConfiguration -import edu.internet2.tier.shibboleth.admin.ui.repository.DynamicHttpMetadataResolverRepository -import edu.internet2.tier.shibboleth.admin.ui.util.RandomGenerator -import edu.internet2.tier.shibboleth.admin.ui.util.TestObjectGenerator -import edu.internet2.tier.shibboleth.admin.util.AttributeUtility -import groovy.json.JsonOutput -import groovy.json.JsonSlurper -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.autoconfigure.domain.EntityScan -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest -import org.springframework.data.jpa.repository.config.EnableJpaRepositories -import org.springframework.test.context.ContextConfiguration -import org.springframework.test.web.servlet.setup.MockMvcBuilders -import spock.lang.Specification - -import static org.hamcrest.CoreMatchers.containsString -import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8 -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.* -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.* - -/** - * @author Bill Smith (wsmith@unicon.net) - */ -@DataJpaTest -@ContextConfiguration(classes=[CoreShibUiConfiguration, SearchConfiguration, TestConfiguration]) -@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"]) -@EntityScan("edu.internet2.tier.shibboleth.admin.ui") -class DynamicHttpMetadataProviderControllerTests extends Specification { - RandomGenerator randomGenerator - TestObjectGenerator testObjectGenerator - ObjectMapper mapper - - def repository = Mock(DynamicHttpMetadataResolverRepository) - def controller - def mockMvc - - @Autowired - AttributeUtility attributeUtility - - def setup() { - randomGenerator = new RandomGenerator() - testObjectGenerator = new TestObjectGenerator(attributeUtility) - mapper = new ObjectMapper() - - controller = new DynamicHttpMetadataProviderController ( - repository: repository - ) - - mockMvc = MockMvcBuilders.standaloneSetup(controller).build() - } - - def "DELETE deletes the desired resolver"() { - given: - def randomResourceId = randomGenerator.randomId() - - 1 * repository.deleteByResourceId(randomResourceId) >> true - - when: - def result = mockMvc.perform( - delete("/api/MetadataProvider/DynamicHttp/$randomResourceId")) - - then: - result.andExpect(status().isAccepted()) - } - - def "DELETE returns error when desired resolver is not found"() { - given: - def randomResourceId = randomGenerator.randomId() - - 1 * repository.deleteByResourceId(randomResourceId) >> false - - when: - def result = mockMvc.perform( - delete("/api/MetadataProvider/DynamicHttp/$randomResourceId")) - - then: - result.andExpect(status().isNotFound()) - } - - def "POST a new resolver properly persists and returns the new persisted resolver"() { - given: - def resolver = testObjectGenerator.buildDynamicHttpMetadataResolver() - resolver.setVersion(resolver.hashCode()) - def postedJsonBody = mapper.writeValueAsString(resolver) - - 1 * repository.findByName(resolver.getName()) >> null - 1 * repository.save(_) >> resolver - - def expectedResolverUUID = resolver.getResourceId() - def expectedResponseHeader = 'Location' - def expectedResponseHeaderValue = "/api/MetadataProvider/DynamicHttp/$expectedResolverUUID" - - when: - def result = mockMvc.perform( - post('/api/MetadataProvider/DynamicHttp') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isCreated()) - .andExpect(content().json(postedJsonBody, false)) - .andExpect(header().string(expectedResponseHeader, containsString(expectedResponseHeaderValue))) - - } - - def "POST a new resolver that has a name of a persisted resolver returns conflict"() { - given: - def resolver = testObjectGenerator.buildDynamicHttpMetadataResolver() - def resolverName = resolver.name - def postedJsonBody = mapper.writeValueAsString(resolver) - - 1 * repository.findByName(resolverName) >> resolver - 0 * repository.save(_) - - when: - def result = mockMvc.perform( - post('/api/MetadataProvider/DynamicHttp') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isConflict()) - } - - def "GET by resourceId returns the desired persisted resolver"() { - given: - def resolver = testObjectGenerator.buildDynamicHttpMetadataResolver() - resolver.version = resolver.hashCode() - def resourceId = resolver.resourceId - def resolverJson = mapper.writeValueAsString(resolver) - - 1 * repository.findByResourceId(resourceId) >> resolver - - def expectedResponseContentType = APPLICATION_JSON_UTF8 - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/DynamicHttp/$resourceId")) - - then: - result.andExpect(status().isOk()) - .andExpect(content().contentType(expectedResponseContentType)) - .andExpect(content().json(resolverJson, false)) - } - - def "GET by unknown resource id returns not found"() { - given: - def randomResourceId = randomGenerator.randomId() - - 1 * repository.findByResourceId(randomResourceId) >> null - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/DynamicHttp/$randomResourceId")) - - then: - result.andExpect(status().isNotFound()) - } - - def "GET by resolver name returns the desired persisted resolver"() { - given: - def resolver = testObjectGenerator.buildDynamicHttpMetadataResolver() - resolver.version = resolver.hashCode() - def resolverName = resolver.name - def resolverJson = mapper.writeValueAsString(resolver) - - 1 * repository.findByName(resolverName) >> resolver - - def expectedResponseContentType = APPLICATION_JSON_UTF8 - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/DynamicHttp/name/$resolverName")) - - then: - result.andExpect(status().isOk()) - .andExpect(content().contentType(expectedResponseContentType)) - .andExpect(content().json(resolverJson, false)) - } - - def "GET by unknown resolver name returns not found"() { - given: - def randomResolverName = randomGenerator.randomString(10) - - 1 * repository.findByName(randomResolverName) >> null - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/DynamicHttp/name/$randomResolverName")) - - then: - result.andExpect(status().isNotFound()) - } - - def "PUT allows for a successful update of an already-persisted resolver"() { - given: - def existingResolver = testObjectGenerator.buildDynamicHttpMetadataResolver() - existingResolver.version = existingResolver.hashCode() - def resourceId = existingResolver.resourceId - def existingResolverJson = mapper.writeValueAsString(existingResolver) - - def updatedResolver = testObjectGenerator.buildDynamicHttpMetadataResolver() - updatedResolver.resourceId = existingResolver.resourceId - updatedResolver.version = existingResolver.version - def postedJsonBody = mapper.writeValueAsString(updatedResolver) - - 1 * repository.findByResourceId(existingResolver.resourceId) >> existingResolver - 1 * repository.save(_) >> updatedResolver - - def expectedResponseContentType = APPLICATION_JSON_UTF8 - - when: - def result = mockMvc.perform( - put('/api/MetadataProvider/DynamicHttp') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - def expectedJson = new JsonSlurper().parseText(postedJsonBody) - expectedJson << [version: updatedResolver.hashCode()] - result.andExpect(status().isOk()) - .andExpect(content().contentType(expectedResponseContentType)) - .andExpect(content().json(JsonOutput.toJson(expectedJson), false)) - } - - def "PUT of an updated resolver with an incorrect version returns a conflict"() { - given: - def existingResolver = testObjectGenerator.buildDynamicHttpMetadataResolver() - existingResolver.version = existingResolver.hashCode() - - def updatedResolver = testObjectGenerator.buildDynamicHttpMetadataResolver() - updatedResolver.resourceId = existingResolver.resourceId - updatedResolver.version = updatedResolver.hashCode() - def postedJsonBody = mapper.writeValueAsString(updatedResolver) - - 1 * repository.findByResourceId(existingResolver.resourceId) >> existingResolver - 0 * repository.save(_) - - when: - def result = mockMvc.perform( - put('/api/MetadataProvider/DynamicHttp') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isConflict()) - } - - def "PUT of a resolver that is not persisted returns not found"() { - given: - def resolver = testObjectGenerator.buildDynamicHttpMetadataResolver() - def postedJsonBody = mapper.writeValueAsString(resolver) - - 1 * repository.findByResourceId(resolver.resourceId) >> null - 0 * repository.save(_) - - when: - def result = mockMvc.perform( - put('/api/MetadataProvider/DynamicHttp') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isNotFound()) - } -} diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/FileBackedHttpMetadataProviderControllerTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/FileBackedHttpMetadataProviderControllerTests.groovy deleted file mode 100644 index 99457a335..000000000 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/FileBackedHttpMetadataProviderControllerTests.groovy +++ /dev/null @@ -1,274 +0,0 @@ -package edu.internet2.tier.shibboleth.admin.ui.controller - -import com.fasterxml.jackson.databind.ObjectMapper -import edu.internet2.tier.shibboleth.admin.ui.configuration.TestConfiguration -import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration -import edu.internet2.tier.shibboleth.admin.ui.configuration.SearchConfiguration -import edu.internet2.tier.shibboleth.admin.ui.repository.FileBackedHttpMetadataResolverRepository -import edu.internet2.tier.shibboleth.admin.ui.util.RandomGenerator -import edu.internet2.tier.shibboleth.admin.ui.util.TestObjectGenerator -import edu.internet2.tier.shibboleth.admin.util.AttributeUtility -import groovy.json.JsonOutput -import groovy.json.JsonSlurper -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.autoconfigure.domain.EntityScan -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest -import org.springframework.data.jpa.repository.config.EnableJpaRepositories -import org.springframework.test.context.ContextConfiguration -import org.springframework.test.web.servlet.setup.MockMvcBuilders -import spock.lang.Specification - -import static org.hamcrest.CoreMatchers.containsString -import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8 -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.* -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.* - -/** - * @author Bill Smith (wsmith@unicon.net) - */ -@DataJpaTest -@ContextConfiguration(classes=[CoreShibUiConfiguration, SearchConfiguration, TestConfiguration]) -@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"]) -@EntityScan("edu.internet2.tier.shibboleth.admin.ui") -class FileBackedHttpMetadataProviderControllerTests extends Specification { - RandomGenerator randomGenerator - TestObjectGenerator testObjectGenerator - ObjectMapper mapper - - @Autowired - AttributeUtility attributeUtility - - def repository = Mock(FileBackedHttpMetadataResolverRepository) - def controller - def mockMvc - - def setup() { - randomGenerator = new RandomGenerator() - testObjectGenerator = new TestObjectGenerator(attributeUtility) - mapper = new ObjectMapper() - - controller = new FileBackedHttpMetadataProviderController ( - repository: repository - ) - - mockMvc = MockMvcBuilders.standaloneSetup(controller).build() - } - - def "DELETE deletes the desired resolver"() { - given: - def randomResourceId = randomGenerator.randomId() - - 1 * repository.deleteByResourceId(randomResourceId) >> true - - when: - def result = mockMvc.perform( - delete("/api/MetadataProvider/FileBackedHttp/$randomResourceId")) - - then: - result.andExpect(status().isAccepted()) - } - - def "DELETE returns error when desired resolver is not found"() { - given: - def randomResourceId = randomGenerator.randomId() - - 1 * repository.deleteByResourceId(randomResourceId) >> false - - when: - def result = mockMvc.perform( - delete("/api/MetadataProvider/FileBackedHttp/$randomResourceId")) - - then: - result.andExpect(status().isNotFound()) - } - - def "POST a new resolver properly persists and returns the new persisted resolver"() { - given: - def resolver = testObjectGenerator.buildFileBackedHttpMetadataResolver() - resolver.version = resolver.hashCode() - def postedJsonBody = mapper.writeValueAsString(resolver) - - 1 * repository.findByName(resolver.getName()) >> null - 1 * repository.save(_) >> resolver - - def expectedResolverUUID = resolver.getResourceId() - def expectedResponseHeader = 'Location' - def expectedResponseHeaderValue = "/api/MetadataProvider/FileBackedHttp/$expectedResolverUUID" - - when: - def result = mockMvc.perform( - post('/api/MetadataProvider/FileBackedHttp') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isCreated()) - .andExpect(content().json(postedJsonBody, false)) - .andExpect(header().string(expectedResponseHeader, containsString(expectedResponseHeaderValue))) - - } - - def "POST a new resolver that has a name of a persisted resolver returns conflict"() { - given: - def existingResolver = testObjectGenerator.buildFileBackedHttpMetadataResolver() - def randomResolverName = existingResolver.name - def newResolver = testObjectGenerator.buildFileBackedHttpMetadataResolver() - newResolver.name = randomResolverName - def postedJsonBody = mapper.writeValueAsString(newResolver) - - 1 * repository.findByName(randomResolverName) >> existingResolver - 0 * repository.save(_) - - when: - def result = mockMvc.perform( - post('/api/MetadataProvider/FileBackedHttp') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isConflict()) - } - - def "GET by resourceId returns the desired persisted resolver"() { - given: - def existingResolver = testObjectGenerator.buildFileBackedHttpMetadataResolver() - existingResolver.version = existingResolver.hashCode() - def randomResourceId = existingResolver.resourceId - def resolverJson = mapper.writeValueAsString(existingResolver) - - 1 * repository.findByResourceId(randomResourceId) >> existingResolver - - def expectedResponseContentType = APPLICATION_JSON_UTF8 - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/FileBackedHttp/$randomResourceId")) - - then: - result.andExpect(status().isOk()) - .andExpect(content().contentType(expectedResponseContentType)) - .andExpect(content().json(resolverJson, false)) - } - - def "GET by unknown resource id returns not found"() { - given: - def randomResourceId = randomGenerator.randomId() - - 1 * repository.findByResourceId(randomResourceId) >> null - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/FileBackedHttp/$randomResourceId")) - - then: - result.andExpect(status().isNotFound()) - } - - def "GET by resolver name returns the desired persisted resolver"() { - given: - def randomResolver = testObjectGenerator.buildFileBackedHttpMetadataResolver() - randomResolver.version = randomResolver.hashCode() - def randomResolverName = randomResolver.name - def resolverJson = mapper.writeValueAsString(randomResolver) - - 1 * repository.findByName(randomResolverName) >> randomResolver - - def expectedResponseContentType = APPLICATION_JSON_UTF8 - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/FileBackedHttp/name/$randomResolverName")) - - then: - result.andExpect(status().isOk()) - .andExpect(content().contentType(expectedResponseContentType)) - .andExpect(content().json(resolverJson, false)) - } - - def "GET by unknown resolver name returns not found"() { - given: - def randomResolverName = randomGenerator.randomString(10) - - 1 * repository.findByName(randomResolverName) >> null - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/FileBackedHttp/name/$randomResolverName")) - - then: - result.andExpect(status().isNotFound()) - } - - def "PUT allows for a successful update of an already-persisted resolver"() { - given: - def existingResolver = testObjectGenerator.buildFileBackedHttpMetadataResolver() - existingResolver.version = existingResolver.hashCode() - def randomResourceId = existingResolver.resourceId - def updatedResolver = testObjectGenerator.buildFileBackedHttpMetadataResolver() - updatedResolver.version = existingResolver.version - updatedResolver.resourceId = existingResolver.resourceId - def postedJsonBody = mapper.writeValueAsString(updatedResolver) - - - 1 * repository.findByResourceId(randomResourceId) >> existingResolver - 1 * repository.save(_) >> updatedResolver - - def expectedResponseContentType = APPLICATION_JSON_UTF8 - - when: - def result = mockMvc.perform( - put('/api/MetadataProvider/FileBackedHttp') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - def expectedJson = new JsonSlurper().parseText(postedJsonBody) - expectedJson << [version: updatedResolver.hashCode()] - result.andExpect(status().isOk()) - .andExpect(content().contentType(expectedResponseContentType)) - .andExpect(content().json(JsonOutput.toJson(expectedJson), false)) - } - - def "PUT of an updated resolver with an incorrect version returns a conflict"() { - given: - def existingResolver = testObjectGenerator.buildFileBackedHttpMetadataResolver() - existingResolver.version = existingResolver.hashCode() - def randomResourceId = existingResolver.resourceId - def updatedResolver = testObjectGenerator.buildFileBackedHttpMetadataResolver() - updatedResolver.version = updatedResolver.hashCode() - updatedResolver.resourceId = existingResolver.resourceId - def postedJsonBody = mapper.writeValueAsString(updatedResolver) - - 1 * repository.findByResourceId(randomResourceId) >> existingResolver - 0 * repository.save(_) - - when: - def result = mockMvc.perform( - put('/api/MetadataProvider/FileBackedHttp') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isConflict()) - } - - def "PUT of a resolver that is not persisted returns not found"() { - given: - def randomResolver = testObjectGenerator.buildFileBackedHttpMetadataResolver() - randomResolver.version = randomResolver.hashCode() - def randomResourceId = randomResolver.resourceId - def postedJsonBody = mapper.writeValueAsString(randomResolver) - - 1 * repository.findByResourceId(randomResourceId) >> null - 0 * repository.save(_) - - when: - def result = mockMvc.perform( - put('/api/MetadataProvider/FileBackedHttp') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isNotFound()) - } -} diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/LocalDynamicMetadataProviderControllerTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/LocalDynamicMetadataProviderControllerTests.groovy deleted file mode 100644 index 14c925c5c..000000000 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/LocalDynamicMetadataProviderControllerTests.groovy +++ /dev/null @@ -1,276 +0,0 @@ -package edu.internet2.tier.shibboleth.admin.ui.controller - -import com.fasterxml.jackson.databind.ObjectMapper -import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration -import edu.internet2.tier.shibboleth.admin.ui.configuration.MetadataResolverConfiguration -import edu.internet2.tier.shibboleth.admin.ui.configuration.SearchConfiguration -import edu.internet2.tier.shibboleth.admin.ui.configuration.TestConfiguration -import edu.internet2.tier.shibboleth.admin.ui.repository.LocalDynamicMetadataResolverRepository -import edu.internet2.tier.shibboleth.admin.ui.util.RandomGenerator -import edu.internet2.tier.shibboleth.admin.ui.util.TestObjectGenerator -import edu.internet2.tier.shibboleth.admin.util.AttributeUtility -import groovy.json.JsonOutput -import groovy.json.JsonSlurper -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.autoconfigure.domain.EntityScan -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest -import org.springframework.data.jpa.repository.config.EnableJpaRepositories -import org.springframework.test.context.ContextConfiguration -import org.springframework.test.web.servlet.setup.MockMvcBuilders -import spock.lang.Specification - -import static org.hamcrest.CoreMatchers.containsString -import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8 -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.* -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.* - -/** - * @author Bill Smith (wsmith@unicon.net) - */ -@DataJpaTest -@ContextConfiguration(classes=[CoreShibUiConfiguration, SearchConfiguration, TestConfiguration]) -@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"]) -@EntityScan("edu.internet2.tier.shibboleth.admin.ui") -class LocalDynamicMetadataProviderControllerTests extends Specification { - RandomGenerator randomGenerator - TestObjectGenerator testObjectGenerator - ObjectMapper mapper - - def repository = Mock(LocalDynamicMetadataResolverRepository) - def controller - def mockMvc - - @Autowired - AttributeUtility attributeUtility - - def setup() { - randomGenerator = new RandomGenerator() - testObjectGenerator = new TestObjectGenerator(attributeUtility) - mapper = new ObjectMapper() - - controller = new LocalDynamicMetadataProviderController ( - repository: repository - ) - - mockMvc = MockMvcBuilders.standaloneSetup(controller).build() - } - - def "DELETE deletes the desired resolver"() { - given: - def randomResourceId = randomGenerator.randomId() - - 1 * repository.deleteByResourceId(randomResourceId) >> true - - when: - def result = mockMvc.perform( - delete("/api/MetadataProvider/LocalDynamic/$randomResourceId")) - - then: - result.andExpect(status().isAccepted()) - } - - def "DELETE returns error when desired resolver is not found"() { - given: - def randomResourceId = randomGenerator.randomId() - - 1 * repository.deleteByResourceId(randomResourceId) >> false - - when: - def result = mockMvc.perform( - delete("/api/MetadataProvider/LocalDynamic/$randomResourceId")) - - then: - result.andExpect(status().isNotFound()) - } - - def "POST a new resolver properly persists and returns the new persisted resolver"() { - given: - def resolver = testObjectGenerator.buildLocalDynamicMetadataResolver() - resolver.version = resolver.hashCode() - def postedJsonBody = mapper.writeValueAsString(resolver) - - 1 * repository.findByName(resolver.getName()) >> null - 1 * repository.save(_) >> resolver - - def expectedResolverUUID = resolver.getResourceId() - def expectedResponseHeader = 'Location' - def expectedResponseHeaderValue = "/api/MetadataProvider/LocalDynamic/$expectedResolverUUID" - - when: - def result = mockMvc.perform( - post('/api/MetadataProvider/LocalDynamic') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isCreated()) - .andExpect(content().json(postedJsonBody, false)) - .andExpect(header().string(expectedResponseHeader, containsString(expectedResponseHeaderValue))) - } - - def "POST a new resolver that has a name of a persisted resolver returns conflict"() { - given: - def resolver = testObjectGenerator.buildLocalDynamicMetadataResolver() - resolver.version = resolver.hashCode() - def postedJsonBody = mapper.writeValueAsString(resolver) - - 1 * repository.findByName(resolver.name) >> resolver - 0 * repository.save(_) - - when: - def result = mockMvc.perform( - post('/api/MetadataProvider/LocalDynamic') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isConflict()) - } - - def "GET by resourceId returns the desired persisted resolver"() { - given: - def resolver = testObjectGenerator.buildLocalDynamicMetadataResolver() - resolver.version = resolver.hashCode() - def resolverJson = mapper.writeValueAsString(resolver) - def resolverId = resolver.resourceId - - 1 * repository.findByResourceId(resolverId) >> resolver - - def expectedResponseContentType = APPLICATION_JSON_UTF8 - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/LocalDynamic/$resolverId")) - - then: - result.andExpect(status().isOk()) - .andExpect(content().contentType(expectedResponseContentType)) - .andExpect(content().json(resolverJson, false)) - } - - def "GET by unknown resource id returns not found"() { - given: - def randomResourceId = randomGenerator.randomId() - - 1 * repository.findByResourceId(randomResourceId) >> null - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/LocalDynamic/$randomResourceId")) - - then: - result.andExpect(status().isNotFound()) - } - - def "GET by resolver name returns the desired persisted resolver"() { - given: - def resolver = testObjectGenerator.buildLocalDynamicMetadataResolver() - resolver.version = resolver.hashCode() - def resolverName = resolver.name - def resolverJson = mapper.writeValueAsString(resolver) - - 1 * repository.findByName(resolverName) >> resolver - - def expectedResponseContentType = APPLICATION_JSON_UTF8 - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/LocalDynamic/name/$resolverName")) - - then: - result.andExpect(status().isOk()) - .andExpect(content().contentType(expectedResponseContentType)) - .andExpect(content().json(resolverJson, false)) - } - - def "GET by unknown resolver name returns not found"() { - given: - def randomResolverName = randomGenerator.randomString(10) - - 1 * repository.findByName(randomResolverName) >> null - - when: - def result = mockMvc.perform( - get("/api/MetadataProvider/LocalDynamic/name/$randomResolverName")) - - then: - result.andExpect(status().isNotFound()) - } - - def "PUT allows for a successful update of an already-persisted resolver"() { - given: - def existingResolver = testObjectGenerator.buildLocalDynamicMetadataResolver() - existingResolver.version = existingResolver.hashCode() - def resourceId = existingResolver.resourceId - def updatedResolver = testObjectGenerator.buildLocalDynamicMetadataResolver() - updatedResolver.setResourceId(resourceId) - updatedResolver.setVersion(existingResolver.hashCode()) - def postedJsonBody = mapper.writeValueAsString(updatedResolver) - - 1 * repository.findByResourceId(resourceId) >> existingResolver - 1 * repository.save(_) >> updatedResolver - - def expectedResponseContentType = APPLICATION_JSON_UTF8 - - when: - def result = mockMvc.perform( - put('/api/MetadataProvider/LocalDynamic') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - def expectedJson = new JsonSlurper().parseText(postedJsonBody) - expectedJson << [version: updatedResolver.hashCode()] - result.andExpect(status().isOk()) - .andExpect(content().contentType(expectedResponseContentType)) - .andExpect(content().json(JsonOutput.toJson(expectedJson), false)) - } - - def "PUT of an updated resolver with an incorrect version returns a conflict"() { - given: - def existingResolver = testObjectGenerator.buildLocalDynamicMetadataResolver() - existingResolver.version = existingResolver.hashCode() - def resourceId = existingResolver.resourceId - - def updatedResolver = testObjectGenerator.buildLocalDynamicMetadataResolver() - updatedResolver.resourceId = resourceId - updatedResolver.version = updatedResolver.hashCode() - def postedJsonBody = mapper.writeValueAsString(updatedResolver) - - 1 * repository.findByResourceId(resourceId) >> existingResolver - 0 * repository.save(_) - - when: - def result = mockMvc.perform( - put('/api/MetadataProvider/LocalDynamic') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isConflict()) - } - - def "PUT of a resolver that is not persisted returns not found"() { - given: - def existingResolver = testObjectGenerator.buildLocalDynamicMetadataResolver() - existingResolver.version = existingResolver.hashCode() - def resourceId = existingResolver.resourceId - - def updatedResolver = testObjectGenerator.buildLocalDynamicMetadataResolver() - updatedResolver.resourceId = resourceId - updatedResolver.version = updatedResolver.hashCode() - def postedJsonBody = mapper.writeValueAsString(updatedResolver) - - 1 * repository.findByResourceId(resourceId) >> null - 0 * repository.save(_) - - when: - def result = mockMvc.perform( - put('/api/MetadataProvider/LocalDynamic') - .contentType(APPLICATION_JSON_UTF8) - .content(postedJsonBody)) - - then: - result.andExpect(status().isNotFound()) - } -} From 07ba5a400e231e4ba4fe6eec328db62175f95bc4 Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Mon, 23 Jul 2018 07:50:40 -0400 Subject: [PATCH 2/3] Trigger build --- .trigger-jenkins-build | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .trigger-jenkins-build diff --git a/.trigger-jenkins-build b/.trigger-jenkins-build new file mode 100644 index 000000000..e69de29bb From 79aaa9548bf0ea7ae566541b92fc3818654d8253 Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Mon, 23 Jul 2018 07:58:34 -0400 Subject: [PATCH 3/3] Cleanup --- .trigger-jenkins-build | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .trigger-jenkins-build diff --git a/.trigger-jenkins-build b/.trigger-jenkins-build deleted file mode 100644 index e69de29bb..000000000