Skip to content

Commit

Permalink
SHIBUI-518[535]: JPA repository and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Jun 5, 2018
1 parent 1f6ee8c commit dce23fe
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package edu.internet2.tier.shibboleth.admin.ui.repository;

import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.LocalDynamicMetadataResolver;
import org.springframework.data.repository.CrudRepository;

/**
* Spring Data CRUD repository for instances of {@link LocalDynamicMetadataResolver}s.
*/
public interface LocalDynamicMetadataResolverRepository extends CrudRepository<LocalDynamicMetadataResolver, Long> {

LocalDynamicMetadataResolver findByName(String name);

boolean deleteByResourceId(String resourceId);

LocalDynamicMetadataResolver findByResourceId(String resourceId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class FileBackedHttpMetadataResolverRepositoryTests extends Specification {
it.metadataFilters.add(new EntityAttributesFilter().with {
it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with {
it.entityAttributesFilterTargetType = ENTITY
it.setSingleValue(["hola"])
it.setValue(["hola"])
it
}
it
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package edu.internet2.tier.shibboleth.admin.ui.repository

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.domain.filters.EntityAttributesFilter
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilterTarget
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.DynamicMetadataResolverAttributes
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FileBackedHttpMetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.HttpMetadataResolverAttributes
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.LocalDynamicMetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ReloadableMetadataResolverAttributes
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.annotation.DirtiesContext
import org.springframework.test.context.ContextConfiguration
import spock.lang.Specification

import javax.persistence.EntityManager

import static edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilterTarget.EntityAttributesFilterTargetType.ENTITY
import static edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.HttpMetadataResolverAttributes.HttpCachingType.memory

@DataJpaTest
@ContextConfiguration(classes=[CoreShibUiConfiguration, SearchConfiguration, MetadataResolverConfiguration])
@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"])
@EntityScan("edu.internet2.tier.shibboleth.admin.ui")
@DirtiesContext(methodMode = DirtiesContext.MethodMode.BEFORE_METHOD)
class LocalDynamicMetadataResolverRepositoryTests extends Specification {

@Autowired
LocalDynamicMetadataResolverRepository repositoryUnderTest

@Autowired
EntityManager entityManager

def "local dynamic metadata resolver instances persist OK"() {
when:
def mdr = new LocalDynamicMetadataResolver().with {
it.name = 'LocalDynamicMetadataResolver'
it.sourceDirectory = '/etc/shibui'
it.sourceKeyGeneratorRef = 'sourceKeyGeneratorBean'
it.sourceManagerRef = 'sourceManagerBean'
it.dynamicMetadataResolverAttributes = new DynamicMetadataResolverAttributes().with {
it.cleanupTaskInterval = 'PT5H'
it.maxCacheDuration = 'PT8H'
it.initializeFromPersistentCacheInBackground = true
it
}

it.metadataFilters.add(new EntityAttributesFilter().with {
it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with {
it.entityAttributesFilterTargetType = ENTITY
it.setValue(['hola'])
it
}
it
})

it
}
repositoryUnderTest.save(mdr)

then:
repositoryUnderTest.findAll().size() > 0
def item = repositoryUnderTest.findByName("LocalDynamicMetadataResolver")

item.name == "LocalDynamicMetadataResolver"
item.metadataFilters.size() == 1
item.metadataFilters[0].entityAttributesFilterTarget.entityAttributesFilterTargetType == ENTITY
item.metadataFilters[0].entityAttributesFilterTarget.value.size() == 1
item.metadataFilters[0].entityAttributesFilterTarget.value.get(0) == "hola"
item.sourceDirectory == '/etc/shibui'
item.sourceKeyGeneratorRef == 'sourceKeyGeneratorBean'
item.sourceManagerRef == 'sourceManagerBean'
item.dynamicMetadataResolverAttributes.cleanupTaskInterval == 'PT5H'
item.dynamicMetadataResolverAttributes.maxCacheDuration == 'PT8H'
item.dynamicMetadataResolverAttributes.initializeFromPersistentCacheInBackground
}

}

0 comments on commit dce23fe

Please sign in to comment.