/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.resolver; import java.util.List; import java.util.Locale; import org.jdom.Document; import org.jdom.Element; import org.joda.time.DateTime; import org.junit.Before; import org.junit.Test; import org.springframework.mock.web.MockHttpServletRequest; import com.enonic.cms.framework.util.JDOMUtil; import com.enonic.cms.framework.xml.XMLDocument; import com.enonic.cms.core.resolver.mock.ResolverHttpRequestInputCreatorMock; import com.enonic.cms.core.resolver.mock.ResolverHttpRequestInputXMLCreatorMock; import com.enonic.cms.core.security.group.GroupEntity; import com.enonic.cms.core.security.group.GroupType; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.security.user.UserKey; import com.enonic.cms.core.security.user.UserType; import com.enonic.cms.core.security.userstore.UserStoreEntity; import com.enonic.cms.core.security.userstore.UserStoreKey; import com.enonic.cms.core.structure.SiteEntity; import com.enonic.cms.api.plugin.ext.userstore.UserFields; import static junit.framework.Assert.assertTrue; import static org.junit.Assert.*; /** * Created by rmy - Date: Aug 24, 2009 */ public class ResolverInputXMLCreatorTest { private ResolverInputXMLCreator resolverInputXMLCreator; private ResolverHttpRequestInputCreatorMock httpRequestInputCreatorMock; private ResolverHttpRequestInputXMLCreatorMock httpRequestInputXMLCreatorMock; private static final Locale USER_LOCALE = new Locale( "no_NB" ); @Before public void setUp() { resolverInputXMLCreator = new ResolverInputXMLCreator(); httpRequestInputCreatorMock = new ResolverHttpRequestInputCreatorMock(); httpRequestInputXMLCreatorMock = new ResolverHttpRequestInputXMLCreatorMock(); resolverInputXMLCreator.setResolverHttpRequestInputCreator( httpRequestInputCreatorMock ); resolverInputXMLCreator.setResolverHttpRequestInputXMLCreator( httpRequestInputXMLCreatorMock ); } @Test public void testDocumentStucture() { MockHttpServletRequest request = new MockHttpServletRequest(); ResolverContext context = new ResolverContext( request, new SiteEntity() ); XMLDocument input = resolverInputXMLCreator.buildResolverInputXML( context ); Document doc = input.getAsJDOMDocument(); Element root = doc.getRootElement(); assertEquals( root.getName(), "context" ); assertEquals( root.getContentSize(), 2 ); List<Element> children = root.getChildren(); for ( Element child : children ) { assertTrue( "Unexptected element found in XML", child.getName().equals( "request" ) || child.getName().equals( "user" ) ); } } @Test public void testUserDocument() { MockHttpServletRequest request = new MockHttpServletRequest(); ResolverContext context = new ResolverContext( request, new SiteEntity() ); context.setUser( createNormalUser() ); XMLDocument input = resolverInputXMLCreator.buildResolverInputXML( context ); Document doc = input.getAsJDOMDocument(); Element root = doc.getRootElement(); Element userElement = JDOMUtil.getElement( root, "user" ); assertNotNull( "UserElement shold exist in XML", userElement ); Element localeElement = JDOMUtil.getElement( userElement, "locale" ); assertNotNull( "locale-element shold exist in XML", localeElement ); String locale = localeElement.getValue(); assertEquals( "locale should be in XML with correct value", USER_LOCALE.toString().toLowerCase(), locale.toLowerCase() ); } private UserEntity createNormalUser() { UserEntity user = new UserEntity(); user.setKey( new UserKey( "1" ) ); user.setDeleted( false ); user.setEmail( "email@example.com" ); user.setDisplayName( "DisplayName" ); user.setName( "uid" ); user.setSyncValue( "syncValue" ); user.setType( UserType.NORMAL ); user.setTimestamp( new DateTime() ); UserFields userFields = new UserFields(); userFields.setLocale( USER_LOCALE ); user.setUserFields( userFields ); UserStoreEntity userStore = new UserStoreEntity(); userStore.setName( "myUserStore" ); userStore.setDefaultStore( true ); userStore.setDeleted( false ); userStore.setKey( new UserStoreKey( "1" ) ); user.setUserStore( userStore ); GroupEntity userGroup = new GroupEntity(); userGroup.setDeleted( 0 ); userGroup.setDescription( null ); userGroup.setName( "userGroup" + user.getKey() ); // userGroup.setSyncValue( user.getSyncValue() ); userGroup.setUser( user ); userGroup.setType( GroupType.USER ); userGroup.setRestricted( 1 ); user.setUserGroup( userGroup ); return user; } }