blob: f858a80b14875b492b4ce03f8b74cabdf264165e [file] [log] [blame]
/*
* 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.
*/
/**
* @author Boris V. Kuznetsov
*/
package java.security;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import junit.framework.TestCase;
import org.apache.harmony.security.tests.support.SpiEngUtils;
import org.apache.harmony.security.tests.support.TestUtils;
import tests.support.resource.Support_Resources;
/**
* Tests for <code>Provider</code> constructor and methods
*
*/
public class ProviderTest extends TestCase {
Provider p;
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
p = new MyProvider();
}
/*
* Class under test for void load(InputStream)
*/
public final void testLoadInputStream() throws IOException {
p.load(Support_Resources
.getResourceStream("java/security/Provider.prop.dat"));
if (!"value 1".equals(p.getProperty("Property 1").trim()) ||
!"className".equals(p.getProperty("serviceName.algName").trim()) ||
!"attrValue".equals(p.getProperty("serviceName.algName attrName").trim()) ||
!"standardName".equals(p.getProperty("Alg.Alias.engineClassName.aliasName").trim()) ||
!String.valueOf(p.getName()).equals(p.getProperty("Provider.id name").trim()) ||
!String.valueOf(p.getVersion()).equals(p.getProperty("Provider.id version").trim()) ||
!String.valueOf(p.getInfo()).equals(p.getProperty("Provider.id info").trim()) ||
!p.getClass().getName().equals(p.getProperty("Provider.id className").trim()) ||
!"SomeClassName".equals(p.getProperty("MessageDigest.SHA-1").trim()) ) {
fail("Incorrect property value");
}
}
public final void testGetService() {
try {
p.getService(null, "algorithm");
fail("No expected NullPointerException");
} catch (NullPointerException e) {
}
try {
p.getService("type", null);
fail("No expected NullPointerException");
} catch (NullPointerException e) {
}
Provider.Service s = new Provider.Service(p, "Type", "Algorithm",
"className", null, null);
p.putService(s);
if (p.getService("Type", "AlgoRithM") != s) {
fail("Case 1. getService() failed");
}
Provider.Service s1 = p.getService("MessageDigest", "AbC");
if (s1 == null) {
fail("Case 2. getService() failed");
}
s = new Provider.Service(p, "MessageDigest", "SHA-1",
"className", null, null);
p.putService(s);
if (s1 == p.getService("MessageDigest", "SHA-1")) {
fail("Case 3. getService() failed");
}
if (p.getService("MessageDigest", "SHA1") == null) {
fail("Case 4. getService() failed");
}
}
public final void testGetServices() {
Provider.Service s = new Provider.Service(p, "Type", "Algorithm",
"className", null, null);
// incomplete services should be removed
p.put("serv.alg", "aaaaaaaaaaaaa");
p.put("serv.alg KeySize", "11111");
p.put("serv1.alg1 KeySize", "222222");
p.remove("serv.alg");
p.putService(s);
Set services = p.getServices();
if (services.size() != 3) {
fail("incorrect size");
}
for (Iterator it = services.iterator(); it.hasNext();) {
s = (Provider.Service)it.next();
if ("Type".equals(s.getType()) &&
"Algorithm".equals(s.getAlgorithm()) &&
"className".equals(s.getClassName())) {
continue;
}
if ("MessageDigest".equals(s.getType()) &&
"SHA-1".equals(s.getAlgorithm()) &&
"SomeClassName".equals(s.getClassName())) {
continue;
}
if ("MessageDigest".equals(s.getType()) &&
"abc".equals(s.getAlgorithm()) &&
"SomeClassName".equals(s.getClassName())) {
continue;
}
fail("Incorrect service");
}
}
public final void testPutService() {
HashMap hm = new HashMap();
hm.put("KeySize", "1024");
hm.put("AAA", "BBB");
Provider.Service s = new Provider.Service(p, "Type", "Algorithm",
"className", null, hm);
p.putService(s);
if (s != p.getService("Type", "Algorithm")){
fail("putService failed");
}
if (!"className".equals(p.getProperty("Type.Algorithm"))) {
fail("incorrect className");
}
if (!"1024".equals(p.getProperty("Type.Algorithm KeySize"))) {
fail("incorrect attribute");
}
}
public final void testRemoveService() {
Provider.Service s = new Provider.Service(p, "Type", "Algorithm",
"className", null, null);
p.putService(s);
p.removeService(s);
Set services = p.getServices();
if (services.size() != 2) {
fail("incorrect size");
}
for (Iterator it = services.iterator(); it.hasNext();) {
s = (Provider.Service)it.next();
if ("MessageDigest".equals(s.getType()) &&
"SHA-1".equals(s.getAlgorithm()) &&
"SomeClassName".equals(s.getClassName())) {
continue;
}
if ("MessageDigest".equals(s.getType()) &&
"abc".equals(s.getAlgorithm()) &&
"SomeClassName".equals(s.getClassName())) {
continue;
}
fail("Incorrect service");
}
if (p.getProperty("Type.Algorithm") != null) {
fail("incorrect property");
}
}
class MyProvider extends Provider {
MyProvider() {
super("MyProvider", 1.0, "Provider for testing");
put("MessageDigest.SHA-1", "SomeClassName");
put("MessageDigest.abc", "SomeClassName");
put("Alg.Alias.MessageDigest.SHA1", "SHA-1");
}
MyProvider(String name, double version, String info) {
super(name, version, info);
}
}
}