Skip to content

Commit

Permalink
1263(1336)
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Jun 24, 2019
1 parent ee068aa commit 5ff6ec7
Show file tree
Hide file tree
Showing 11 changed files with 117 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package edu.internet2.tier.shibboleth.admin.ui.repository.envers

import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.EntitiesVersioningConfiguration
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.domain.filters.EntityRoleWhiteListFilter
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.LocalDynamicMetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.repository.FilterRepository
import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository
import edu.internet2.tier.shibboleth.admin.ui.service.MetadataResolverVersionService
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.PlatformTransactionManager
import spock.lang.Specification

import javax.persistence.EntityManager

/**
* Testing metadata resolver envers versioning
*/
@DataJpaTest
@ContextConfiguration(classes = [CoreShibUiConfiguration, InternationalizationConfiguration, SearchConfiguration, TestConfiguration, EntitiesVersioningConfiguration])
@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"])
@EntityScan("edu.internet2.tier.shibboleth.admin.ui")
class MetadataFilterEnversVersioningTests extends Specification {

@Autowired
MetadataResolverRepository metadataResolverRepository

@Autowired
FilterRepository filterRepository

@Autowired
MetadataResolverVersionService metadataResolverVersionService

@Autowired
PlatformTransactionManager txMgr


def "test versioning of LocalDynamicMetadataResolver"() {
when: 'Add initial filter'
LocalDynamicMetadataResolver mr = new LocalDynamicMetadataResolver(name: 'ldmr')
mr = EnversTestsSupport.doInExplicitTransaction(txMgr) {
metadataResolverRepository.save(mr)
}
EntityRoleWhiteListFilter filter = new EntityRoleWhiteListFilter().with {
it.retainedRoles = ['role1']
it
}
mr.metadataFilters.add(filter)
mr = EnversTestsSupport.doInExplicitTransaction(txMgr) {
metadataResolverRepository.save(mr)
}
def versions = metadataResolverVersionService.findVersionsForMetadataResolver(mr.resourceId)
def mrv1 = metadataResolverVersionService.findSpecificVersionOfMetadataResolver(mr.resourceId, versions[0].id)
def mrv2 = metadataResolverVersionService.findSpecificVersionOfMetadataResolver(mr.resourceId, versions[1].id)


then:
versions.size() == 2
mrv1.metadataFilters.size() == 0
mrv2.metadataFilters.size() == 1

when: 'Update filter'
filter = filterRepository.findByResourceId(filter.resourceId)
filter.retainedRoles = ['role1', 'role2']
filter = EnversTestsSupport.doInExplicitTransaction(txMgr) {
filterRepository.save(filter)
}
mr.markAsModified()
mr = EnversTestsSupport.doInExplicitTransaction(txMgr) {
metadataResolverRepository.save(mr)
}
versions = metadataResolverVersionService.findVersionsForMetadataResolver(mr.resourceId)
mrv1 = metadataResolverVersionService.findSpecificVersionOfMetadataResolver(mr.resourceId, versions[0].id)
mrv2 = metadataResolverVersionService.findSpecificVersionOfMetadataResolver(mr.resourceId, versions[1].id)
def mrv3 = metadataResolverVersionService.findSpecificVersionOfMetadataResolver(mr.resourceId, versions[2].id)

then:
versions.size() == 3
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@ class MetadataResolverEnversVersioningTests extends Specification {
@Autowired
PlatformTransactionManager txMgr

@Autowired
OpenSamlObjects openSamlObjects

def "test versioning of LocalDynamicMetadataResolver"() {
setup:
def expectedModifiedPersistentEntities = [LocalDynamicMetadataResolver.name]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.envers.Audited;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
Expand All @@ -28,6 +29,7 @@
@Getter
@Setter
@ToString
@Audited
public class EntityAttributesFilter extends MetadataFilter {

public EntityAttributesFilter() {
Expand Down Expand Up @@ -70,4 +72,4 @@ public void intoTransientRepresentation() {
this.attributeRelease = getAttributeReleaseListFromAttributeList(this.attributes);
this.relyingPartyOverrides = getRelyingPartyOverridesRepresentationFromAttributeList(this.attributes);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.filters;

import com.fasterxml.jackson.annotation.JsonIgnore;
import edu.internet2.tier.shibboleth.admin.ui.domain.AbstractAuditable;
import lombok.EqualsAndHashCode;
import org.hibernate.envers.AuditOverride;
import org.hibernate.envers.Audited;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -14,6 +15,8 @@

@Entity
@EqualsAndHashCode(callSuper = true)
@Audited
@AuditOverride(forClass = AbstractAuditable.class)
public class EntityAttributesFilterTarget extends AbstractAuditable {
public enum EntityAttributesFilterTargetType {
ENTITY, CONDITION_SCRIPT, CONDITION_REF, REGEX
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.envers.Audited;

import javax.persistence.CollectionTable;
import javax.persistence.Column;
Expand All @@ -19,6 +20,7 @@
@Getter
@Setter
@ToString
@Audited
public class EntityRoleWhiteListFilter extends MetadataFilter {

public EntityRoleWhiteListFilter() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.envers.AuditOverride;
import org.hibernate.envers.Audited;

import javax.persistence.Column;
Expand All @@ -35,6 +36,8 @@
@JsonSubTypes.Type(value=SignatureValidationFilter.class, name="SignatureValidation"),
@JsonSubTypes.Type(value=RequiredValidUntilFilter.class, name="RequiredValidUntil"),
@JsonSubTypes.Type(value=NameIdFormatFilter.class, name="NameIDFormat")})
@Audited
@AuditOverride(forClass = AbstractAuditable.class)
public class MetadataFilter extends AbstractAuditable {

@JsonProperty("@type")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.envers.Audited;

import javax.persistence.CascadeType;
import javax.persistence.ElementCollection;
Expand All @@ -17,6 +18,7 @@
@Getter
@Setter
@ToString
@Audited
public class NameIdFormatFilter extends MetadataFilter {

public NameIdFormatFilter() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import edu.internet2.tier.shibboleth.admin.ui.domain.AbstractAuditable;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.hibernate.envers.AuditOverride;
import org.hibernate.envers.Audited;

import javax.persistence.ElementCollection;
import javax.persistence.Entity;
Expand All @@ -13,6 +15,8 @@
@Entity
@EqualsAndHashCode(callSuper = true)
@ToString
@Audited
@AuditOverride(forClass = AbstractAuditable.class)
public class NameIdFormatFilterTarget extends AbstractAuditable {

public enum NameIdFormatFilterTargetType {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.envers.Audited;

import javax.persistence.Entity;

Expand All @@ -12,6 +13,7 @@
@Getter
@Setter
@ToString
@Audited
public class RequiredValidUntilFilter extends MetadataFilter {

public RequiredValidUntilFilter() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.envers.Audited;

import javax.persistence.Entity;

Expand All @@ -12,6 +13,7 @@
@Getter
@Setter
@ToString
@Audited
public class SignatureValidationFilter extends MetadataFilter {

public SignatureValidationFilter() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,11 @@ public class MetadataResolver extends AbstractAuditable {

private Boolean doInitialization = true;

@JsonIgnore
private Long versionModifiedTimestamp;

@OneToMany(cascade = CascadeType.ALL)
@OrderColumn
@NotAudited
private List<MetadataFilter> metadataFilters = new ArrayList<>();

@Transient
Expand All @@ -89,4 +91,8 @@ public int getVersion() {
}
return this.hashCode();
}

public void markAsModified() {
this.versionModifiedTimestamp = System.currentTimeMillis();
}
}

0 comments on commit 5ff6ec7

Please sign in to comment.