/** * Copyright (c) 2008-2011 Sonatype, Inc. * All rights reserved. Includes the third-party code listed at http://www.sonatype.com/products/nexus/attributions. * * This program is free software: you can redistribute it and/or modify it only under the terms of the GNU Affero General * Public License Version 3 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License Version 3 * for more details. * * You should have received a copy of the GNU Affero General Public License Version 3 along with this program. If not, see * http://www.gnu.org/licenses. * * Sonatype Nexus (TM) Open Source Version is available from Sonatype, Inc. Sonatype and Sonatype Nexus are trademarks of * Sonatype, Inc. Apache Maven is a trademark of the Apache Foundation. M2Eclipse is a trademark of the Eclipse Foundation. * All other trademarks are the property of their respective owners. */ package org.sonatype.nexus.security.ldap.realms.api; import java.text.SimpleDateFormat; import junit.framework.Assert; import junit.framework.TestCase; import org.codehaus.plexus.util.StringUtils; import org.sonatype.nexus.security.ldap.realms.api.XStreamInitalizer; import org.sonatype.nexus.security.ldap.realms.api.dto.LdapConnectionInfoDTO; import org.sonatype.nexus.security.ldap.realms.api.dto.LdapConnectionInfoResponse; import org.sonatype.nexus.security.ldap.realms.api.dto.LdapUserAndGroupConfigurationDTO; import org.sonatype.nexus.security.ldap.realms.api.dto.LdapUserAndGroupConfigurationResponse; import org.sonatype.nexus.security.ldap.realms.api.dto.LdapUserListResponse; import org.sonatype.nexus.security.ldap.realms.api.dto.LdapUserResponseDTO; import org.sonatype.nexus.security.ldap.realms.test.api.dto.LdapAuthenticationTestRequest; import org.sonatype.nexus.security.ldap.realms.test.api.dto.LdapUserAndGroupConfigTestRequest; import org.sonatype.nexus.security.ldap.realms.test.api.dto.LdapUserAndGroupConfigTestRequestDTO; import org.sonatype.plexus.rest.xstream.xml.LookAheadXppDriver; import com.thoughtworks.xstream.XStream; public class MarshalUnmarchalTest extends TestCase { private SimpleDateFormat dateFormat = new SimpleDateFormat( "MM/dd/yyyy" ); private XStream xstreamXML; private XStream xstreamJSON; protected void setUp() throws Exception { super.setUp(); xstreamXML = new XStream( new LookAheadXppDriver() ); new XStreamInitalizer().initXStream( xstreamXML ); // xstreamJSON = napp.doConfigureXstream( new XStream( new JsonOrgHierarchicalStreamDriver() ) ); // new XStreamInitalizer().initXStream( xstreamJSON ); } public void testLdapConnectionInfoResponse() throws Exception { LdapConnectionInfoResponse resource = new LdapConnectionInfoResponse(); LdapConnectionInfoDTO dto = new LdapConnectionInfoDTO(); resource.setData( dto ); dto.setAuthScheme( "authScheme" ); dto.setHost( "host" ); dto.setPort( 123 ); dto.setProtocol( "protocol" ); dto.setRealm( "realm" ); dto.setSearchBase( "searchBase" ); dto.setSystemPassword( "systemPassword" ); dto.setSystemUsername( "systemUsername" ); validateXmlHasNoPackageNames( resource ); } public void testLdapUserAndGroupConfigurationResponse() throws Exception { LdapUserAndGroupConfigurationResponse resource = new LdapUserAndGroupConfigurationResponse(); LdapUserAndGroupConfigurationDTO dto = new LdapUserAndGroupConfigurationDTO(); resource.setData( dto ); dto.setUserMemberOfAttribute( "userMemberOfAttribute" ); dto.setEmailAddressAttribute( "emailAddressAttribute" ); dto.setGroupBaseDn( "groupBaseDn" ); dto.setGroupIdAttribute( "groupIdAttribute" ); dto.setGroupMemberFormat( "groupMemberFormat" ); dto.setGroupMemberAttribute( "groupMemberAttribute" ); dto.setGroupMemberFormat( "groupMemberFormat" ); dto.setGroupObjectClass( "groupObjectClass" ); dto.setUserBaseDn( "userBaseDn" ); dto.setUserIdAttribute( "userIdAttribute" ); dto.setUserObjectClass( "userObjectClass" ); dto.setUserPasswordAttribute( "userPasswordAttribute" ); dto.setUserRealNameAttribute( "userRealNameAttribute" ); dto.setUserSubtree( true ); validateXmlHasNoPackageNames( resource ); } public void testLdapUserListResponse() throws Exception { LdapUserListResponse resource = new LdapUserListResponse(); LdapUserResponseDTO dto1 = new LdapUserResponseDTO(); resource.addLdapUserRoleMapping( dto1 ); dto1.setEmail( "email1" ); dto1.setName( "name1" ); dto1.setUserId( "userId1" ); dto1.addRole( "role1" ); dto1.addRole( "role2" ); LdapUserResponseDTO dto2 = new LdapUserResponseDTO(); resource.addLdapUserRoleMapping( dto2 ); dto2.setEmail( "email2" ); dto2.setName( "name2" ); dto2.setUserId( "userId2" ); dto2.addRole( "role3" ); dto2.addRole( "role4" ); validateXmlHasNoPackageNames( resource ); } public void testLdapUserAndGroupConfigTestRequest() throws Exception { LdapUserAndGroupConfigTestRequest resource = new LdapUserAndGroupConfigTestRequest(); LdapUserAndGroupConfigTestRequestDTO dto = new LdapUserAndGroupConfigTestRequestDTO(); resource.setData( dto ); dto.setAuthScheme( "authScheme" ); dto.setHost( "host" ); dto.setPort( 123 ); dto.setProtocol( "protocol" ); dto.setRealm( "realm" ); dto.setSearchBase( "searchBase" ); dto.setSystemPassword( "systemPassword" ); dto.setSystemUsername( "systemUsername" ); dto.setUserMemberOfAttribute( "userMemberOfAttribute" ); dto.setEmailAddressAttribute( "emailAddressAttribute" ); dto.setGroupBaseDn( "groupBaseDn" ); dto.setGroupIdAttribute( "groupIdAttribute" ); dto.setGroupMemberFormat( "groupMemberFormat" ); dto.setGroupMemberAttribute( "groupMemberAttribute" ); dto.setGroupMemberFormat( "groupMemberFormat" ); dto.setGroupObjectClass( "groupObjectClass" ); dto.setUserBaseDn( "userBaseDn" ); dto.setUserIdAttribute( "userIdAttribute" ); dto.setUserObjectClass( "userObjectClass" ); dto.setUserPasswordAttribute( "userPasswordAttribute" ); dto.setUserRealNameAttribute( "userRealNameAttribute" ); dto.setUserSubtree( true ); validateXmlHasNoPackageNames( resource ); } public void testLdapAuthenticationTestRequest() throws Exception { LdapAuthenticationTestRequest resource = new LdapAuthenticationTestRequest(); LdapConnectionInfoDTO dto = new LdapConnectionInfoDTO(); resource.setData( dto ); dto.setAuthScheme( "authScheme" ); dto.setHost( "host" ); dto.setPort( 123 ); dto.setProtocol( "protocol" ); dto.setRealm( "realm" ); dto.setSearchBase( "searchBase" ); dto.setSystemPassword( "systemPassword" ); dto.setSystemUsername( "systemUsername" ); validateXmlHasNoPackageNames( resource ); } private void validateXmlHasNoPackageNames( Object obj ) { String xml = this.xstreamXML.toXML( obj ); // quick way of looking for the class="org attribute // i don't want to parse a dom to figure this out int totalCount = StringUtils.countMatches( xml, "org.sonatype" ); totalCount += StringUtils.countMatches( xml, "com.sonatype" ); // check the counts Assert.assertFalse( "Found package name in XML:\n" + xml, totalCount > 0 ); // // print out each type of method, so i can rafb it // System.out.println( "\n\nClass: "+ obj.getClass() +"\n" ); // System.out.println( xml+"\n" ); // // Assert.assertFalse( "Found <string> XML: " + obj.getClass() + "\n" + xml, xml.contains( "<string>" ) ); } }