1 17 package org.apache.ldap.server.tools.schema; 18 19 20 import java.io.InputStream ; 21 import java.util.Map ; 22 23 import junit.framework.TestCase; 24 25 import org.apache.ldap.common.schema.ObjectClassTypeEnum; 26 27 28 34 public class OpenLdapSchemaParserTest extends TestCase 35 { 36 private OpenLdapSchemaParser parser; 37 38 39 protected void setUp() throws Exception 40 { 41 super.setUp(); 42 43 parser = new OpenLdapSchemaParser(); 44 parser.setParserMonitor( new ConsoleParserMonitor() ); 45 } 46 47 48 protected void tearDown() throws Exception 49 { 50 super.tearDown(); 51 parser = null; 52 } 53 54 55 public void testSimpleAttributeTypeNoLength() throws Exception 56 { 57 String attributeTypeData = "attributetype ( 2.5.4.14 NAME 'searchGuide'\n" + 58 " DESC 'RFC2256: search guide, obsoleted by enhancedSearchGuide'\n" + 59 " SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 )"; 60 61 parser.parse( attributeTypeData ); 62 Map attributeTypes = parser.getAttributeTypes(); 63 AttributeTypeLiteral type = ( AttributeTypeLiteral ) attributeTypes.get( "2.5.4.14" ); 64 65 assertNotNull( type ); 66 assertEquals( "2.5.4.14", type.getOid() ); 67 assertEquals( "searchGuide", type.getNames()[0] ); 68 assertEquals( "RFC2256: search guide, obsoleted by enhancedSearchGuide", type.getDescription() ); 69 assertEquals( "1.3.6.1.4.1.1466.115.121.1.25", type.getSyntax() ); 70 } 71 72 73 public void testSimpleAttributeTypeParse() throws Exception 74 { 75 String attributeTypeData = "# adding a comment \n" + 76 "attributetype ( 2.5.4.2 NAME 'knowledgeInformation'\n" + 77 " DESC 'RFC2256: knowledge information'\n" + 78 " EQUALITY caseIgnoreMatch\n" + 79 " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )"; 80 parser.parse( attributeTypeData ); 81 Map attributeTypes = parser.getAttributeTypes(); 82 AttributeTypeLiteral type = ( AttributeTypeLiteral ) attributeTypes.get( "2.5.4.2" ); 83 84 assertNotNull( type ); 85 assertEquals( "2.5.4.2", type.getOid() ); 86 assertEquals( "knowledgeInformation", type.getNames()[0] ); 87 assertEquals( "RFC2256: knowledge information", type.getDescription() ); 88 assertEquals( "1.3.6.1.4.1.1466.115.121.1.15", type.getSyntax() ); 89 assertEquals( 32768, type.getLength() ); 90 } 91 92 93 public void testAttributeTypeParseWithDescQuotes() throws Exception 94 { 95 String attributeTypeData = "# adding a comment \n" + 96 "attributetype ( 2.5.4.2 NAME 'knowledgeInformation'\n" + 97 " DESC 'RFC2256: \"knowledge\" information'\n" + 98 " EQUALITY caseIgnoreMatch\n" + 99 " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )"; 100 parser.parse( attributeTypeData ); 101 Map attributeTypes = parser.getAttributeTypes(); 102 AttributeTypeLiteral type = ( AttributeTypeLiteral ) attributeTypes.get( "2.5.4.2" ); 103 104 assertNotNull( type ); 105 assertEquals( "2.5.4.2", type.getOid() ); 106 assertEquals( "knowledgeInformation", type.getNames()[0] ); 107 assertEquals( "RFC2256: \\\"knowledge\\\" information", type.getDescription() ); 108 assertEquals( "1.3.6.1.4.1.1466.115.121.1.15", type.getSyntax() ); 109 assertEquals( 32768, type.getLength() ); 110 } 111 112 113 public void testComplexAttributeTypeParse() throws Exception 114 { 115 String attributeTypeData = "# adding a comment \n" + 116 "attributetype ( 2.5.4.2 NAME ( 'knowledgeInformation' 'asdf' ) \n" + 117 " DESC 'RFC2256: knowledge information'\n" + 118 " EQUALITY caseIgnoreMatch\n" + 119 " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )"; 120 parser.parse( attributeTypeData ); 121 Map attributeTypes = parser.getAttributeTypes(); 122 AttributeTypeLiteral type = ( AttributeTypeLiteral ) attributeTypes.get( "2.5.4.2" ); 123 124 assertNotNull( type ); 125 assertEquals( "2.5.4.2", type.getOid() ); 126 assertEquals( "knowledgeInformation", type.getNames()[0] ); 127 assertEquals( "RFC2256: knowledge information", type.getDescription() ); 128 assertEquals( "1.3.6.1.4.1.1466.115.121.1.15", type.getSyntax() ); 129 assertEquals( 32768, type.getLength() ); 130 } 131 132 133 public void testObjectClassParse() throws Exception 134 { 135 String objectClassData = "objectclass ( 2.5.6.6 NAME 'person'\n" + 136 " DESC 'RFC2256: a person'\n" + 137 " SUP top STRUCTURAL\n" + 138 " MUST ( sn $ cn )\n" + 139 " MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )"; 140 parser.parse( objectClassData ); 141 Map objectClasses = parser.getObjectClassTypes(); 142 ObjectClassLiteral objectClass = ( ObjectClassLiteral ) objectClasses.get( "2.5.6.6" ); 143 144 assertNotNull( objectClass ); 145 assertEquals( "2.5.6.6", objectClass.getOid() ); 146 assertEquals( "person", objectClass.getNames()[0] ); 147 assertEquals( "RFC2256: a person", objectClass.getDescription() ); 148 assertEquals( ObjectClassTypeEnum.STRUCTURAL, objectClass.getClassType() ); 149 assertEquals( "sn", objectClass.getMust()[0] ); 150 assertEquals( "cn", objectClass.getMust()[1] ); 151 assertEquals( "userPassword", objectClass.getMay()[0] ); 152 assertEquals( "telephoneNumber", objectClass.getMay()[1] ); 153 assertEquals( "seeAlso", objectClass.getMay()[2] ); 154 assertEquals( "description", objectClass.getMay()[3] ); 155 } 156 157 158 public void testObjectClassMultipleNames() throws Exception 159 { 160 String objectClassData = "objectclass ( 0.9.2342.19200300.100.4.4\n" + 161 "\tNAME ( 'pilotPerson' 'newPilotPerson' )\n" + 162 "\tSUP person STRUCTURAL\n" + 163 "\tMAY ( userid $ textEncodedORAddress $ rfc822Mailbox $\n" + 164 "\t\tfavouriteDrink $ roomNumber $ userClass $\n" + 165 "\t\thomeTelephoneNumber $ homePostalAddress $ secretary $\n" + 166 "\t\tpersonalTitle $ preferredDeliveryMethod $ businessCategory $\n" + 167 "\t\tjanetMailbox $ otherMailbox $ mobileTelephoneNumber $\n" + 168 "\t\tpagerTelephoneNumber $ organizationalStatus $\n" + 169 "\t\tmailPreferenceOption $ personalSignature )\n" + 170 "\t)"; 171 parser.parse( objectClassData ); 172 Map objectClasses = parser.getObjectClassTypes(); 173 ObjectClassLiteral objectClass = ( ObjectClassLiteral ) 174 objectClasses.get( "0.9.2342.19200300.100.4.4" ); 175 176 assertNotNull( objectClass ); 177 assertEquals( "0.9.2342.19200300.100.4.4", objectClass.getOid() ); 178 assertEquals( "pilotPerson", objectClass.getNames()[0] ); 179 assertEquals( "newPilotPerson", objectClass.getNames()[1] ); 180 assertEquals( ObjectClassTypeEnum.STRUCTURAL, objectClass.getClassType() ); 181 assertEquals( "person", objectClass.getSuperiors()[0] ); 182 183 assertEquals( "userid", objectClass.getMay()[0] ); 184 assertEquals( "textEncodedORAddress", objectClass.getMay()[1] ); 185 assertEquals( "rfc822Mailbox", objectClass.getMay()[2] ); 186 assertEquals( "favouriteDrink", objectClass.getMay()[3] ); 187 assertEquals( "roomNumber", objectClass.getMay()[4] ); 188 assertEquals( "userClass", objectClass.getMay()[5] ); 189 assertEquals( "homeTelephoneNumber", objectClass.getMay()[6] ); 190 assertEquals( "homePostalAddress", objectClass.getMay()[7] ); 191 assertEquals( "secretary", objectClass.getMay()[8] ); 192 assertEquals( "personalTitle", objectClass.getMay()[9] ); 193 assertEquals( "preferredDeliveryMethod", objectClass.getMay()[10] ); 194 assertEquals( "businessCategory", objectClass.getMay()[11] ); 195 assertEquals( "janetMailbox", objectClass.getMay()[12] ); 196 assertEquals( "otherMailbox", objectClass.getMay()[13] ); 197 assertEquals( "mobileTelephoneNumber", objectClass.getMay()[14] ); 198 assertEquals( "pagerTelephoneNumber", objectClass.getMay()[15] ); 199 assertEquals( "organizationalStatus", objectClass.getMay()[16] ); 200 assertEquals( "mailPreferenceOption", objectClass.getMay()[17] ); 201 assertEquals( "personalSignature", objectClass.getMay()[18] ); 202 203 } 204 205 206 public void testAutoFsSchemaFile() throws Exception 207 { 208 InputStream in = getClass().getResourceAsStream( "autofs.schema" ); 209 parser.parse( in ); 210 } 211 212 213 public void testCoreSchemaFile() throws Exception 214 { 215 InputStream in = getClass().getResourceAsStream( "core.schema" ); 216 parser.parse( in ); 217 } 218 219 220 public void testCorbaSchemaFile() throws Exception 221 { 222 InputStream in = getClass().getResourceAsStream( "corba.schema" ); 223 parser.parse( in ); 224 } 225 226 227 public void testCosineSchemaFile() throws Exception 228 { 229 InputStream in = getClass().getResourceAsStream( "cosine.schema" ); 230 parser.parse( in ); 231 } 232 233 234 public void testInetOrgPersonSchemaFile() throws Exception 235 { 236 InputStream in = getClass().getResourceAsStream( "inetorgperson.schema" ); 237 parser.parse( in ); 238 } 239 240 241 public void testJavaSchemaFile() throws Exception 242 { 243 InputStream in = getClass().getResourceAsStream( "java.schema" ); 244 parser.parse( in ); 245 } 246 247 248 public void testMiscSchemaFile() throws Exception 249 { 250 InputStream in = getClass().getResourceAsStream( "misc.schema" ); 251 parser.parse( in ); 252 } 253 254 255 public void testNisSchemaFile() throws Exception 256 { 257 InputStream in = getClass().getResourceAsStream( "nis.schema" ); 258 parser.parse( in ); 259 } 260 } 261 | Popular Tags |