Skip to content

Commit

Permalink
Polymorphis Jackson test for EntityRoleWhiteListFilter
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed May 30, 2018
1 parent 2044bdc commit 82ad530
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.filters;

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import edu.internet2.tier.shibboleth.admin.ui.domain.AbstractAuditable;
import lombok.EqualsAndHashCode;
import lombok.Getter;
Expand All @@ -24,6 +26,8 @@
@Getter
@Setter
@ToString
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
@JsonSubTypes({@JsonSubTypes.Type(value=EntityRoleWhiteListFilter.class, name="EntityRoleWhiteList")})
public class MetadataFilter extends AbstractAuditable {

private String name;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package edu.internet2.tier.shibboleth.admin.ui.domain

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.SerializationFeature
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.controller.FilterController
import edu.internet2.tier.shibboleth.admin.ui.domain.EntityAttributesFilter
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityRoleWhiteListFilter
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.MetadataFilter
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository
import edu.internet2.tier.shibboleth.admin.ui.service.FilterService
import edu.internet2.tier.shibboleth.admin.ui.service.MetadataResolverService
import edu.internet2.tier.shibboleth.admin.ui.util.RandomGenerator
import edu.internet2.tier.shibboleth.admin.ui.util.TestObjectGenerator
import edu.internet2.tier.shibboleth.admin.util.AttributeUtility
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
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.test.web.servlet.result.MockMvcResultHandlers
import org.springframework.test.web.servlet.setup.MockMvcBuilders
import org.w3c.dom.Document
import spock.lang.Specification

import static org.hamcrest.CoreMatchers.containsString
import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*

class PolymorphicFiltersJacksonHandlingTests extends Specification {

@Autowired
FilterService filterService

ObjectMapper mapper

def setup() {
mapper = new ObjectMapper()
mapper.enable(SerializationFeature.INDENT_OUTPUT);
}

def "Correct polymorphic serialization of EntityRoleWhiteListFilter"() {
given:
def givenFilterJson = """
{
"type" : "EntityRoleWhiteList",
"createdDate" : null,
"modifiedDate" : null,
"createdBy" : null,
"modifiedBy" : null,
"name" : "EntityRoleWhiteListFilter",
"resourceId" : "r1",
"filterEnabled" : false,
"version" : 0,
"removeRolelessEntityDescriptors" : true,
"removeEmptyEntitiesDescriptors" : true,
"retainedRoles" : [ "role1", "role2" ],
"audId" : null
}
"""

when:
def deSerializedFilter = mapper.readValue(givenFilterJson, MetadataFilter)
def roundTripFilter = mapper.readValue(mapper.writeValueAsString(deSerializedFilter), MetadataFilter)


then:
roundTripFilter == deSerializedFilter

and:
deSerializedFilter instanceof EntityRoleWhiteListFilter
roundTripFilter instanceof EntityRoleWhiteListFilter
}
}

0 comments on commit 82ad530

Please sign in to comment.