18f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki/* 28f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * Copyright (C) 2010 The Android Open Source Project 38f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * 48f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * Licensed under the Apache License, Version 2.0 (the "License"); 58f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * you may not use this file except in compliance with the License. 68f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * You may obtain a copy of the License at 78f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * 88f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * http://www.apache.org/licenses/LICENSE-2.0 98f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * 108f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * Unless required by applicable law or agreed to in writing, software 118f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * distributed under the License is distributed on an "AS IS" BASIS, 128f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * See the License for the specific language governing permissions and 148f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki * limitations under the License. 158f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki */ 160dc59e78e18493aecd37427531d093e800846c3eBrett Chabotpackage com.android.internal.net; 172269d1572e5fcfb725ea55f5764d8c3280d69f6dDianne Hackborn 182269d1572e5fcfb725ea55f5764d8c3280d69f6dDianne Hackbornimport com.android.internal.net.DNParser; 198f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki 208f028a94fc533e75077485a7d11a04e4de820335Makoto Onukiimport javax.security.auth.x500.X500Principal; 218f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki 228f028a94fc533e75077485a7d11a04e4de820335Makoto Onukiimport junit.framework.TestCase; 238f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki 248f028a94fc533e75077485a7d11a04e4de820335Makoto Onukipublic class DNParserTest extends TestCase { 258f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki public void testFind() { 268f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("", "cn", null); 278f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("ou=xxx", "cn", null); 288f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("ou=xxx,cn=xxx", "cn", "xxx"); 298f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("ou=xxx+cn=yyy,cn=zzz+cn=abc", "cn", "yyy"); 308f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("2.5.4.3=a,ou=xxx", "cn", "a"); // OID 318f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("cn=a,cn=b", "cn", "a"); 328f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("ou=Cc,ou=Bb,ou=Aa", "ou", "Cc"); 338f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("cn=imap.gmail.com", "cn", "imap.gmail.com"); 348f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki 358f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki // Quoted string (see http://www.ietf.org/rfc/rfc2253.txt) 368f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("o=\"\\\" a ,=<>#;\"", "o", "\" a ,=<>#;"); 378f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("o=abc\\,def", "o", "abc,def"); 388f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki 398f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki // UTF-8 (example in rfc 2253) 408f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("cn=Lu\\C4\\8Di\\C4\\87", "cn", "\u004c\u0075\u010d\u0069\u0107"); 418f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki 428f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki // whitespaces 438f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("ou=a, o= a b ,cn=x", "o", "a b"); 448f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki checkFind("o=\" a b \" ,cn=x", "o", " a b "); 458f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki } 468f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki 478f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki private void checkFind(String dn, String attrType, String expected) { 488f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki String actual = new DNParser(new X500Principal(dn)).find(attrType); 498f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki assertEquals("dn:" + dn + " attr:" + attrType, expected, actual); 508f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki } 518f028a94fc533e75077485a7d11a04e4de820335Makoto Onuki} 52