| /* |
| * 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.harmony.security.tests.java.security; |
| |
| import java.security.Identity; |
| import java.security.IdentityScope; |
| import java.security.KeyManagementException; |
| import java.security.KeyPairGenerator; |
| import java.security.PublicKey; |
| import java.util.Enumeration; |
| import java.util.Hashtable; |
| |
| import org.apache.harmony.security.tests.java.security.Identity2Test.IdentitySubclass; |
| |
| @SuppressWarnings("deprecation") |
| public class IdentityScope2Test extends junit.framework.TestCase { |
| |
| private static PublicKey PUB_KEY; |
| private static PublicKey getPubKey() throws Exception { |
| if (PUB_KEY == null) { |
| PUB_KEY = KeyPairGenerator.getInstance("DSA").genKeyPair().getPublic(); |
| } |
| return PUB_KEY; |
| } |
| |
| public static class IdentityScopeSubclass extends IdentityScope { |
| private static final long serialVersionUID = 1L; |
| Hashtable<Identity, Identity> identities; |
| |
| public IdentityScopeSubclass(String name, PublicKey pk) { |
| super(name); |
| try { |
| setPublicKey(pk); |
| } catch (KeyManagementException e) { |
| } |
| identities = new Hashtable<Identity, Identity>(); |
| } |
| |
| public IdentityScopeSubclass() { |
| super(); |
| identities = new Hashtable<Identity, Identity>(); |
| } |
| |
| public IdentityScopeSubclass(String name) { |
| super(name); |
| identities = new Hashtable<Identity, Identity>(); |
| } |
| |
| public IdentityScopeSubclass(String name, IdentityScope scope) |
| throws KeyManagementException { |
| super(name, scope); |
| identities = new Hashtable<Identity, Identity>(); |
| } |
| |
| public int size() { |
| return identities.size(); |
| } |
| |
| public Identity getIdentity(String name) { |
| Enumeration<Identity> en = identities(); |
| while (en.hasMoreElements()) { |
| Identity current = (Identity) en.nextElement(); |
| if (current.getName().equals(name)) |
| return current; |
| } |
| return null; |
| } |
| |
| public Identity getIdentity(PublicKey pk) { |
| Enumeration<Identity> en = identities(); |
| while (en.hasMoreElements()) { |
| Identity current = (Identity) en.nextElement(); |
| if (current.getPublicKey() == pk) |
| return current; |
| } |
| return null; |
| } |
| |
| public Enumeration<Identity> identities() { |
| return identities.elements(); |
| } |
| |
| public void addIdentity(Identity id) throws KeyManagementException { |
| if (identities.containsKey(id)) |
| throw new KeyManagementException( |
| "This Identity is already contained in the scope"); |
| if (getIdentity(id.getPublicKey()) != null) |
| throw new KeyManagementException( |
| "This Identity's public key already exists in the scope"); |
| identities.put(id, id); |
| } |
| |
| public void removeIdentity(Identity id) throws KeyManagementException { |
| if (!identities.containsKey(id)) |
| throw new KeyManagementException( |
| "This Identity is not contained in the scope"); |
| identities.remove(id); |
| } |
| } |
| |
| /** |
| * java.security.IdentityScope#IdentityScope() |
| */ |
| public void test_Constructor() { |
| new IdentityScopeSubclass(); |
| } |
| |
| /** |
| * java.security.IdentityScope#IdentityScope(java.lang.String) |
| */ |
| public void test_ConstructorLjava_lang_String() { |
| String[] str = {"test", "", null}; |
| IdentityScopeSubclass iss; |
| |
| for (int i = 0; i < str.length; i++) { |
| try { |
| iss = new IdentityScopeSubclass(str[i]); |
| assertNotNull(iss); |
| assertTrue(iss instanceof IdentityScope); |
| } catch (Exception e) { |
| fail("Unexpected exception for parameter " + str[i]); |
| } |
| } |
| } |
| |
| /** |
| * java.security.IdentityScope#IdentityScope(java.lang.String, |
| * java.security.IdentityScope) |
| */ |
| public void test_ConstructorLjava_lang_StringLjava_security_IdentityScope() { |
| String nameNull = null; |
| String[] str = {"test", "", "!@#$%^&*()", "identity name"}; |
| IdentityScope is; |
| IdentityScope iss = new IdentityScopeSubclass("test scope"); |
| |
| for (int i = 0; i < str.length; i++) { |
| try { |
| is = new IdentityScopeSubclass(str[i], new IdentityScopeSubclass()); |
| assertNotNull(is); |
| assertTrue(is instanceof IdentityScope); |
| } catch (Exception e) { |
| fail("Unexpected exception for parameter " + str[i]); |
| } |
| } |
| |
| try { |
| is = new IdentityScopeSubclass(nameNull, new IdentityScopeSubclass()); |
| } catch (NullPointerException npe) { |
| } catch (Exception e) { |
| fail("Incorrect exception " + e + " was thrown"); |
| } |
| |
| try { |
| is = new IdentityScopeSubclass("test", iss); |
| is = new IdentityScopeSubclass("test", iss); |
| fail("KeyManagementException was not thrown"); |
| } catch (KeyManagementException npe) { |
| //expected |
| } catch (Exception e) { |
| fail("Incorrect exception " + e + " was thrown instead of KeyManagementException"); |
| } |
| } |
| |
| /** |
| * java.security.IdentityScope#addIdentity(java.security.Identity) |
| */ |
| public void test_addIdentityLjava_security_Identity() throws Exception { |
| IdentityScopeSubclass sub = new IdentityScopeSubclass("test", |
| new IdentityScopeSubclass()); |
| Identity id = new IdentitySubclass("id1"); |
| id.setPublicKey(getPubKey()); |
| sub.addIdentity(id); |
| try { |
| Identity id2 = new IdentitySubclass("id2"); |
| id2.setPublicKey(getPubKey()); |
| sub.addIdentity(id2); |
| fail("KeyManagementException should have been thrown"); |
| } catch (KeyManagementException e) { |
| // Expected |
| } |
| } |
| |
| /** |
| * java.security.IdentityScope#removeIdentity(java.security.Identity) |
| */ |
| public void test_removeIdentityLjava_security_Identity() throws Exception { |
| IdentityScopeSubclass sub = new IdentityScopeSubclass("test", |
| new IdentityScopeSubclass()); |
| Identity id = new IdentitySubclass(); |
| id.setPublicKey(getPubKey()); |
| sub.addIdentity(id); |
| sub.removeIdentity(id); |
| try { |
| sub.removeIdentity(id); |
| fail("KeyManagementException should have been thrown"); |
| } catch (KeyManagementException expected) { |
| } |
| } |
| |
| /** |
| * java.security.IdentityScope#identities() |
| */ |
| public void test_identities() throws Exception { |
| IdentityScopeSubclass sub = new IdentityScopeSubclass("test", |
| new IdentityScopeSubclass()); |
| Identity id = new IdentitySubclass(); |
| id.setPublicKey(getPubKey()); |
| sub.addIdentity(id); |
| Enumeration<Identity> en = sub.identities(); |
| assertEquals("Wrong object contained in identities", en.nextElement(), id); |
| assertFalse("Contains too many elements", en.hasMoreElements()); |
| } |
| |
| /** |
| * java.security.IdentityScope#getIdentity(java.security.Principal) |
| */ |
| public void test_getIdentityLjava_security_Principal() throws Exception { |
| Identity id = new IdentitySubclass("principal name"); |
| id.setPublicKey(getPubKey()); |
| IdentityScopeSubclass sub = new IdentityScopeSubclass("test", |
| new IdentityScopeSubclass()); |
| |
| try { |
| sub.getIdentity((java.security.Principal) null); |
| fail("Test 1: NullPointerException expected."); |
| } catch (NullPointerException expected) { |
| } |
| |
| sub.addIdentity(id); |
| Identity returnedId = sub.getIdentity(id); |
| assertEquals("Test 2: Returned Identity not the same as the added one;", id, returnedId); |
| |
| Identity id2 = new IdentitySubclass("Another identity"); |
| id2.setPublicKey(getPubKey()); |
| |
| assertNull("Test 3: Null value expected.", sub.getIdentity(id2)); |
| |
| try { |
| sub.getIdentity((java.security.Principal) null); |
| fail("Test 4: NullPointerException expected."); |
| } catch (NullPointerException expected) { |
| } |
| |
| } |
| |
| /** |
| * java.security.IdentityScope#getIdentity(java.security.PublicKey) |
| */ |
| public void test_getIdentityLjava_security_PublicKey() throws Exception { |
| IdentityScopeSubclass sub = new IdentityScopeSubclass("test", |
| new IdentityScopeSubclass()); |
| Identity id = new IdentitySubclass(); |
| id.setPublicKey(getPubKey()); |
| sub.addIdentity(id); |
| Identity returnedId = sub.getIdentity(getPubKey()); |
| assertEquals("Test 1: Returned Identity not the same as the added one;", id, returnedId); |
| |
| assertNull("Test 2: Null value expected.", sub.getIdentity((PublicKey) null)); |
| |
| PublicKey anotherKey = KeyPairGenerator.getInstance("DSA").genKeyPair().getPublic(); |
| assertNull("Test 3: Null value expected.", sub.getIdentity(anotherKey)); |
| } |
| |
| /** |
| * java.security.IdentityScope#getIdentity(java.lang.String) |
| */ |
| public void test_getIdentityLjava_lang_String() throws Exception { |
| IdentityScopeSubclass sub = new IdentityScopeSubclass("test", |
| new IdentityScopeSubclass()); |
| Identity id = new IdentitySubclass("test"); |
| id.setPublicKey(getPubKey()); |
| sub.addIdentity(id); |
| Identity returnedId = sub.getIdentity("test"); |
| assertEquals("Returned Identity not the same as the added one", id, returnedId); |
| } |
| |
| /** |
| * java.security.IdentityScope#size() |
| */ |
| public void test_size() throws Exception { |
| IdentityScopeSubclass sub = new IdentityScopeSubclass("test", |
| new IdentityScopeSubclass()); |
| Identity id = new IdentitySubclass(); |
| id.setPublicKey(getPubKey()); |
| sub.addIdentity(id); |
| assertEquals("Wrong size", 1, sub.size()); |
| } |
| |
| /** |
| * java.security.IdentityScope#toString() |
| */ |
| public void test_toString() throws Exception { |
| IdentityScopeSubclass sub = new IdentityScopeSubclass("test", |
| new IdentityScopeSubclass()); |
| Identity id = new IdentitySubclass(); |
| id.setPublicKey(getPubKey()); |
| sub.addIdentity(id); |
| assertNotNull("toString returned a null", sub.toString()); |
| assertTrue("Not a valid String ", sub.toString().length() > 0); |
| } |
| |
| public void test_getIdentity() throws Exception { |
| //Regression for HARMONY-1173 |
| IdentityScope scope = IdentityScope.getSystemScope(); |
| try { |
| scope.getIdentity((String) null); |
| fail(); |
| } catch (NullPointerException expected) { |
| } |
| } |
| } |