Skip to content

Commit

Permalink
SHIBUI-2051
Browse files Browse the repository at this point in the history
test updates
  • Loading branch information
chasegawa committed Sep 1, 2021
1 parent 9331450 commit c992e20
Show file tree
Hide file tree
Showing 35 changed files with 322 additions and 624 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,12 @@ public void loadGroups(User user) {
user.setLazyLoaderHelper(null);
Set<Ownership> ownerships = ownershipRepository.findAllGroupsForUser(user.getUsername());
HashSet<Group> groups = new HashSet<>();
ownerships.forEach(ownership -> {
groups.add(groupRepository.findByResourceId(ownership.getOwnerId()));
final boolean isAdmin = user.getRole().equals("ROLE_ADMIN");
ownerships.stream().map(ownership -> groupRepository.findByResourceId(ownership.getOwnerId())).forEach(userGroup -> {
if (isAdmin) {
userGroup.setValidationRegex(null);
}
groups.add(userGroup);
});
user.setGroups(groups);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,10 @@ public List<EntityDescriptorRepresentation> getAllRepresentationsBasedOnUserAcce

@Override
public List<String> getAttributeReleaseListFromAttributeList(List<Attribute> attributeList) {
if (attributeList == null) {
return new ArrayList<String>();
}
attributeList.removeIf(Objects::isNull);
return ModelRepresentationConversions.getAttributeReleaseListFromAttributeList(attributeList);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ import org.springframework.transaction.annotation.Transactional
import spock.lang.Specification

@DataJpaTest
@ContextConfiguration(classes = [BaseDataJpaTestSetupConfiguration])
@ContextConfiguration(classes = [BaseDataJpaTestConfiguration])
@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"])
@EntityScan("edu.internet2.tier.shibboleth.admin.ui")
abstract class BaseDataJpaTestSetup extends Specification {
abstract class AbstractBaseDataJpaTest extends Specification {
@Autowired
GroupServiceForTesting groupService

Expand Down Expand Up @@ -62,6 +62,10 @@ abstract class BaseDataJpaTestSetup extends Specification {
}
}

createAdminUser()
}

protected createAdminUser() {
if (userRepository.findByUsername("admin").isEmpty()) {
Optional<Role> adminRole = roleRepository.findByName("ROLE_ADMIN")
User adminUser = new User(username: "admin", roles: [adminRole.get()], password: "foo")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import edu.internet2.tier.shibboleth.admin.ui.security.repository.OwnershipRepos
import edu.internet2.tier.shibboleth.admin.ui.security.service.GroupServiceForTesting
import edu.internet2.tier.shibboleth.admin.ui.security.service.GroupServiceImpl
import edu.internet2.tier.shibboleth.admin.util.AttributeUtility
import io.micrometer.core.instrument.search.Search
import edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration
Expand All @@ -21,7 +21,7 @@ import org.springframework.context.annotation.Primary
@Configuration
@Import([ShibUIConfiguration.class, CustomPropertiesConfiguration.class, SearchConfiguration.class])
@ComponentScan(basePackages=[ "edu.internet2.tier.shibboleth.admin.ui.service", "edu.internet2.tier.shibboleth.admin.ui.security.service" ])
class BaseDataJpaTestSetupConfiguration {
class BaseDataJpaTestConfiguration {
@Bean
AttributeUtility attributeUtility(OpenSamlObjects openSamlObjects) {
return new AttributeUtility(openSamlObjects)
Expand All @@ -47,8 +47,16 @@ class BaseDataJpaTestSetupConfiguration {
}

@Bean
ModelRepresentationConversions modelRepresentationConversions(CustomPropertiesConfiguration customPropertiesConfiguration) {
return new ModelRepresentationConversions(customPropertiesConfiguration)
}

@Bean
@Primary
OpenSamlObjects openSamlObjects() {
return new OpenSamlObjects()
OpenSamlObjects result = new OpenSamlObjects()
result.init()
return result
}

@Bean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,51 +1,26 @@
package edu.internet2.tier.shibboleth.admin.ui.configuration

import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.InternationalizationConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.SearchConfiguration
import edu.internet2.tier.shibboleth.admin.ui.AbstractBaseDataJpaTest
import edu.internet2.tier.shibboleth.admin.ui.domain.CustomEntityAttributeDefinition
import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects
import edu.internet2.tier.shibboleth.admin.ui.repository.CustomEntityAttributeDefinitionRepository
import edu.internet2.tier.shibboleth.admin.ui.security.repository.RoleRepository
import edu.internet2.tier.shibboleth.admin.ui.security.repository.UserRepository
import edu.internet2.tier.shibboleth.admin.ui.service.CustomEntityAttributesDefinitionService
import edu.internet2.tier.shibboleth.admin.ui.service.CustomEntityAttributesDefinitionServiceImpl

import javax.persistence.EntityManager

import org.opensaml.saml.metadata.resolver.MetadataResolver
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.boot.autoconfigure.domain.EntityScan
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.context.TestConfiguration
import org.springframework.context.annotation.Bean
import org.springframework.data.jpa.repository.config.EnableJpaRepositories
import org.springframework.security.core.userdetails.UsernameNotFoundException
import org.springframework.test.context.ActiveProfiles
import org.springframework.test.context.ContextConfiguration

import spock.lang.Specification
import javax.persistence.EntityManager

/**
* Tests for <code>edu.internet2.tier.shibboleth.admin.ui.configuration.CustomPropertiesConfiguration</code>
*/
@DataJpaTest
@ContextConfiguration(classes=[CoreShibUiConfiguration, InternationalizationConfiguration, SearchConfiguration, edu.internet2.tier.shibboleth.admin.ui.configuration.TestConfiguration])
@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"])
@EntityScan("edu.internet2.tier.shibboleth.admin.ui")
class CustomPropertiesConfigurationTests extends Specification {
class CustomPropertiesConfigurationTests extends AbstractBaseDataJpaTest {

@Autowired
@Qualifier(value="customPropertiesConfiguration")
CustomPropertiesConfiguration configUnderTest

@Autowired
CustomEntityAttributesDefinitionService ceadService

@Autowired
CustomEntityAttributeDefinitionRepository repository;
CustomEntityAttributeDefinitionRepository repository

@Autowired
EntityManager entityManager
Expand Down Expand Up @@ -89,4 +64,4 @@ class CustomPropertiesConfigurationTests extends Specification {
ceadService.getAllDefinitions().size() == 1
configUnderTest.getOverrides().size() == 11
}
}
}
Original file line number Diff line number Diff line change
@@ -1,33 +1,13 @@
package edu.internet2.tier.shibboleth.admin.ui.configuration

import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.validator.DynamicHttpMetadataResolverValidator
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.validator.MetadataResolverValidationService
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.validator.FileBackedHttpMetadataResolverValidator
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.validator.IMetadataResolverValidator
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.validator.MetadataResolverValidationService
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.validator.ResourceBackedIMetadataResolverValidator
import edu.internet2.tier.shibboleth.admin.ui.security.service.IGroupService
import edu.internet2.tier.shibboleth.admin.ui.security.service.UserService
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Profile


@Configuration
class TestMetadataResolverValidationConfiguration {

@Bean
@Profile("dh-test")
DynamicHttpMetadataResolverValidator dynamicHttpMetadataResolverValidator(IGroupService groupService, UserService userService) {
new DynamicHttpMetadataResolverValidator(groupService, userService)
}

@Bean
@Profile("fbh-test")
FileBackedHttpMetadataResolverValidator fileBackedHttpMetadataResolverValidator(IGroupService groupService, UserService userService) {
new FileBackedHttpMetadataResolverValidator(groupService, userService)
}

@Bean
ResourceBackedIMetadataResolverValidator resourceBackedMetadataResolverValidator() {
new ResourceBackedIMetadataResolverValidator()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,50 +1,34 @@
package edu.internet2.tier.shibboleth.admin.ui.controller

import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.InternationalizationConfiguration
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.AbstractBaseDataJpaTest
import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects
import edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorRepository
import edu.internet2.tier.shibboleth.admin.ui.security.service.UserService
import edu.internet2.tier.shibboleth.admin.ui.service.JPAEntityDescriptorServiceImpl
import edu.internet2.tier.shibboleth.admin.ui.service.JPAEntityServiceImpl
import net.shibboleth.ext.spring.resource.ResourceHelper
import net.shibboleth.utilities.java.support.resolver.CriteriaSet

import org.opensaml.core.criterion.EntityIdCriterion
import org.opensaml.saml.metadata.resolver.impl.ResourceBackedMetadataResolver
import org.spockframework.spring.SpringBean
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.core.io.ClassPathResource
import org.springframework.data.jpa.repository.config.EnableJpaRepositories
import org.springframework.http.HttpHeaders
import org.springframework.http.MediaType
import org.springframework.test.context.ContextConfiguration
import org.springframework.test.web.servlet.setup.MockMvcBuilders
import spock.lang.Specification
import spock.lang.Subject

import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.is
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status

@DataJpaTest
@ContextConfiguration(classes=[CoreShibUiConfiguration, SearchConfiguration, TestConfiguration, InternationalizationConfiguration])
@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"])
@EntityScan("edu.internet2.tier.shibboleth.admin.ui")
class EntitiesControllerTests extends Specification {
class EntitiesControllerTests extends AbstractBaseDataJpaTest {
@Autowired
JPAEntityDescriptorServiceImpl serviceImpl

@Autowired
UserService userService

def openSamlObjects = new OpenSamlObjects().with {
init()

OpenSamlObjects openSamlObjects = new OpenSamlObjects().with {
it.init()
it
}

Expand All @@ -56,7 +40,7 @@ class EntitiesControllerTests extends Specification {
initialize()
it
}

// This stub will spit out the results from the resolver instead of actually finding them in the DB
@SpringBean
EntityDescriptorRepository edr = Stub(EntityDescriptorRepository) {
Expand All @@ -66,7 +50,8 @@ class EntitiesControllerTests extends Specification {

@Subject
def controller
def mockMvc
def mockMvc


def setup() {
controller = new EntitiesController()
Expand Down Expand Up @@ -110,34 +95,6 @@ class EntitiesControllerTests extends Specification {
}

def 'GET /api/entities/http%3A%2F%2Ftest.scaldingspoon.org%2Ftest1'() {
given:
def expectedBody = '''
{
"id":null,
"serviceProviderName":null,
"entityId":"http://test.scaldingspoon.org/test1",
"organization": {},
"contacts":null,
"serviceProviderSsoDescriptor": {
"protocolSupportEnum":"SAML 2",
"nameIdFormats":["urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"]
},
"logoutEndpoints":null,
"securityInfo":null,
"assertionConsumerServices":[
{"locationUrl":"https://test.scaldingspoon.org/test1/acs","binding":"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST","makeDefault":false}
],
"serviceEnabled":false,
"createdDate":null,
"modifiedDate":null,
"attributeRelease":["givenName","employeeNumber"],
"version":1445248649,
"createdBy":null,
"current":false,
"groupId":null
}
'''

when:
def result = mockMvc.perform(get('/entities/http%3A%2F%2Ftest.scaldingspoon.org%2Ftest1'))

Expand All @@ -155,34 +112,6 @@ class EntitiesControllerTests extends Specification {
}

def 'GET /entities/http%3A%2F%2Ftest.scaldingspoon.org%2Ftest1'() {
given:
def expectedBody = '''
{
"id":null,
"serviceProviderName":null,
"entityId":"http://test.scaldingspoon.org/test1",
"organization": {},
"contacts":null,
"serviceProviderSsoDescriptor": {
"protocolSupportEnum":"SAML 2",
"nameIdFormats":["urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"]
},
"logoutEndpoints":null,
"securityInfo":null,
"assertionConsumerServices":[
{"locationUrl":"https://test.scaldingspoon.org/test1/acs","binding":"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST","makeDefault":false}
],
"serviceEnabled":false,
"createdDate":null,
"modifiedDate":null,
"attributeRelease":["givenName","employeeNumber"],
"version":1445248649,
"createdBy":null,
"current":false,
"groupId":null
}
'''

when:
def result = mockMvc.perform(get('/entities/http%3A%2F%2Ftest.scaldingspoon.org%2Ftest1'))

Expand Down Expand Up @@ -258,4 +187,4 @@ class EntitiesControllerTests extends Specification {
.andExpect(content().contentType('application/xml;charset=ISO-8859-1'))
.andExpect(content().xml(expectedBody))
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package edu.internet2.tier.shibboleth.admin.ui.controller

import com.fasterxml.jackson.databind.ObjectMapper
import edu.internet2.tier.shibboleth.admin.ui.BaseDataJpaTestSetup
import edu.internet2.tier.shibboleth.admin.ui.AbstractBaseDataJpaTest
import edu.internet2.tier.shibboleth.admin.ui.configuration.CustomPropertiesConfiguration
import edu.internet2.tier.shibboleth.admin.ui.domain.EntityDescriptor
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.AssertionConsumerServiceRepresentation
Expand All @@ -25,7 +25,6 @@ import edu.internet2.tier.shibboleth.admin.ui.util.TestObjectGenerator
import edu.internet2.tier.shibboleth.admin.ui.util.WithMockAdmin
import edu.internet2.tier.shibboleth.admin.util.AttributeUtility
import edu.internet2.tier.shibboleth.admin.util.EntityDescriptorConversionUtils
import edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.TestConfiguration
import org.springframework.context.annotation.Bean
Expand All @@ -42,11 +41,17 @@ import javax.persistence.EntityManager
import static org.hamcrest.CoreMatchers.containsString
import static org.springframework.http.MediaType.APPLICATION_JSON
import static org.springframework.http.MediaType.APPLICATION_XML
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status

@ContextConfiguration(classes=[EDCLocalConfig])
class EntityDescriptorControllerTests extends BaseDataJpaTestSetup {
class EntityDescriptorControllerTests extends AbstractBaseDataJpaTest {
@Autowired
EntityDescriptorRepository entityDescriptorRepository

Expand Down Expand Up @@ -678,10 +683,5 @@ class EntityDescriptorControllerTests extends BaseDataJpaTestSetup {
CustomPropertiesConfiguration customPropertiesConfiguration) {
return new JPAEntityServiceImpl(openSamlObjects, attributeUtility, customPropertiesConfiguration)
}
@Bean
ModelRepresentationConversions modelRepresentationConversions(CustomPropertiesConfiguration customPropertiesConfiguration) {
return new ModelRepresentationConversions(customPropertiesConfiguration)
}
}
}
Loading

0 comments on commit c992e20

Please sign in to comment.