/*
* Copyright (c) 2007 NTT DATA Corporation
*
* Licensed 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 jp.terasoluna.fw.util;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.junit.Test;
/**
* HashUtilブラックボックステスト<br>
*
* (前提条件)<br>
* ・とくになし<br>
*
*/
public class HashUtilTest {
/**
* testHash01。<br>
*
* (正常系)<br>
* 観点:A<br>
*
* 入力値:半角文字列<br>
* 期待値:半角文字列のハッシュ値<br>
*
* 半角文字列のハッシュ値の取得が出来ることの確認を確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHash01() throws Exception {
// 入力値設定
String paramAlgorithm = "MD5";
String paramStr = "abc";
// テスト実行
byte[] resultHashValue = HashUtil.hash(paramAlgorithm, paramStr);
// 結果確認
assertTrue(
MessageDigest.isEqual(
MessageDigest.getInstance("MD5").digest("abc".getBytes()),
resultHashValue));
}
/**
* testHash02。<br>
*
* (正常系)<br>
* 観点:A<br>
*
* 入力値:全角文字列<br>
* 期待値:全角文字列のハッシュ値<br>
*
* 全角文字列のハッシュ値の取得が出来ることの確認を確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHash02() throws Exception {
// 入力値設定
String paramAlgorithm = "MD5";
String paramStr = "あいう";
// テスト実行
byte[] resultHashValue = HashUtil.hash(paramAlgorithm, paramStr);
// 結果確認
assertTrue(
MessageDigest.isEqual(
MessageDigest.getInstance("MD5").digest("あいう".getBytes()),
resultHashValue));
}
/**
* testHash03。<br>
*
* (正常系)<br>
* 観点:C<br>
*
* 入力値:空文字列<br>
* 期待値:空文字列のハッシュ値<br>
*
* 空文字列のハッシュ値の取得が出来ることの確認を確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHash03() throws Exception {
// 入力値設定
String paramAlgorithm = "MD5";
String paramStr = "";
// テスト実行
byte[] resultHashValue = HashUtil.hash(paramAlgorithm, paramStr);
// 結果確認
assertTrue(
MessageDigest.isEqual(
MessageDigest.getInstance("MD5").digest("".getBytes()),
resultHashValue));
}
/**
* testHash04。<br>
*
* (正常系)<br>
* 観点:A<br>
*
* 入力値:ハッシュアルゴリズム指定を小文字<br>
* 期待値:ハッシュ値の取得成功<br>
*
* ハッシュアルゴリズム指定を小文字で行った場合にもハッシュ値の取得が出来ることを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHash04() throws Exception {
// 入力値設定
String paramAlgorithm = "md5";
String paramStr = "";
// テスト実行
byte[] resultHashValue = HashUtil.hash(paramAlgorithm, paramStr);
// 結果確認
assertTrue(
MessageDigest.isEqual(
MessageDigest.getInstance("MD5").digest("".getBytes()),
resultHashValue));
}
/**
* testHash05。<br>
*
* (正常系)<br>
* 観点:C<br>
*
* 入力値:null文字列<br>
* 期待値:NullPointerExceptionが発生<br>
*
* null文字列のハッシュ値の取得時NullPointerExceptionが発生することを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHash05() throws Exception {
// 入力値設定
String paramAlgorithm = "md5";
String paramStr = null;
// テスト実行
byte[] resultHashValue = HashUtil.hash(paramAlgorithm, paramStr);
// 結果確認
assertNull(resultHashValue);
}
/**
* testHash06。<br>
*
* (異常系)<br>
* 観点:A<br>
*
* 入力値:不正なハッシュアルゴリズム<br>
* 期待値:NoSuchAlgorithmExceptionが発生<br>
*
* 不正なハッシュアルゴリズム指定時NoSuchAlgorithmExceptionが発生することを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHash06() throws Exception {
// 入力値設定
String paramAlgorithm = "NoSuchAlgorithm";
String paramStr = "abc";
try {
// テスト実行
HashUtil.hash(paramAlgorithm, paramStr);
fail();
} catch (NoSuchAlgorithmException nsae) {
return;
}
}
/**
* testHash07。<br>
*
* (異常系)<br>
* 観点:C<br>
*
* 入力値:ハッシュアルゴリズムに空文字列指定<br>
* 期待値:NoSuchAlgorithmExceptionが発生<br>
*
* ハッシュアルゴリズムに空文字列指定時NoSuchAlgorithmExceptionが発生することを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHash07() throws Exception {
// 入力値設定
String paramAlgorithm = "";
String paramStr = "abc";
try {
// テスト実行
HashUtil.hash(paramAlgorithm, paramStr);
fail();
} catch (NoSuchAlgorithmException nsae) {
return;
}
}
/**
* testHash08。<br>
*
* (正常系)<br>
* 観点:C<br>
*
* 入力値:ハッシュアルゴリズムにnull指定<br>
* 期待値:NullPointerExceptionが発生<br>
*
* ハッシュアルゴリズムにnull指定時NullPointerExceptionが発生することを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHash08() throws Exception {
// 入力値設定
String paramAlgorithm = null;
String paramStr = "abc";
// テスト実行
byte[] resultHashValue = HashUtil.hash(paramAlgorithm, paramStr);
// 結果確認
assertNull(resultHashValue);
}
/**
* testHashMD501。<br>
*
* (正常系)<br>
* 観点:A<br>
*
* 入力値:半角文字列<br>
* 期待値:半角文字列のハッシュ値<br>
*
* 半角文字列のハッシュ値の取得が出来ることを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHashMD501() throws Exception {
// 入力値設定
String paramStr = "abc";
// テスト実行
byte[] resultHashValue = HashUtil.hashMD5(paramStr);
// 結果確認
assertTrue(
MessageDigest.isEqual(
MessageDigest.getInstance("MD5").digest("abc".getBytes()),
resultHashValue));
}
/**
* testHashMD502。<br>
*
* (正常系)<br>
* 観点:A<br>
*
* 入力値:全角文字列<br>
* 期待値:全角文字列のハッシュ値<br>
*
* 全角文字列のハッシュ値の取得が出来ることを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHashMD502() throws Exception {
// 入力値設定
String paramStr = "あいう";
// テスト実行
byte[] resultHashValue = HashUtil.hashMD5(paramStr);
// 結果確認
assertTrue(
MessageDigest.isEqual(
MessageDigest.getInstance("MD5").digest("あいう".getBytes()),
resultHashValue));
}
/**
* testHashMD503。<br>
*
* (正常系)<br>
* 観点:C<br>
*
* 入力値:空文字列<br>
* 期待値:空文字列のハッシュ値<br>
*
* 空文字列のハッシュ値の取得が出来ることを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHashMD503() throws Exception {
// 入力値設定
String paramStr = "";
// テスト実行
byte[] resultHashValue = HashUtil.hashMD5(paramStr);
// 結果確認
assertTrue(
MessageDigest.isEqual(
MessageDigest.getInstance("MD5").digest("".getBytes()),
resultHashValue));
}
/**
* testHashMD504。<br>
*
* (正常系)<br>
* 観点:C<br>
*
* 入力値:null文字列<br>
* 期待値:NullPointerExceptionが発生<br>
*
* null文字列のハッシュ値の取得時NullPointerExceptionが発生することを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHashMD504() throws Exception {
// 入力値設定
String paramStr = null;
// テスト実行
byte[] resultHashValue = HashUtil.hashMD5(paramStr);
// 結果確認
assertNull(resultHashValue);
}
/**
* testHashSHA101。<br>
*
* (正常系)<br>
* 観点:A<br>
*
* 入力値:半角文字列<br>
* 期待値:半角文字列のハッシュ値<br>
*
* 半角文字列のハッシュ値の取得が出来ることを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHashSHA101() throws Exception {
// 入力値設定
String paramStr = "abc";
// テスト実行
byte[] resultHashValue = HashUtil.hashSHA1(paramStr);
// 結果確認
assertTrue(
MessageDigest.isEqual(
MessageDigest.getInstance("SHA1").digest("abc".getBytes()),
resultHashValue));
}
/**
* testHashSHA102。<br>
*
* (正常系)<br>
* 観点:A<br>
*
* 入力値:全角文字列<br>
* 期待値:全角文字列のハッシュ値<br>
*
* 全角文字列のハッシュ値の取得が出来ることを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHashSHA102() throws Exception {
// 入力値設定
String paramStr = "あいう";
// テスト実行
byte[] resultHashValue = HashUtil.hashSHA1(paramStr);
// 結果確認
assertTrue(
MessageDigest.isEqual(
MessageDigest.getInstance("SHA1").digest("あいう".getBytes()),
resultHashValue));
}
/**
* testHashSHA103。<br>
*
* (正常系)<br>
* 観点:C<br>
*
* 入力値:空文字列<br>
* 期待値:空文字列のハッシュ値<br>
*
* 全角文字列のハッシュ値の取得が出来ることを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHashSHA103() throws Exception {
// 入力値設定
String paramStr = "";
// テスト実行
byte[] resultHashValue = HashUtil.hashSHA1(paramStr);
// 結果確認
assertTrue(
MessageDigest.isEqual(
MessageDigest.getInstance("SHA1").digest("".getBytes()),
resultHashValue));
}
/**
* testHashSHA104。<br>
*
* (正常系)<br>
* 観点:C<br>
*
* 入力値:null文字列<br>
* 期待値:NullPointerExceptionが発生<br>
*
* null文字列のハッシュ値の取得時NullPointerExceptionが発生することを確認する。<br>
*
* @throws Exception テストコードの本質とかかわりの無い例外
*/
@Test
public void testHashSHA104() throws Exception {
// 入力値設定
String paramStr = null;
// テスト実行
byte[] resultHashValue = HashUtil.hashSHA1(paramStr);
// 結果確認
assertNull(resultHashValue);
}
}