Skip to content

Commit

Permalink
SHIBUI-836: wip
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Sep 11, 2018
1 parent 60f97b5 commit 4b84cde
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository;
import edu.internet2.tier.shibboleth.admin.ui.service.TokenPlaceholderValueResolvingService;
import edu.internet2.tier.shibboleth.admin.util.TokenPlaceholderResolvers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
Expand Down Expand Up @@ -56,9 +57,8 @@ void showMetadataResolversResourceIds(ApplicationStartedEvent e) {

System.out.println("IDP HOME: " + idpHome);
String rawValue = "%{idp.home}/metadata/file.xml";
boolean hasToken = rawValue.contains("%{idp.home}");
String resolvedIdpHome = propertyResolver.resolvePlaceholders("${idp.home}");
String fullyResolvedDir = rawValue.replace("%{idp.home}", resolvedIdpHome);
String resolved = propertyResolver.resolvePlaceholders(rawValue.replace("%{", "${"));
TokenPlaceholderValueResolvingService service = TokenPlaceholderResolvers.placeholderResolverService();
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package edu.internet2.tier.shibboleth.admin.ui.configuration;

import edu.internet2.tier.shibboleth.admin.ui.service.TokenPlaceholderValueResolvingService;
import edu.internet2.tier.shibboleth.admin.util.TokenPlaceholderResolvers;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.PropertyResolver;
Expand All @@ -12,4 +13,9 @@ public class PlaceholderResolverComponentsConfiguration {
public TokenPlaceholderValueResolvingService tokenPlaceholderValueResolvingService(PropertyResolver propertyResolver) {
return TokenPlaceholderValueResolvingService.shibbolethPlaceholderAware(propertyResolver);
}

@Bean
public TokenPlaceholderResolvers tokenPlaceholderResolvers(TokenPlaceholderValueResolvingService service) {
return new TokenPlaceholderResolvers(service);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

import org.springframework.core.env.PropertyResolver;

import java.util.Objects;

import static java.util.Objects.requireNonNull;

/**
* Implementation of {@link TokenPlaceholderValueResolvingService} based on Spring Framework's default property resolver
* which understands and replaces Shibboleth Idp specific placeholder prefix of '%{' with standard Spring's placeholder
Expand All @@ -21,6 +25,9 @@ public class ShibbolethPlaceholderTokenAwareValueResolvingService implements Tok

@Override
public String resolveValueFromTokenPlaceholder(String tokenPlaceholder) {
requireNonNull(tokenPlaceholder, "tokenPlaceholder must not be null");
tokenPlaceholder.replace("%{", "${");

return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package edu.internet2.tier.shibboleth.admin.util;

import edu.internet2.tier.shibboleth.admin.ui.service.TokenPlaceholderValueResolvingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

public class TokenPlaceholderResolvers {

private static TokenPlaceholderValueResolvingService placeholderResolverService;

public TokenPlaceholderResolvers(TokenPlaceholderValueResolvingService service) {
TokenPlaceholderResolvers.placeholderResolverService = service;
}

public static TokenPlaceholderValueResolvingService placeholderResolverService() {
return placeholderResolverService;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import static edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataRe
class MetadataResolverValidationServiceTests extends Specification {

def "Validation service with no available validators always returns default valid result"() {
given: 'Sample metadata resolver and validation service with no validators'
given: 'Sample metadata resolver and validation placeholderResolverService with no validators'
def resolver = Mock(MetadataResolver)
@Subject
def validationService = new MetadataResolverValidationService(null)
Expand All @@ -24,7 +24,7 @@ class MetadataResolverValidationServiceTests extends Specification {
}

def "Validation service with one validator not supporting the type of resolver returns default valid result"() {
given: 'Sample metadata resolver and validation service with one validator not supporting that type'
given: 'Sample metadata resolver and validation placeholderResolverService with one validator not supporting that type'
def resolver = Mock(MetadataResolver)
def validator = Mock(MetadataResolverValidator)
validator.supports(_) >> false
Expand All @@ -39,7 +39,7 @@ class MetadataResolverValidationServiceTests extends Specification {
}

def "Validation service with one validator supporting the type of resolver but fails its validation"() {
given: 'Sample metadata resolver and validation service with one validator supporting that type'
given: 'Sample metadata resolver and validation placeholderResolverService with one validator supporting that type'
def resolver = Mock(MetadataResolver)
def validator = Mock(MetadataResolverValidator)
validator.supports(_) >> true
Expand All @@ -55,7 +55,7 @@ class MetadataResolverValidationServiceTests extends Specification {
}

def "Validation service with with two validators supporting the type of resolver, first fails, second passes validation"() {
given: 'Sample metadata resolver and validation service with two validators supporting that type'
given: 'Sample metadata resolver and validation placeholderResolverService with two validators supporting that type'
def resolver = Mock(MetadataResolver)
def validator1 = Mock(MetadataResolverValidator)
validator1.supports(_) >> true
Expand All @@ -74,7 +74,7 @@ class MetadataResolverValidationServiceTests extends Specification {
}

def "Validation service with with two validators, only one supporting the type of resolver, passes validation"() {
given: 'Sample metadata resolver and validation service with two validators, with one supporting that type'
given: 'Sample metadata resolver and validation placeholderResolverService with two validators, with one supporting that type'
def resolver = Mock(MetadataResolver)
def validator1 = Mock(MetadataResolverValidator)
validator1.supports(_) >> false
Expand Down

0 comments on commit 4b84cde

Please sign in to comment.