/*
* 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.web.jndi;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.NamingException;
import uk.org.lidalia.slf4jtest.TestLogger;
import uk.org.lidalia.slf4jtest.TestLoggerFactory;
import static uk.org.lidalia.slf4jtest.LoggingEvent.error;
import static uk.org.lidalia.slf4jtest.LoggingEvent.info;
import static java.util.Arrays.asList;
import static org.hamcrest.core.Is.*;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;
/**
* {@link jp.terasoluna.fw.web.jndi.DefaultJndiSupport} クラスのブラックボックステスト。
* <p>
* <h4>【クラスの概要】</h4> TERASOLUNAが提供するJNDI関連のユーティリティデフォルト実装クラス。
* <p>
* @see jp.terasoluna.fw.web.jndi.DefaultJndiSupport
*/
public class DefaultJndiSupportTest {
private TestLogger logger = TestLoggerFactory.getTestLogger(
DefaultJndiSupport.class);
@Before
public void setUp() {
logger.clear();
}
/**
* testSetJndiPrefix01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) super.resourceRef:true<br>
* (状態) super.resourceRef:false<br>
* <br>
* 期待値:(状態変化) super.resourceRef:true<br>
* <br>
* 引数に指定した値がスーパークラスのresourceRefに正常に格納されることを確認 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetJndiPrefix01() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
support.setResourceRef(false);
// テスト実施
support.setJndiPrefix(true);
// 判定
// スーパークラスのメソッド呼び出し
boolean b = support.isResourceRef();
assertTrue(b);
}
/**
* testIsJndiPrefix01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(状態) super.resourceRef:true<br>
* <br>
* 期待値:(戻り値) super.resourceRef:true<br>
* <br>
* DefaultJndiSupportに格納されているsuper.resourceRefを正常に取得する ことを確認 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsJndiPrefix01() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
// スーパークラスのメソッドで前提条件設定
support.setResourceRef(true);
// テスト実施
boolean b = support.isJndiPrefix();
// 判定
assertTrue(b);
}
/**
* testGetJndiEnvironmentMap01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(状態) jndiEnvironmentMap:not null<br>
* <br>
* 期待値:(戻り値) Map:インスタンス変数のjndiEnvironmentMap<br>
* <br>
* インスタンス変数のjndiEnvironmentMapが取得できることを確認する。<br>
* ※正常系1件のみ確認。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetJndiEnvironmentMap01() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
@SuppressWarnings("rawtypes")
Map<?, ?> map = new HashMap();
ReflectionTestUtils.setField(support, "jndiEnvironmentMap", map);
// テスト実施
Object result = support.getJndiEnvironmentMap();
// 判定判定
assertSame(map, result);
}
/**
* testSetJndiEnvironmentMap01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) jndiEnvironmentMap:not null<br>
* (状態) jndiEnvironmentMap:null<br>
* <br>
* 期待値:(状態変化) jndiEnvironmentMap:not null(引数に指定したMap)<br>
* <br>
* 引数に指定したMapがインスタンス変数jndiEnvironmentMapに設定されることを確認する。<br>
* ※正常系1件のみ確認。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetJndiEnvironmentMap01() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
Map<String, String> map = new HashMap<String, String>();
// テスト実施
support.setJndiEnvironmentMap(map);
// 判定判定
Object result = ReflectionTestUtils.getField(support,
"jndiEnvironmentMap");
assertSame(map, result);
}
/**
* testInitialize01() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(状態) jndiEnvironmentMap:null<br>
* <br>
* 期待値:(状態変化) jndiEnvironmentMap:null<br>
* <br>
* jndiEnvironmentMapがnullだった場合、JndiTemplateの環境プロパティは設定されないことを確認 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInitialize01() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
ReflectionTestUtils.setField(support, "jndiEnvironmentMap", null);
// テスト実施
support.initialize();
// 判定
Object result = ReflectionTestUtils.getField(support,
"jndiEnvironmentMap");
assertNull(result);
}
/**
* testInitialize02() <br>
* <br>
* (正常系) <br>
* 観点:D <br>
* <br>
* 入力値:(状態) jndiEnvironmentMap.get("factory"):"factory"<br>
* (状態) jndiEnvironmentMap.get("url"):"url"<br>
* (状態) jndiEnvironmentMap.get("username"):null<br>
* <br>
* 期待値:(状態変化) jndiEnvironmentMap:not null<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.INITIAL_CONTEXT_FACTORY):"factory"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.PROVIDER_URL):"url"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.SECURITY_PRINCIPAL):null<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.SECURITY_CREDENTIALS):null<br>
* (状態変化) ログ:<ログ><br>
* インフォログ:<br>
* "java.naming.factory.initial = factory"<br>
* "java.naming.provider.url = url"<br>
* "java.naming.security.principal = null"<br>
* "java.naming.security.credentials = null"<br>
* <br>
* jndiEnvironmentMap.get("username")がnullだった場合、 JndiTemplateの環境プロパティにjndiFactoryとjndiUrlだけが設定されていることを確認 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInitialize02() throws Exception {
// 前処理
Map<String, String> map = new HashMap<String, String>();
map.put("factory", "factory");
map.put("url", "url");
DefaultJndiSupport support = new DefaultJndiSupport();
ReflectionTestUtils.setField(support, "jndiEnvironmentMap", map);
// テスト実施
logger.clear();
support.initialize();
// 判定
Object result = ReflectionTestUtils.getField(support,
"jndiEnvironmentMap");
assertSame(map, result);
assertThat(logger.getLoggingEvents(), is(asList(info(
"Initialize Weblogic JNDI Resource"), info(
"java.naming.factory.initial = factory"), info(
"java.naming.provider.url = url"), info(
"java.naming.security.principal = null"),
info("java.naming.security.credentials = null"))));
Properties props = support.getJndiEnvironment();
assertEquals("factory", props.get(Context.INITIAL_CONTEXT_FACTORY));
assertEquals("url", props.get(Context.PROVIDER_URL));
assertNull(props.get(Context.SECURITY_PRINCIPAL));
assertNull(props.get(Context.SECURITY_CREDENTIALS));
}
/**
* testInitialize03() <br>
* <br>
* (正常系) <br>
* 観点:D <br>
* <br>
* 入力値:(状態) jndiEnvironmentMap.get("factory"):"factory"<br>
* (状態) jndiEnvironmentMap.get("url"):"url"<br>
* (状態) jndiEnvironmentMap.get("username"):""<br>
* <br>
* 期待値:(状態変化) jndiEnvironmentMap:not null<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.INITIAL_CONTEXT_FACTORY):"factory"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.PROVIDER_URL):"url"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.SECURITY_PRINCIPAL):null<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.SECURITY_CREDENTIALS):null<br>
* (状態変化) ログ:<ログ><br>
* インフォログ:<br>
* "java.naming.factory.initial = factory"<br>
* "java.naming.provider.url = url"<br>
* "java.naming.security.principal = "<br>
* "java.naming.security.credentials = null"<br>
* <br>
* jndiEnvironmentMap.get("username")が空文字だった場合、JndiTemplateの環境 プロパティにjndiFactoryとjndiUrlだけが設定されていることを確認 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInitialize03() throws Exception {
// 前処理
Map<String, String> map = new HashMap<String, String>();
map.put("factory", "factory");
map.put("url", "url");
map.put("username", "");
DefaultJndiSupport support = new DefaultJndiSupport();
ReflectionTestUtils.setField(support, "jndiEnvironmentMap", map);
// テスト実施
support.initialize();
// 判定
Object result = ReflectionTestUtils.getField(support,
"jndiEnvironmentMap");
assertSame(map, result);
assertThat(logger.getLoggingEvents(), is(asList(info(
"Initialize Weblogic JNDI Resource"), info(
"java.naming.factory.initial = factory"), info(
"java.naming.provider.url = url"), info(
"java.naming.security.principal = "),
info("java.naming.security.credentials = null"))));
Properties props = support.getJndiEnvironment();
assertEquals("factory", props.get(Context.INITIAL_CONTEXT_FACTORY));
assertEquals("url", props.get(Context.PROVIDER_URL));
assertNull(props.get(Context.SECURITY_PRINCIPAL));
assertNull(props.get(Context.SECURITY_CREDENTIALS));
}
/**
* testInitialize04() <br>
* <br>
* (正常系) <br>
* 観点:D <br>
* <br>
* 入力値:(状態) jndiEnvironmentMap.get("factory"):"factory"<br>
* (状態) jndiEnvironmentMap.get("url"):"url"<br>
* (状態) jndiEnvironmentMap.get("username"):"username"<br>
* (状態) jndiEnvironmentMap.get("password"):null<br>
* <br>
* 期待値:(状態変化) jndiEnvironmentMap:not null<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.INITIAL_CONTEXT_FACTORY):"factory"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.PROVIDER_URL):"url"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.SECURITY_PRINCIPAL):"username"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.SECURITY_CREDENTIALS):""<br>
* (状態変化) ログ:<ログ><br>
* インフォログ:<br>
* "java.naming.factory.initial = factory"<br>
* "java.naming.provider.url = url"<br>
* "java.naming.security.principal = username"<br>
* "java.naming.security.credentials = "<br>
* <br>
* jndiEnvironmentMap.get("password")がnullだった場合、JndiTemplateの環境
* プロパティにjndiFactoryとjndiUrlとjndiUsernameと空文字のjndiPasswordが設定されていることを確認 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInitialize04() throws Exception {
// 前処理
Map<String, String> map = new HashMap<String, String>();
map.put("factory", "factory");
map.put("url", "url");
map.put("username", "username");
DefaultJndiSupport support = new DefaultJndiSupport();
ReflectionTestUtils.setField(support, "jndiEnvironmentMap", map);
// テスト実施
support.initialize();
// 判定
Object result = ReflectionTestUtils.getField(support,
"jndiEnvironmentMap");
assertSame(map, result);
assertThat(logger.getLoggingEvents(), is(asList(info(
"Initialize Weblogic JNDI Resource"), info(
"java.naming.factory.initial = factory"), info(
"java.naming.provider.url = url"), info(
"java.naming.security.principal = username"),
info("java.naming.security.credentials = "))));
Properties props = support.getJndiEnvironment();
assertEquals("factory", props.get(Context.INITIAL_CONTEXT_FACTORY));
assertEquals("url", props.get(Context.PROVIDER_URL));
assertEquals("username", props.get(Context.SECURITY_PRINCIPAL));
assertEquals("", props.get(Context.SECURITY_CREDENTIALS));
}
/**
* testInitialize05() <br>
* <br>
* (正常系) <br>
* 観点:D <br>
* <br>
* 入力値:(状態) jndiEnvironmentMap.get("factory"):"factory"<br>
* (状態) jndiEnvironmentMap.get("url"):"url"<br>
* (状態) jndiEnvironmentMap.get("username"):"username"<br>
* (状態) jndiEnvironmentMap.get("password"):""<br>
* <br>
* 期待値:(状態変化) jndiEnvironmentMap:not null<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.INITIAL_CONTEXT_FACTORY):"factory"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.PROVIDER_URL):"url"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.SECURITY_PRINCIPAL):"username"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.SECURITY_CREDENTIALS):""<br>
* (状態変化) ログ:<ログ><br>
* インフォログ:<br>
* "java.naming.factory.initial = factory"<br>
* "java.naming.provider.url = url"<br>
* "java.naming.security.principal = username"<br>
* "java.naming.security.credentials = "<br>
* <br>
* jndiEnvironmentMap.get("password")が空文字だった場合、JndiTemplateの環境
* プロパティにjndiFactoryとjndiUrlとjndiUsernameとjndiPasswordが設定されていることを確認 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInitialize05() throws Exception {
// 前処理
Map<String, String> map = new HashMap<String, String>();
map.put("factory", "factory");
map.put("url", "url");
map.put("username", "username");
map.put("password", "");
DefaultJndiSupport support = new DefaultJndiSupport();
ReflectionTestUtils.setField(support, "jndiEnvironmentMap", map);
// テスト実施
support.initialize();
// 判定
Object result = ReflectionTestUtils.getField(support,
"jndiEnvironmentMap");
assertSame(map, result);
assertThat(logger.getLoggingEvents(), is(asList(info(
"Initialize Weblogic JNDI Resource"), info(
"java.naming.factory.initial = factory"), info(
"java.naming.provider.url = url"), info(
"java.naming.security.principal = username"),
info("java.naming.security.credentials = "))));
Properties props = support.getJndiEnvironment();
assertEquals("factory", props.get(Context.INITIAL_CONTEXT_FACTORY));
assertEquals("url", props.get(Context.PROVIDER_URL));
assertEquals("username", props.get(Context.SECURITY_PRINCIPAL));
assertEquals("", props.get(Context.SECURITY_CREDENTIALS));
}
/**
* testInitialize06() <br>
* <br>
* (正常系) <br>
* 観点:D <br>
* <br>
* 入力値:(状態) jndiEnvironmentMap.get("factory"):"factory"<br>
* (状態) jndiEnvironmentMap.get("url"):"url"<br>
* (状態) jndiEnvironmentMap.get("username"):"username"<br>
* (状態) jndiEnvironmentMap.get("password"):"password"<br>
* <br>
* 期待値:(状態変化) jndiEnvironmentMap:not null<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.INITIAL_CONTEXT_FACTORY):"factory"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.PROVIDER_URL):"url"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.SECURITY_PRINCIPAL):"username"<br>
* (状態変化) getJndiTemplate().get(<br>
* Context.SECURITY_CREDENTIALS):"password"<br>
* (状態変化) ログ:<ログ><br>
* インフォログ:<br>
* "java.naming.factory.initial = factory"<br>
* "java.naming.provider.url = url"<br>
* "java.naming.security.principal = username"<br>
* "java.naming.security.credentials = password"<br>
* <br>
* jndiEnvironmentMapに格納されている"factory", "url", "username", "password"がnullでも空文字でもなかった場合、JndiTemplateの環境
* プロパティにjndiFactory、jndiUrl、jndiUsername、jndiPasswordが設定されていることを確認 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInitialize06() throws Exception {
// 前処理
Map<String, String> map = new HashMap<String, String>();
map.put("factory", "factory");
map.put("url", "url");
map.put("username", "username");
map.put("password", "password");
DefaultJndiSupport support = new DefaultJndiSupport();
ReflectionTestUtils.setField(support, "jndiEnvironmentMap", map);
// テスト実施
support.initialize();
// 判定
Object result = ReflectionTestUtils.getField(support,
"jndiEnvironmentMap");
assertSame(map, result);
assertThat(logger.getLoggingEvents(), is(asList(info(
"Initialize Weblogic JNDI Resource"), info(
"java.naming.factory.initial = factory"), info(
"java.naming.provider.url = url"), info(
"java.naming.security.principal = username"),
info("java.naming.security.credentials = password"))));
Properties props = support.getJndiEnvironment();
assertEquals("factory", props.get(Context.INITIAL_CONTEXT_FACTORY));
assertEquals("url", props.get(Context.PROVIDER_URL));
assertEquals("username", props.get(Context.SECURITY_PRINCIPAL));
assertEquals("password", props.get(Context.SECURITY_CREDENTIALS));
}
/**
* testRebind01() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(引数) name:null<br>
* (引数) obj:"abc"<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException<br>
* (状態変化) ログ:<ログ><br>
* エラーログ:<br>
* "Illegal arguments error : name=" + name + ", obj=" + obj<br>
* <br>
* 引数nameがnullの場合、例外を起こすことを確認する <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testRebind01() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = null;
Object obj = "abc";
try {
// テスト実施
support.rebind(name, obj);
fail();
} catch (IllegalArgumentException e) {
// 判定
assertThat(logger.getLoggingEvents(), is(asList(error(
"Illegal arguments error : name=null, obj=abc"))));
}
}
/**
* testRebind02() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) name:""<br>
* (引数) obj:"abc"<br>
* (状態) JndiTemplate:DefaultJndiSupport_JndiTemplate_Stub01<br>
* (状態) super.<br>
* resourceRef:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallRebind:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:null<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* obj:null<br>
* <br>
* 期待値:(状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallRebind:true<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:""<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* obj:"abc"<br>
* <br>
* 引数nameが空文字であり、引数objがnot nullの場合、JndiTemplate.rebind()の呼び出し確認を行う <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testRebind02() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = "";
Object obj = "abc";
// JndiTemplate取得
DefaultJndiSupport_JndiTemplateStub01 template = new DefaultJndiSupport_JndiTemplateStub01();
template.setCallRebind(false);
template.setJndiNameToUse(null);
template.setObj(null);
support.setJndiTemplate(template);
// super.resourceRef = false;
support.setResourceRef(false);
// テスト実施
support.rebind(name, obj);
// 判定
boolean b = template.isCallRebind();
assertTrue(b);
assertEquals("", template.getJndiNameToUse());
assertEquals("abc", template.getObj());
}
/**
* testRebind03() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(引数) name:"abc"<br>
* (引数) obj:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException<br>
* (状態変化) ログ:<ログ><br>
* エラーログ:<br>
* "Illegal arguments error : name=" + name + ", obj=" + obj<br>
* <br>
* 引数objがnullの場合、例外を起こすことを確認する <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testRebind03() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = "abc";
Object obj = null;
try {
// テスト実施
support.rebind(name, obj);
fail();
} catch (IllegalArgumentException e) {
// 判定
assertThat(logger.getLoggingEvents(), is(asList(error(
"Illegal arguments error : name=abc, obj=null"))));
}
}
/**
* testRebind04() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) name:"abc"<br>
* (引数) obj:"abc"<br>
* (状態) JndiTemplate:DefaultJndiSupport_JndiTemplate_Stub01<br>
* (状態) super.<br>
* resourceRef:true<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallRebind:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:null<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* obj:null<br>
* <br>
* 期待値:(状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallRebind:true<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:"java:comp/env/abc"<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* obj:"abc"<br>
* <br>
* jndiPrefixがtrueであり、引数nameが"java:comp/env/"で始まらなかった場合、 "java:comp/env/"を引数nameに加えてJndiTemplate.rebind()の呼び出しを
* 行っていることを確認を行う <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testRebind04() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = "abc";
Object obj = "abc";
// JndiTemplate取得
DefaultJndiSupport_JndiTemplateStub01 template = new DefaultJndiSupport_JndiTemplateStub01();
template.setCallRebind(false);
template.setJndiNameToUse(null);
template.setObj(null);
support.setJndiTemplate(template);
// super.resourceRef = true;
support.setResourceRef(true);
// テスト実施
support.rebind(name, obj);
// 判定
boolean b = template.isCallRebind();
assertTrue(b);
assertEquals("java:comp/env/abc", template.getJndiNameToUse());
assertEquals("abc", template.getObj());
}
/**
* testRebind05() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) name:"java:comp/env/abc"<br>
* (引数) obj:"abc"<br>
* (状態) JndiTemplate:DefaultJndiSupport_JndiTemplate_Stub02<br>
* (状態) super.<br>
* resourceRef:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallRebind:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:null<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* obj:null<br>
* (状態) NamingException:発生<br>
* <br>
* 期待値:(状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallRebind:true<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:"java:comp/env/abc"<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* obj:"abc"<br>
* (状態変化) 例外:JndiException:<br>
* ラップした例外:NamingException<br>
* (状態変化) ログ:<ログ><br>
* エラーログ:<br>
* "Illegal JNDI context name."<br>
* <br>
* JndiTemplate.rebind()でNamingExceptionが発生した場合、JndiExceptionを 起こすことを確認する <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testRebind05() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = "java:comp/env/abc";
Object obj = "abc";
// JndiTemplate取得
DefaultJndiSupport_JndiTemplateStub02 template = new DefaultJndiSupport_JndiTemplateStub02();
template.setCallRebind(false);
template.setJndiNameToUse(null);
template.setObj(null);
support.setJndiTemplate(template);
// super.resourceRef = false;
support.setResourceRef(false);
try {
// テスト実施
support.rebind(name, obj);
fail();
} catch (JndiException e) {
boolean b = template.isCallRebind();
assertTrue(b);
assertEquals("java:comp/env/abc", template.getJndiNameToUse());
assertEquals("abc", template.getObj());
// 判定
assertEquals(NamingException.class.getName(), e.getCause()
.getClass().getName());
assertThat(logger.getLoggingEvents(), is(asList(error(
"Illegal JNDI context name."))));
}
}
/**
* testUnbind01() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(引数) name:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException<br>
* (状態変化) ログ:<ログ><br>
* エラーログ:<br>
* "Illegal arguments error : name=" + name<br>
* <br>
* 引数nameがnullの場合、例外を起こすことを確認する <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testUnbind01() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = null;
try {
// テスト実施
support.unbind(name);
fail();
} catch (IllegalArgumentException e) {
// 判定
assertThat(logger.getLoggingEvents(), is(asList(error(
"Illegal arguments error : name=null"))));
}
}
/**
* testUnbind02() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) name:""<br>
* (状態) JndiTemplate:DefaultJndiSupport_JndiTemplate_Stub01<br>
* (状態) super.<br>
* resourceRef:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallUnbind:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:null<br>
* <br>
* 期待値:(状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallUnbind:true<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:""<br>
* <br>
* 引数nameが空文字の場合、JndiTemplate.unbind()の呼び出し確認を行う <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testUnbind02() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = "";
// JndiTemplate取得
DefaultJndiSupport_JndiTemplateStub01 template = new DefaultJndiSupport_JndiTemplateStub01();
template.setCallUnbind(false);
template.setJndiNameToUse(null);
support.setJndiTemplate(template);
// super.resourceRef = false;
support.setResourceRef(false);
// テスト実施
support.unbind(name);
// 判定
boolean b = template.isCallUnbind();
assertTrue(b);
assertEquals("", template.getJndiNameToUse());
}
/**
* testUnbind03() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) name:"abc"<br>
* (状態) JndiTemplate:DefaultJndiSupport_JndiTemplate_Stub01<br>
* (状態) super.<br>
* resourceRef:true<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallUnbind:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:null<br>
* <br>
* 期待値:(状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallUnbind:true<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:"java:comp/env/abc"<br>
* <br>
* super.resourceRefがtrueであり、引数nameが"java:comp/env/"で 始まらなかった場合、"java:comp/env/"を引数nameに加えて
* JndiTemplate.unbind()の呼び出しを行っていることを確認を行う <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testUnbind03() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = "abc";
// JndiTemplate取得
DefaultJndiSupport_JndiTemplateStub01 template = new DefaultJndiSupport_JndiTemplateStub01();
template.setCallRebind(false);
template.setJndiNameToUse(null);
support.setJndiTemplate(template);
// super.resourceRef = true;
support.setResourceRef(true);
// テスト実施
support.unbind(name);
// 判定
boolean b = template.isCallUnbind();
assertTrue(b);
assertEquals("java:comp/env/abc", template.getJndiNameToUse());
}
/**
* testUnbind04() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(引数) name:"java:comp/env/abc"<br>
* (状態) JndiTemplate:DefaultJndiSupport_JndiTemplate_Stub02<br>
* (状態) super.<br>
* resourceRef:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallUnbind:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:null<br>
* (状態) NamingException:発生<br>
* <br>
* 期待値:(状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallUnbind:true<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:"java:comp/env/abc"<br>
* (状態変化) 例外:JndiException:<br>
* ラップした例外:NamingException<br>
* (状態変化) ログ:<ログ><br>
* エラーログ:<br>
* "Illegal JNDI context name."<br>
* <br>
* JndiTemplate.unbind()でNamingExceptionが発生した場合、JndiExceptionを 起こすことを確認する <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testUnbind04() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = "java:comp/env/abc";
// JndiTemplate取得
DefaultJndiSupport_JndiTemplateStub02 template = new DefaultJndiSupport_JndiTemplateStub02();
template.setCallRebind(false);
template.setJndiNameToUse(null);
support.setJndiTemplate(template);
// super.resourceRef = false;
support.setResourceRef(false);
try {
// テスト実施
support.unbind(name);
fail();
} catch (JndiException e) {
boolean b = template.isCallUnbind();
assertTrue(b);
assertEquals("java:comp/env/abc", template.getJndiNameToUse());
// 判定
assertThat(logger.getLoggingEvents(), is(asList(error(
"Illegal JNDI context name."))));
assertEquals(NamingException.class.getName(), e.getCause()
.getClass().getName());
}
}
/**
* testLookup01() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(引数) name:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException<br>
* (状態変化) ログ:<ログ><br>
* エラーログ:<br>
* "Illegal arguments error : name=" + name<br>
* <br>
* 引数nameがnullの場合、例外を起こすことを確認する <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testLookup01() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = null;
try {
// テスト実施
support.lookup(name);
fail();
} catch (IllegalArgumentException e) {
// 判定
assertThat(logger.getLoggingEvents(), is(asList(error(
"Illegal arguments error : name=null"))));
}
}
/**
* testLookup02() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) name:""<br>
* (状態) JndiTemplate:DefaultJndiSupport_JndiTemplate_Stub01<br>
* (状態) super.<br>
* resourceRef:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallLookup:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:null<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* lookup()戻り値:"return"<br>
* <br>
* 期待値:(戻り値) Object:"return"<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallLookup:true<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:""<br>
* <br>
* 引数nameが空文字の場合、JndiTemplate.lookup()の呼び出し確認を行う <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testLookup02() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = "";
// JndiTemplate取得
DefaultJndiSupport_JndiTemplateStub01 template = new DefaultJndiSupport_JndiTemplateStub01();
template.setCallLookup(false);
template.setJndiNameToUse(null);
support.setJndiTemplate(template);
// super.resourceRef = false;
support.setResourceRef(false);
// テスト実施
Object result = support.lookup(name);
// 判定
boolean b = template.isCallLookup();
assertTrue(b);
assertEquals("", template.getJndiNameToUse());
assertEquals("return", result);
}
/**
* testLookup03() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) name:"abc"<br>
* (状態) JndiTemplate:DefaultJndiSupport_JndiTemplate_Stub01<br>
* (状態) super.<br>
* resourceRef:true<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallLookup:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:null<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* lookup()戻り値:"return"<br>
* <br>
* 期待値:(戻り値) Object:"return"<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallLookup:true<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:"java:comp/env/abc"<br>
* <br>
* jndiPrefixがtrueであり、引数nameが"java:comp/env/"で始まらなかった場合、 "java:comp/env/"を引数nameに加えてJndiTemplate.lookup()の呼び出しが
* 行われていることを確認を行う <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testLookup03() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = "abc";
// JndiTemplate取得
DefaultJndiSupport_JndiTemplateStub01 template = new DefaultJndiSupport_JndiTemplateStub01();
template.setCallLookup(false);
template.setJndiNameToUse(null);
support.setJndiTemplate(template);
// super.resourceRef = true;
support.setResourceRef(true);
// テスト実施
Object result = support.lookup(name);
// 判定
boolean b = template.isCallLookup();
assertTrue(b);
assertEquals("java:comp/env/abc", template.getJndiNameToUse());
assertEquals("return", result);
}
/**
* testLookup04() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(引数) name:"java:comp/env/abc"<br>
* (状態) JndiTemplate:DefaultJndiSupport_JndiTemplate_Stub02<br>
* (状態) super.<br>
* resourceRef:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallLookup:false<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:null<br>
* (状態) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* lookup()戻り値:"return"<br>
* (状態) NamingException:発生<br>
* <br>
* 期待値:(状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* isCallLookup:true<br>
* (状態変化) DefaultJndiSupport_JndiTemplate_Stub01.<br>
* jndiNameToUse:"java:comp/env/abc"<br>
* (状態変化) 例外:JndiException:<br>
* ラップした例外:NamingException<br>
* (状態変化) ログ:<ログ><br>
* エラーログ:<br>
* "Illegal JNDI context name."<br>
* <br>
* JndiTemplate.lookup()でNamingExceptionが発生した場合、 JndiExceptionを起こすことを確認する <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testLookup04() throws Exception {
// 前処理
DefaultJndiSupport support = new DefaultJndiSupport();
String name = "java:comp/env/abc";
// JndiTemplate取得
DefaultJndiSupport_JndiTemplateStub02 template = new DefaultJndiSupport_JndiTemplateStub02();
template.setCallLookup(false);
template.setJndiNameToUse(null);
support.setJndiTemplate(template);
// super.resourceRef = false;
support.setResourceRef(false);
try {
// テスト実施
support.lookup(name);
fail();
} catch (JndiException e) {
boolean b = template.isCallLookup();
assertTrue(b);
assertEquals("java:comp/env/abc", template.getJndiNameToUse());
// 判定
assertThat(logger.getLoggingEvents(), is(asList(error(
"Illegal JNDI context name."))));
assertEquals(NamingException.class.getName(), e.getCause()
.getClass().getName());
}
}
}