blob: c50c38e52f5bfd8ac5c73ab32d4bc1cc81ea40b9 [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.util.HashMap;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
/**
* Tests for <code>Security</code> constructor and methods
*/
public class Security_ImplTest extends TestCase {
public final void testGetAlgorithmProperty() {
assertNull("Incorrect result on null parameter", Security
.getAlgorithmProperty(null, "MyService"));
assertNull("Incorrect result on null parameter", Security
.getAlgorithmProperty("MyAlgorithm", null));
assertNull("Incorrect result (provider not added)", Security
.getAlgorithmProperty("MyAlgorithm", "MyService"));
Provider p = new MyProvider();
Security.addProvider(p);
try {
assertEquals("Incorrect result (provider added)",
"SomeClassName", Security.getAlgorithmProperty("MyAlGoriThm", "MySerVicE"));
} finally { //clean up
Security.removeProvider(p.getName());
}
}
/*
* Class under test for Provider[] getProviders()
*/
public final void testGetProviders() {
Provider[] providers;
providers = Security.getProviders();
for (int i = 0; i < providers.length; i++) {
// position is 1-based
assertEquals("Incorrect provider number", i + 1, providers[i]
.getProviderNumber());
}
}
/**
* @tests java.security.Security#getProviders(String)
*/
public final void test_getProvidersLjava_lang_String() {
// Regression for Harmony-3154 (non-bug difference)
try {
Security.getProviders("AAA.BBB CCC");
fail("AAA.BBB CCC: No expected InvalidParameterException");
} catch (InvalidParameterException e) {
}
}
/**
* @tests java.security.Security#getProviders(Map)
*/
public final void test_getProvidersLjava_util_Map() {
// Regression for Harmony-3154 (non-bug difference)
Map<String, String> m = new HashMap<String, String>();
m.put("AAA.BBB CCC", "");
m.put("AAA.BBB", "");
try {
Security.getProviders(m);
fail("attribute value is empty string: No expected InvalidParameterException");
} catch (InvalidParameterException e) {
}
}
public final void testGetAlgorithms() {
Set alg1;
Set alg2;
alg1 = Security.getAlgorithms("AAAAAAAAAAAAAAA");
assertTrue("failed for non-existent service", alg1 != null);
assertEquals("failed for non-existent service", 0, alg1.size());
alg1 = Security.getAlgorithms("SecureRandom");
alg2 = Security.getAlgorithms("seCuReranDom");
assertEquals("different size", alg1.size(), alg2.size());
assertTrue("different content", alg2.containsAll(alg1));
Provider p = new MyProvider();
try {
Security.addProvider(p);
alg1 = Security.getAlgorithms("MyService");
assertEquals("failed for MyService", 1, alg1.size());
assertTrue("failed for MyService", alg1.contains("MyAlgorithm"));
} finally { //clean up
Security.removeProvider(p.getName());
}
}
@SuppressWarnings("serial")
class MyProvider extends Provider {
MyProvider() {
super("MyProvider", 1.0, "Provider for testing");
put("MessageDigest.SHA-1", "SomeClassName");
put("MyService.MyAlgorithm", "SomeClassName");
put("MyService.MyAlgorithm KeySize", "1024");
}
}
}