Skip to content

Commit

Permalink
SHIBUI-521(622)
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Jun 26, 2018
1 parent 01b8397 commit 94d615d
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package edu.internet2.tier.shibboleth.admin.ui.configuration;

import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolverValidationService;
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolverValidator;
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ResourceBackedMetadataResolverValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.List;

@Configuration
public class MetadataResolverValidationConfiguration {

//@Bean
ResourceBackedMetadataResolverValidator resourceBackedMetadataResolverValidator() {
return new ResourceBackedMetadataResolverValidator();
}

@Bean
@SuppressWarnings("Unchecked")
MetadataResolverValidationService metadataResolverValidationService(List<MetadataResolverValidator> metadataResolverValidators) {
return new MetadataResolverValidationService(metadataResolverValidators);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package edu.internet2.tier.shibboleth.admin.ui.controller;

import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver;
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolverValidationService;
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolverValidator;
import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository;
import lombok.extern.log4j.Log4j;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
Expand All @@ -19,6 +21,8 @@

import java.net.URI;

import static edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolverValidator.ValidationResult;

@RestController
@RequestMapping("/api")
@Slf4j
Expand All @@ -27,6 +31,9 @@ public class MetadataResolversController {
@Autowired
MetadataResolverRepository resolverRepository;

@Autowired
MetadataResolverValidationService metadataResolverValidationService;

@GetMapping("/MetadataResolvers")
@Transactional(readOnly = true)
public ResponseEntity<?> getAll() {
Expand All @@ -53,6 +60,11 @@ public ResponseEntity<?> create(@RequestBody MetadataResolver newResolver) {
//Only deal with filters via filters endpoints?
newResolver.clearAllFilters();

ResponseEntity<?> validationErrorResponse = validate(newResolver);
if(validationErrorResponse != null) {
return validationErrorResponse;
}

MetadataResolver persistedResolver = resolverRepository.save(newResolver);
persistedResolver.updateVersion();

Expand All @@ -72,6 +84,11 @@ public ResponseEntity<?> update(@PathVariable String resourceId, @RequestBody Me
return ResponseEntity.status(HttpStatus.CONFLICT).build();
}

ResponseEntity<?> validationErrorResponse = validate(updatedResolver);
if(validationErrorResponse != null) {
return validationErrorResponse;
}

updatedResolver.setAudId(existingResolver.getAudId());

//TODO: we are disregarding attached filters if any sent from UI.
Expand All @@ -84,6 +101,15 @@ public ResponseEntity<?> update(@PathVariable String resourceId, @RequestBody Me
return ResponseEntity.ok(persistedResolver);
}

@SuppressWarnings("Unchecked")
private ResponseEntity<?> validate(MetadataResolver metadataResolver) {
ValidationResult validationResult = metadataResolverValidationService.validateIfNecessary(metadataResolver);
if(!validationResult.isValid()) {
return ResponseEntity.badRequest().body(validationResult.getErrorMessage());
}
return null;
}

private static URI getResourceUriFor(MetadataResolver resolver) {
return ServletUriComponentsBuilder
.fromCurrentServletMapping().path("/api/MetadataResolvers/")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration


@Configuration
class TestMetadataResolverValidationServiceConfiguration {
class TestMetadataResolverValidationConfiguration {

@Bean
ResourceBackedMetadataResolverValidator resourceBackedMetadataResolverValidator() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,13 @@ class MetadataResolversControllerIntegrationTests extends Specification {
PUT,
createRequestHttpEntityFor { JsonOutput.toJson(metadataResolverMap) },
String)
then:
updatedResult.statusCodeValue == 200

and:
def updatedResolverMap = new JsonSlurper().parseText(updatedResult.body)

then:
updatedResult.statusCodeValue == 200
updatedResolverMap.name == 'Updated DynamicHttpMetadataResolver'

}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers

import edu.internet2.tier.shibboleth.admin.ui.configuration.TestMetadataResolverValidationServiceConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.TestMetadataResolverValidationConfiguration
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.test.context.ContextConfiguration
import spock.lang.Specification

@ContextConfiguration(classes=[TestMetadataResolverValidationServiceConfiguration])
/**
* @author Dmitriy Kopylenko
*/
@ContextConfiguration(classes=[TestMetadataResolverValidationConfiguration])
class MetadataResolverValidationServiceConfigurationTests extends Specification {

@Autowired
Expand Down

0 comments on commit 94d615d

Please sign in to comment.