Skip to content

Commit

Permalink
SHIBUI-2050
Browse files Browse the repository at this point in the history
test updates
  • Loading branch information
chasegawa committed Aug 30, 2021
1 parent 57eae7b commit 3cef142
Show file tree
Hide file tree
Showing 9 changed files with 325 additions and 241 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ public ResponseEntity<?> update(@PathVariable String resourceId, @RequestBody Me
MetadataResolver persistedResolver = resolverRepository.save(updatedResolver);
doResolverInitialization(persistedResolver);

return ResponseEntity.ok(persistedResolver);
return ResponseEntity.ok(resolverRepository.findByResourceId(resourceId));
}

//Versioning endpoints
Expand Down Expand Up @@ -212,4 +212,4 @@ private void doResolverInitialization(MetadataResolver persistedResolver) throws
OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,7 @@
package edu.internet2.tier.shibboleth.admin.ui.service;

import edu.internet2.tier.shibboleth.admin.ui.domain.Attribute;
import edu.internet2.tier.shibboleth.admin.ui.domain.EntityAttributes;
import edu.internet2.tier.shibboleth.admin.ui.domain.EntityDescriptor;
import edu.internet2.tier.shibboleth.admin.ui.domain.KeyDescriptor;
import edu.internet2.tier.shibboleth.admin.ui.domain.IRelyingPartyOverrideProperty;
import edu.internet2.tier.shibboleth.admin.ui.domain.UIInfo;
import edu.internet2.tier.shibboleth.admin.ui.domain.XSBoolean;
import edu.internet2.tier.shibboleth.admin.ui.domain.XSInteger;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.AssertionConsumerServiceRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.ContactRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.EntityDescriptorRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.LogoutEndpointRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.MduiRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.OrganizationRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.SecurityInfoRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.ServiceProviderSsoDescriptorRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.domain.*;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.*;
import edu.internet2.tier.shibboleth.admin.ui.exception.EntityIdExistsException;
import edu.internet2.tier.shibboleth.admin.ui.exception.EntityNotFoundException;
import edu.internet2.tier.shibboleth.admin.ui.exception.ForbiddenException;
Expand All @@ -29,23 +15,14 @@
import edu.internet2.tier.shibboleth.admin.util.MDDCConstants;
import edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions;
import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;

import javax.transaction.Transactional;

import static edu.internet2.tier.shibboleth.admin.util.EntityDescriptorConversionUtils.*;
import static edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions.*;
import static edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions.getStringListOfAttributeValues;

@Slf4j
@Service
Expand Down Expand Up @@ -407,4 +384,4 @@ public void updateDescriptorFromRepresentation(org.opensaml.saml.saml2.metadata.
}
buildDescriptorFromRepresentation((EntityDescriptor) entityDescriptor, representation);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package edu.internet2.tier.shibboleth.admin.ui


import edu.internet2.tier.shibboleth.admin.ui.security.model.Role
import edu.internet2.tier.shibboleth.admin.ui.security.model.User
import edu.internet2.tier.shibboleth.admin.ui.security.repository.OwnershipRepository
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.security.service.GroupServiceForTesting
import edu.internet2.tier.shibboleth.admin.ui.security.service.UserService
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.transaction.annotation.Transactional
import spock.lang.Shared
import spock.lang.Specification

@DataJpaTest
@ContextConfiguration(classes = [BaseDataJpaTestSetupConfiguration])
@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"])
@EntityScan("edu.internet2.tier.shibboleth.admin.ui")
abstract class BaseDataJpaTestSetup extends Specification {
static boolean setupRun = false

@Autowired
GroupServiceForTesting groupService

@Autowired
OwnershipRepository ownershipRepository

@Autowired
RoleRepository roleRepository

@Autowired
UserRepository userRepository

@Autowired
UserService userService

def setup() {
runOnce()
}

// One time setup to ensure roles are in a known good state and that we have an admin user and group
@Transactional
runOnce() {
if (setupRun) return

groupService.clearAllForTesting()
userRepository.deleteAll()
ownershipRepository.deleteAll()
roleRepository.deleteAll()

def roles = [new Role().with {
name = 'ROLE_ADMIN'
it
}, new Role().with {
name = 'ROLE_USER'
it
}, new Role().with {
name = 'ROLE_ENABLE'
it
}, new Role().with {
name = 'ROLE_NONE'
it
}]
roles.each {
if (roleRepository.findByName(it.name).isEmpty()) {
roleRepository.save(it)
}
}

if (userRepository.findByUsername("admin").isEmpty()) {
Optional<Role> adminRole = roleRepository.findByName("ROLE_ADMIN")
User adminUser = new User(username: "admin", roles: [adminRole.get()], password: "foo")
userService.save(adminUser)
}
setupRun = true
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package edu.internet2.tier.shibboleth.admin.ui

import edu.internet2.tier.shibboleth.admin.ui.configuration.ShibUIConfiguration
import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects
import edu.internet2.tier.shibboleth.admin.ui.security.model.listener.GroupUpdatedEntityListener
import edu.internet2.tier.shibboleth.admin.ui.security.model.listener.UserUpdatedEntityListener
import edu.internet2.tier.shibboleth.admin.ui.security.repository.GroupsRepository
import edu.internet2.tier.shibboleth.admin.ui.security.repository.OwnershipRepository
import edu.internet2.tier.shibboleth.admin.ui.security.service.GroupServiceForTesting
import edu.internet2.tier.shibboleth.admin.ui.security.service.GroupServiceImpl
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Import
import org.springframework.context.annotation.Primary

@Configuration
@Import(ShibUIConfiguration.class)
@ComponentScan(basePackages=[ "edu.internet2.tier.shibboleth.admin.ui.service", "edu.internet2.tier.shibboleth.admin.ui.security.service" ])
class BaseDataJpaTestSetupConfiguration {
@Bean
@Primary
GroupServiceForTesting groupServiceForTesting(GroupsRepository groupRepo, OwnershipRepository ownershipRepository) {
GroupServiceForTesting result = new GroupServiceForTesting(new GroupServiceImpl().with {
it.groupRepository = groupRepo
it.ownershipRepository = ownershipRepository
return it
})
result.ensureAdminGroupExists()
return result
}

@Bean
GroupUpdatedEntityListener groupUpdatedEntityListener(OwnershipRepository ownershipRepository) {
GroupUpdatedEntityListener listener = new GroupUpdatedEntityListener()
listener.init(ownershipRepository)
return listener
}

@Bean
OpenSamlObjects openSamlObjects() {
return new OpenSamlObjects()
}

@Bean
UserUpdatedEntityListener userUpdatedEntityListener(OwnershipRepository ownershipRepository, GroupsRepository groupRepo) {
UserUpdatedEntityListener listener = new UserUpdatedEntityListener()
listener.init(ownershipRepository, groupRepo)
return listener
}
}
Loading

0 comments on commit 3cef142

Please sign in to comment.