17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2009, International Business Machines Corporation and * 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. * 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.stringprep; 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.dev.test.TestFmwk; 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.StringPrep; 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.StringPrepParseException; 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * @author Michael Ow 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class TestStringPrepProfiles extends TestFmwk { 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static void main(String[] args) throws Exception { 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestStringPrepProfiles().run(args); 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * The format of the test cases should be the following: 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * { 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Profile name 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * src string1 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * expected result1 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * src string2 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * expected result2 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * ... 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * } 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * *Note: For expected failures add FAIL to beginning of the source string and for expected result use "FAIL". 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static String[][] testCases = { 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC4013_SASLPREP", 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "user:\u00A0\u0AC6\u1680\u00ADpassword1", 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "user: \u0AC6 password1" 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC4011_MIB", 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "Policy\u034F\u200DBase\u0020d\u1806\u200C", 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "PolicyBase d" 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC4505_TRACE", 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD", 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD" 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC4518_LDAP", 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing", 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "LdapfiTest ing" 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC4518_LDAP_CI", 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing12345", 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "ldapfitest ing12345" 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC3920_RESOURCEPREP", 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "ServerXM\u2060\uFE00\uFE09PP s p ", 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "ServerXMPP s p " 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC3920_NODEPREP", 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "Server\u200DXMPPGreEK\u03D0", 697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "serverxmppgreek\u03B2" 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC3722_ISCSI", 737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "InternetSmallComputer\uFB01\u0032\u2075Interface", 747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "internetsmallcomputerfi25interface", 757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "FAILThisShouldFailBecauseOfThis\u002F", 767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "FAIL" 777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC3530_NFS4_CS_PREP", 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "\u00ADUser\u2060Name@ \u06DDDOMAIN.com", 817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "UserName@ \u06DDDOMAIN.com" 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC3530_NFS4_CS_PREP_CI", 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "\u00ADUser\u2060Name@ \u06DDDOMAIN.com", 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "username@ \u06DDdomain.com" 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC3530_NFS4_CIS_PREP", 907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "AA\u200C\u200D @@DomAin.org", 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "aa @@domain.org" 927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC3530_NFS4_MIXED_PREP_PREFIX", 957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "PrefixUser \u007F\uFB01End", 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "PrefixUser \u007FfiEnd" 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }, 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "RFC3530_NFS4_MIXED_PREP_SUFFIX", 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "SuffixDomain \u007F\uFB01EnD", 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "suffixdomain \u007Ffiend" 1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int getOptionFromProfileName(String profileName) { 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (profileName.equals("RFC4013_SASLPREP")) { 1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC4013_SASLPREP; 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC4011_MIB")) { 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC4011_MIB; 1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC4505_TRACE")) { 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC4505_TRACE; 1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC4518_LDAP")) { 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC4518_LDAP; 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC4518_LDAP_CI")) { 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC4518_LDAP_CI; 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC3920_RESOURCEPREP")) { 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC3920_RESOURCEPREP; 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC3920_NODEPREP")) { 1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC3920_NODEPREP; 1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC3722_ISCSI")) { 1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC3722_ISCSI; 1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC3530_NFS4_CS_PREP")) { 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC3530_NFS4_CS_PREP; 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC3530_NFS4_CS_PREP_CI")) { 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC3530_NFS4_CS_PREP_CI; 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC3530_NFS4_CIS_PREP")) { 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC3530_NFS4_CIS_PREP; 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC3530_NFS4_MIXED_PREP_PREFIX")) { 1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC3530_NFS4_MIXED_PREP_PREFIX; 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (profileName.equals("RFC3530_NFS4_MIXED_PREP_SUFFIX")) { 1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return StringPrep.RFC3530_NFS4_MIXED_PREP_SUFFIX; 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Should not happen. 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return -1; 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestProfiles() { 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String profileName = null; 1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert StringPrep sprep = null; 1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String result = null; 1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String src = null; 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String expected = null; 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int i = 0; i < testCases.length; i++) { 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int j = 0; j < testCases[i].length; j++) { 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (j == 0) { 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert profileName = testCases[i][j]; 1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sprep = StringPrep.getInstance(getOptionFromProfileName(profileName)); 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert src = testCases[i][j]; 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert expected = testCases[i][++j]; 1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert result = sprep.prepare(src, StringPrep.ALLOW_UNASSIGNED); 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (src.startsWith("FAIL")) { 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("Failed: Expected error for Test[" + i +"] Profile: " + profileName); 1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (!result.equals(expected)) { 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("Failed: Test[" + i + "] Result string does not match expected string for StringPrep test for profile: " + profileName); 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (StringPrepParseException ex) { 1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!src.startsWith("FAIL")) { 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("Failed: Test[" + i + "] StringPrep profile " + profileName + " got error: " + ex); 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 171