/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.directory.studio.schemaeditor.model.io;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collections;
import org.apache.directory.api.ldap.model.schema.MutableAttributeType;
import org.apache.directory.api.ldap.model.schema.MutableObjectClass;
import org.apache.directory.api.ldap.model.schema.ObjectClassTypeEnum;
import org.apache.directory.api.ldap.model.schema.UsageEnum;
import org.junit.Before;
import org.junit.Test;
/**
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
public class OpenLdapSchemaFileExporterTest
{
private MutableObjectClass objectClassSimple;
private MutableObjectClass objectClassComplex;
private MutableAttributeType attributeTypeSimple;
private MutableAttributeType attributeTypeComplex;
@Before
public void setUp()
{
objectClassSimple = new MutableObjectClass( "1.2.3.4" );
objectClassSimple.setNames( "name0" );
objectClassSimple.setMustAttributeTypeOids( Arrays.asList( "att0" ) );
objectClassSimple.setSchemaName( "dummy" );
objectClassComplex = new MutableObjectClass( "1.2.3.4" );
objectClassComplex.setNames( "name1", "name2" );
objectClassComplex.setDescription( "description with 'quotes'" );
objectClassComplex.setObsolete( true );
objectClassComplex.setSuperiorOids( Collections.singletonList( "1.3.5.7" ) );
objectClassComplex.setType( ObjectClassTypeEnum.AUXILIARY );
objectClassComplex.setMustAttributeTypeOids( Arrays.asList( "att1", "att2" ) );
objectClassComplex.setMayAttributeTypeOids( Arrays.asList( "att3", "att4" ) );
objectClassComplex.setSchemaName( "dummy" );
attributeTypeSimple = new MutableAttributeType( "1.2.3.4" );
attributeTypeSimple.setNames( "name0" );
attributeTypeSimple.setEqualityOid( "matchingRule0" );
attributeTypeSimple.setSyntaxOid( "2.3.4.5" );
attributeTypeSimple.setSyntaxLength( 512 );
attributeTypeSimple.setCollective( true );
attributeTypeSimple.setSchemaName( "dummy" );
attributeTypeComplex = new MutableAttributeType( "1.2.3.4" );
attributeTypeComplex.setNames( "name1", "name2" );
attributeTypeComplex.setDescription( "description with 'quotes'" );
attributeTypeComplex.setObsolete( true );
attributeTypeComplex.setSuperiorOid( "superAttr" );
attributeTypeComplex.setEqualityOid( "matchingRule1" );
attributeTypeComplex.setOrderingOid( "matchingRule2" );
attributeTypeComplex.setSubstringOid( "matchingRule3" );
attributeTypeComplex.setSingleValued( true );
attributeTypeComplex.setUserModifiable( false );
attributeTypeComplex.setUsage( UsageEnum.DIRECTORY_OPERATION );
attributeTypeComplex.setSchemaName( "dummy" );
}
@Test
public void testOpenLdapSchemaRendererObjectClassSimple()
{
String actual = OpenLdapSchemaFileExporter.toSourceCode( objectClassSimple );
String expected = "objectclass ( 1.2.3.4 NAME 'name0'\n\tSTRUCTURAL\n\tMUST att0 )";
assertEquals( expected, actual );
}
@Test
public void testOpenLdapSchemaRendererObjectClassComplex()
{
String actual = OpenLdapSchemaFileExporter.toSourceCode( objectClassComplex );
String expected = "objectclass ( 1.2.3.4 NAME ( 'name1' 'name2' )\n\tDESC 'description with \\27quotes\\27'\n\tOBSOLETE\n\tSUP 1.3.5.7\n\tAUXILIARY\n\tMUST ( att1 $ att2 )\n\tMAY ( att3 $ att4 ) )";
assertEquals( expected, actual );
}
@Test
public void testOpenLdapSchemaRendererAttributeTypeSimple()
{
String actual = OpenLdapSchemaFileExporter.toSourceCode( attributeTypeSimple );
String expected = "attributetype ( 1.2.3.4 NAME 'name0'\n\tEQUALITY matchingRule0\n\tSYNTAX 2.3.4.5{512}\n\tCOLLECTIVE\n\tUSAGE userApplications )";
assertEquals( expected, actual );
}
@Test
public void testOpenLdapSchemaRendererAttributeTypeComplex()
{
String actual = OpenLdapSchemaFileExporter.toSourceCode( attributeTypeComplex );
String expected = "attributetype ( 1.2.3.4 NAME ( 'name1' 'name2' )\n\tDESC 'description with \\27quotes\\27'\n\tOBSOLETE\n\tSUP superAttr\n\tEQUALITY matchingRule1\n\tORDERING matchingRule2\n\tSUBSTR matchingRule3\n\tSINGLE-VALUE\n\tNO-USER-MODIFICATION\n\tUSAGE directoryOperation )";
assertEquals( expected, actual );
}
}