/* * Sakuli - Testing and Monitoring-Tool for Websites and common UIs. * * Copyright 2013 - 2015 the original author or authors. * * 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 org.sakuli.starter.helper; import org.apache.commons.lang3.StringUtils; import org.sakuli.BaseTest; import org.sakuli.datamodel.properties.SahiProxyProperties; import org.sakuli.datamodel.properties.TestSuiteProperties; import org.sakuli.utils.SakuliPropertyPlaceholderConfigurer; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.FileNotFoundException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import static org.testng.Assert.*; public class SakuliFolderHelperTest extends BaseTest { @DataProvider(name = "windowsPaths") public static Object[][] windowsPaths() { return new Object[][]{ {"C:\\Program Files (x86)"}, {"\"C:\\Program Files (x86)\""}, {"C:\\Program Files (x86)\\sakuli"}, {"\"C:\\Program Files (x86)\"\\sakuli"}, {"C:\\PROGRA~1\\."}, {"\"C:\\PROGRA~1\\.\""}, {"\'C:\\PROGRA~1\\.\'"}, }; } @Test public void testCheckSahiProxyHomeAndSetContextVariables() throws Exception { //test with test suite folder to ensure that file is present final String absoluteSahiPath = Paths.get(TEST_FOLDER_PATH).toAbsolutePath().toString(); String log = ""; log = SakuliFolderHelper.checkSahiProxyHomeAndSetContextVariables(TEST_FOLDER_PATH, log); assertEquals(SakuliPropertyPlaceholderConfigurer.SAHI_HOME_VALUE, absoluteSahiPath); assertEquals(log, "\nset property '" + SahiProxyProperties.PROXY_HOME_FOLDER + "' to \"" + absoluteSahiPath + "\""); } @Test(expectedExceptions = FileNotFoundException.class, expectedExceptionsMessageRegExp = "sahi folder .* does not exist!") public void testCheckSahiProxyHomeAndSetContextVariablesFolderMissing() throws Exception { SakuliFolderHelper.checkSahiProxyHomeAndSetContextVariables("not-valid-path/to-sahi-home", ""); } @Test public void testCheckTestSuiteFolderAndSetContextVariables() throws Exception { final String absoluteTestSuitePath = Paths.get(TEST_FOLDER_PATH).toAbsolutePath().toString(); String log = ""; log = SakuliFolderHelper.checkTestSuiteFolderAndSetContextVariables(TEST_FOLDER_PATH, log); assertEquals(SakuliPropertyPlaceholderConfigurer.TEST_SUITE_FOLDER_VALUE, absoluteTestSuitePath); assertEquals(log, "\nset property '" + TestSuiteProperties.TEST_SUITE_FOLDER + "' to \"" + absoluteTestSuitePath + "\""); } @Test(expectedExceptions = FileNotFoundException.class, expectedExceptionsMessageRegExp = "sakuli test suite folder .* does not exist!") public void testCheckTestSuiteFolderAndSetContextVariablesFolderMissing() throws Exception { SakuliFolderHelper.checkTestSuiteFolderAndSetContextVariables("not-valid-path/to-suite", ""); } @Test(expectedExceptions = FileNotFoundException.class, expectedExceptionsMessageRegExp = "property file \"testsuite.properties\" does not exist in folder.*") public void testCheckTestSuiteFolderAndSetContextVariablesSuitePropertyMissing() throws Exception { Path path = Paths.get(getClass().getResource("unvalid").toURI()); assertTrue(Files.exists(path)); SakuliFolderHelper.checkTestSuiteFolderAndSetContextVariables(path.toString(), ""); } @Test(expectedExceptions = FileNotFoundException.class, expectedExceptionsMessageRegExp = "suite file \"testsuite.suite\" does not exist in folder.*") public void testCheckTestSuiteFolderAndSetContextVariablesSuiteFileMissing() throws Exception { Path path = Paths.get(getClass().getResource("unvalid2").toURI()); assertTrue(Files.exists(path)); SakuliFolderHelper.checkTestSuiteFolderAndSetContextVariables(path.toString(), ""); } @Test public void testCheckHomeFolder() throws Exception { Path path = Paths.get(BaseTest.SAKULI_HOME_FOLDER_PATH); assertTrue(Files.exists(path)); SakuliFolderHelper.checkSakuliHomeFolderAndSetContextVariables(path.toString(), ""); assertEquals(SakuliPropertyPlaceholderConfigurer.SAKULI_HOME_FOLDER_VALUE, path.toAbsolutePath().normalize().toString()); } @Test(expectedExceptions = FileNotFoundException.class, expectedExceptionsMessageRegExp = ".*not have a valid file structure! Please use the correct folder!") public void testCheckHomeFolderNotValid() throws Exception { Path path = Paths.get("./src"); assertTrue(Files.exists(path)); SakuliFolderHelper.checkSakuliHomeFolderAndSetContextVariables(path.toString(), ""); } @Test(expectedExceptions = FileNotFoundException.class, expectedExceptionsMessageRegExp = "no valid SAKULI HOME folder specified - please configure one!") public void testCheckHomeFolderNotDefined() throws Exception { System.clearProperty("SAKULI_HOME"); String envSakuliHome = System.getenv("SAKULI_HOME"); assertTrue(StringUtils.isBlank(envSakuliHome) || envSakuliHome.equalsIgnoreCase("null")); SakuliFolderHelper.checkSakuliHomeFolderAndSetContextVariables(null, ""); } @Test(dataProvider = "windowsPaths") public void testWindowsPaths(String path) throws Exception { assertNotNull(SakuliFolderHelper.normalizePath(path)); } }