/** * personium.io * Copyright 2014 FUJITSU LIMITED * * 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 com.fujitsu.dc.test.unit.core.bar; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; import org.w3c.dom.Document; import org.w3c.dom.Element; import com.fujitsu.dc.core.DcCoreException; import com.fujitsu.dc.core.bar.BarFileUtils; import com.fujitsu.dc.test.categories.Unit; /** * BarFileUtilsクラス用のユニットテストクラス. */ @Category({Unit.class }) public class BarFileUtilsTest { /** * rootprops_xmlのACL_URLがロールインスタンスURLに変換されること. */ @Test public void rootprops_xmlのACL_URLがロールインスタンスURLに変換されること() { final String cellName = "installTargetCell"; final String boxName = "installTargetBox"; final String baseUrl = "https://baseserver/testcell1/__role/__/col1"; final String targetUrl = "https://targetserver/"; final String master = targetUrl + cellName + "/__role/" + boxName + "/col1/"; try { DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder; docbuilder = dbfactory.newDocumentBuilder(); Document document = docbuilder.newDocument(); Element element = document.createElement("acl"); element.setAttribute("xml:base", baseUrl + "/"); // ACL_URLの末尾に"/"がある場合 Element res = BarFileUtils.convertToRoleInstanceUrl(element, targetUrl, cellName, boxName); assertEquals(master, res.getAttribute("xml:base")); // ACL_URLの末尾に"/"がない場合 element.setAttribute("xml:base", baseUrl); res = BarFileUtils.convertToRoleInstanceUrl(element, targetUrl, cellName, boxName); assertEquals(master, res.getAttribute("xml:base")); return; } catch (ParserConfigurationException e) { fail("DOM Parsing Error: " + e.getMessage()); } catch (DcCoreException dce) { fail("Unexpected exception"); } catch (Exception ex) { fail("Unexpected exception"); } fail("DcCoreExceptionが返却されない"); } /** * rootprops_xmlのACL_URLがURL形式ではない場合に例外がスローされること. */ @Test public void rootprops_xmlのACL_URLがURL形式ではない場合に例外がスローされること() { final String cellName = "installTargetCell"; final String boxName = "installTargetBox"; final String baseUrl = "https/baseserver/testcell1/__role/__/col1/"; final String targetUrl = "https://targetserver/"; try { DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder; docbuilder = dbfactory.newDocumentBuilder(); Document document = docbuilder.newDocument(); Element element = document.createElement("acl"); element.setAttribute("xml:base", baseUrl + "/"); BarFileUtils.convertToRoleInstanceUrl(element, targetUrl, cellName, boxName); fail("Unexpected exception"); } catch (ParserConfigurationException e) { fail("DOM Parsing Error: " + e.getMessage()); } catch (DcCoreException dce) { String code = dce.getCode(); assertEquals(DcCoreException.BarInstall.JSON_FILE_FORMAT_ERROR.getCode(), code); return; } catch (Exception ex) { fail("Unexpected exception"); } fail("DcCoreExceptionが返却されない"); } /** * スキーマなしBoxへのインストールでACL_URLが正しくない場合にバリデートがfalseで返却されること. */ @Test @Ignore public void スキーマなしBoxへのインストールでACL_URLが正しくない場合にバリデートがfalseで返却されること() { // URL形式ではない final String baseUrl = "https//baseserver/testcell1/__role/_a_/col1/"; final String schemaUrl = null; try { DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder; docbuilder = dbfactory.newDocumentBuilder(); Document document = docbuilder.newDocument(); Element element = document.createElement("acl"); element.setAttribute("xml:base", baseUrl); assertFalse(BarFileUtils.aclNameSpaceValidate("90_rootprops.xml", element, schemaUrl)); fail("Unexpected exception"); } catch (ParserConfigurationException e) { fail("DOM Parsing Error: " + e.getMessage()); } catch (DcCoreException dce) { String code = dce.getCode(); assertEquals(DcCoreException.BarInstall.JSON_FILE_FORMAT_ERROR.getCode(), code); return; } catch (Exception ex) { fail("Unexpected exception"); } fail("DcCoreExceptionが返却されない"); } /** * スキーマなしBoxへのインストールでACL_URLのBoxが正しくない場合にバリデートがfalseで返却されること. */ @Test @Ignore public void スキーマなしBoxへのインストールでACL_URLのBoxが正しくない場合にバリデートがfalseで返却されること() { // デフォルトBoxではない final String baseUrl = "https://baseserver/testcell1/__role/_a_/col1/"; final String schemaUrl = null; try { DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder; docbuilder = dbfactory.newDocumentBuilder(); Document document = docbuilder.newDocument(); Element element = document.createElement("acl"); element.setAttribute("xml:base", baseUrl); assertFalse(BarFileUtils.aclNameSpaceValidate("90_rootprops.xml", element, schemaUrl)); return; } catch (ParserConfigurationException e) { fail("DOM Parsing Error: " + e.getMessage()); } catch (DcCoreException dce) { String code = dce.getCode(); assertEquals(DcCoreException.BarInstall.JSON_FILE_FORMAT_ERROR.getCode(), code); return; } catch (Exception ex) { fail("Unexpected exception"); } fail("DcCoreExceptionが返却されない"); } /** * スキーマありBoxへのインストールでACL_URL中のCellがアプリセルではない場合にバリデートがfalseで返却されること. */ @Test @Ignore public void スキーマありBoxへのインストールでACL_URL中のCellがアプリセルではない場合にバリデートがfalseで返却されること() { // アプリセルではない final String baseUrl = "https://baseserver/testcell1/__role/__/col1/"; final String schemaUrl = "https://targetserver/testcellx/"; try { DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder; docbuilder = dbfactory.newDocumentBuilder(); Document document = docbuilder.newDocument(); Element element = document.createElement("acl"); element.setAttribute("xml:base", baseUrl); assertFalse(BarFileUtils.aclNameSpaceValidate("90_rootprops.xml", element, schemaUrl)); return; } catch (ParserConfigurationException e) { fail("DOM Parsing Error: " + e.getMessage()); } catch (DcCoreException dce) { String code = dce.getCode(); assertEquals(DcCoreException.BarInstall.JSON_FILE_FORMAT_ERROR.getCode(), code); return; } catch (Exception ex) { fail("Unexpected exception"); } fail("DcCoreExceptionが返却されない"); } /** * スキーマありBoxへのインストールでACL_URL中のBoxが不正の場合にバリデートがfalseで返却されること. */ @Test @Ignore public void スキーマありBoxへのインストールでACL_URL中のBoxが不正の場合にバリデートがfalseで返却されること() { // アプリセルではない final String baseUrl = "https://targetserver/testcell1/__role/_x_/col1/"; final String schemaUrl = "https://targetserver/testcell1/"; try { DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder; docbuilder = dbfactory.newDocumentBuilder(); Document document = docbuilder.newDocument(); Element element = document.createElement("acl"); element.setAttribute("xml:base", baseUrl); assertFalse(BarFileUtils.aclNameSpaceValidate("90_rootprops.xml", element, schemaUrl)); return; } catch (ParserConfigurationException e) { fail("DOM Parsing Error: " + e.getMessage()); } catch (DcCoreException dce) { String code = dce.getCode(); assertEquals(DcCoreException.BarInstall.JSON_FILE_FORMAT_ERROR.getCode(), code); return; } catch (Exception ex) { fail("Unexpected exception"); } fail("DcCoreExceptionが返却されない"); } }