| /* |
| * 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 tests.api.javax.security.auth; |
| |
| import junit.framework.TestCase; |
| |
| import javax.security.auth.x500.X500Principal; |
| |
| import java.io.ByteArrayInputStream; |
| import java.io.InputStream; |
| import java.security.cert.CertificateFactory; |
| import java.security.cert.X509Certificate; |
| import org.apache.harmony.security.tests.support.cert.TestUtils; |
| |
| /** |
| * Tests for <code>X500Principal</code> class constructors and methods. |
| * |
| */ |
| public class X500PrincipalTest extends TestCase { |
| |
| /** |
| * javax.security.auth.x500.X500Principal#X500Principal(String name) |
| */ |
| public void test_X500Principal_01() { |
| String name = "CN=Duke,OU=JavaSoft,O=Sun Microsystems,C=US"; |
| |
| try { |
| X500Principal xpr = new X500Principal(name); |
| assertNotNull("Null object returned", xpr); |
| String resName = xpr.getName(); |
| assertEquals(name, resName); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| |
| try { |
| X500Principal xpr = new X500Principal((String)null); |
| fail("NullPointerException wasn't thrown"); |
| } catch (NullPointerException npe) { |
| } catch (Exception e) { |
| fail(e + " was thrown instead of NullPointerException"); |
| } |
| |
| try { |
| X500Principal xpr = new X500Principal("X500PrincipalName"); |
| fail("IllegalArgumentException wasn't thrown"); |
| } catch (IllegalArgumentException npe) { |
| } catch (Exception e) { |
| fail(e + " was thrown instead of IllegalArgumentException"); |
| } |
| } |
| |
| /** |
| * javax.security.auth.x500.X500Principal#X500Principal(InputStream is) |
| */ |
| public void test_X500Principal_02() { |
| String name = "CN=Duke,OU=JavaSoft,O=Sun Microsystems,C=US"; |
| byte[] ba = getByteArray(TestUtils.getX509Certificate_v1()); |
| ByteArrayInputStream is = new ByteArrayInputStream(ba); |
| InputStream isNull = null; |
| |
| try { |
| X500Principal xpr = new X500Principal(is); |
| assertNotNull("Null object returned", xpr); |
| byte[] resArray = xpr.getEncoded(); |
| assertEquals(ba.length, resArray.length); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| |
| try { |
| X500Principal xpr = new X500Principal(isNull); |
| fail("NullPointerException wasn't thrown"); |
| } catch (NullPointerException npe) { |
| } catch (Exception e) { |
| fail(e + " was thrown instead of NullPointerException"); |
| } |
| |
| is = new ByteArrayInputStream(name.getBytes()); |
| try { |
| X500Principal xpr = new X500Principal(is); |
| fail("IllegalArgumentException wasn't thrown"); |
| } catch (IllegalArgumentException npe) { |
| } catch (Exception e) { |
| fail(e + " was thrown instead of IllegalArgumentException"); |
| } |
| } |
| |
| /** |
| * javax.security.auth.x500.X500Principal#X500Principal(byte[] name) |
| */ |
| public void test_X500Principal_03() { |
| String name = "CN=Duke,OU=JavaSoft,O=Sun Microsystems,C=US"; |
| byte[] ba = getByteArray(TestUtils.getX509Certificate_v1()); |
| byte[] baNull = null; |
| |
| try { |
| X500Principal xpr = new X500Principal(ba); |
| assertNotNull("Null object returned", xpr); |
| byte[] resArray = xpr.getEncoded(); |
| assertEquals(ba.length, resArray.length); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| |
| try { |
| X500Principal xpr = new X500Principal(baNull); |
| fail("IllegalArgumentException wasn't thrown"); |
| } catch (IllegalArgumentException npe) { |
| } catch (Exception e) { |
| fail(e + " was thrown instead of IllegalArgumentException"); |
| } |
| |
| ba = name.getBytes(); |
| try { |
| X500Principal xpr = new X500Principal(ba); |
| fail("IllegalArgumentException wasn't thrown"); |
| } catch (IllegalArgumentException npe) { |
| } catch (Exception e) { |
| fail(e + " was thrown instead of IllegalArgumentException"); |
| } |
| } |
| |
| /** |
| * javax.security.auth.x500.X500Principal#getName() |
| */ |
| public void test_getName() { |
| String name = "CN=Duke,OU=JavaSoft,O=Sun Microsystems,C=US"; |
| X500Principal xpr = new X500Principal(name); |
| try { |
| String resName = xpr.getName(); |
| assertEquals(name, resName); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| } |
| |
| /** |
| * javax.security.auth.x500.X500Principal#getName(String format) |
| */ |
| public void test_getName_Format() { |
| String name = "CN=Duke,OU=JavaSoft,O=Sun Microsystems,C=US"; |
| String expectedName = "cn=duke,ou=javasoft,o=sun microsystems,c=us"; |
| X500Principal xpr = new X500Principal(name); |
| try { |
| String resName = xpr.getName(X500Principal.CANONICAL); |
| assertEquals(expectedName, resName); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| |
| expectedName = "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US"; |
| try { |
| String resName = xpr.getName(X500Principal.RFC1779); |
| assertEquals(expectedName, resName); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| |
| try { |
| String resName = xpr.getName(X500Principal.RFC2253); |
| assertEquals(name, resName); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| |
| try { |
| String resName = xpr.getName(null); |
| fail("IllegalArgumentException wasn't thrown"); |
| } catch (IllegalArgumentException iae) { |
| } |
| try { |
| String resName = xpr.getName("RFC2254"); |
| fail("IllegalArgumentException wasn't thrown"); |
| } catch (IllegalArgumentException iae) { |
| } |
| } |
| |
| /** |
| * javax.security.auth.x500.X500Principal#hashCode() |
| */ |
| public void test_hashCode() { |
| String name = "CN=Duke,OU=JavaSoft,O=Sun Microsystems,C=US"; |
| X500Principal xpr = new X500Principal(name); |
| try { |
| int res = xpr.hashCode(); |
| assertNotNull(res); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| } |
| |
| /** |
| * javax.security.auth.x500.X500Principal#toString() |
| */ |
| public void test_toString() { |
| String name = "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US"; |
| X500Principal xpr = new X500Principal(name); |
| try { |
| String res = xpr.toString(); |
| assertNotNull(res); |
| assertEquals(name, res); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| } |
| |
| /** |
| * javax.security.auth.x500.X500Principal#getEncoded() |
| */ |
| public void test_getEncoded() { |
| byte[] ba = getByteArray(TestUtils.getX509Certificate_v1()); |
| X500Principal xpr = new X500Principal(ba); |
| try { |
| byte[] res = xpr.getEncoded(); |
| assertNotNull(res); |
| assertEquals(ba.length, res.length); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| } |
| |
| /** |
| * javax.security.auth.x500.X500Principal#equals(Object o) |
| */ |
| public void test_equals() { |
| String name1 = "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US"; |
| String name2 = "cn=duke,ou=javasoft,o=sun microsystems,c=us"; |
| String name3 = "CN=Alex Astapchuk, OU=SSG, O=Intel ZAO, C=RU"; |
| X500Principal xpr1 = new X500Principal(name1); |
| X500Principal xpr2 = new X500Principal(name2); |
| X500Principal xpr3 = new X500Principal(name3); |
| try { |
| assertTrue("False returned", xpr1.equals(xpr2)); |
| assertFalse("True returned", xpr1.equals(xpr3)); |
| } catch (Exception e) { |
| fail("Unexpected exception: " + e); |
| } |
| } |
| |
| private byte[] getByteArray(byte[] array) { |
| byte[] x = null; |
| try { |
| ByteArrayInputStream is = new ByteArrayInputStream(array); |
| CertificateFactory cf = CertificateFactory.getInstance("X.509"); |
| X509Certificate cert = (X509Certificate)cf.generateCertificate(is); |
| X500Principal xx = cert.getIssuerX500Principal(); |
| x = xx.getEncoded(); |
| } catch (Exception e) { |
| return null; |
| } |
| return x; |
| } |
| } |
| |