/**
* Copyright 2012-2013 Maciej Jaworski, Mariusz Kapcia, Paweł Kędzia, Mateusz Kubuszok
*
* <p>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</p>
*
* <p>http://www.apache.org/licenses/LICENSE-2.0</p>
*
* <p>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.</p>
*/
package com.autoupdater.client.environment;
import static com.google.common.base.Charsets.UTF_8;
import static org.fest.assertions.api.Assertions.assertThat;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.autoupdater.client.AbstractTest;
import com.autoupdater.client.Paths;
import com.autoupdater.client.Values;
import com.autoupdater.client.environment.settings.ClientSettings;
import com.autoupdater.client.environment.settings.ProgramSettings;
import com.autoupdater.client.xml.parsers.CorrectXMLExamples;
import com.google.common.io.Files;
public class TestEnvironmentDataManager extends AbstractTest {
@Test
public void testDefaultConstructor() {
// given
// when
EnvironmentContext environmentContext = new EnvironmentDataManager().getEnviromentContext();
// then
assertThat(environmentContext).as(
"Contructor should create default environment context properly").isNotNull();
}
@Test
public void testConstructor() {
// given
EnvironmentContext originalEnvironmentContext = new EnvironmentContext();
// when
EnvironmentContext environmentContext = new EnvironmentDataManager(
originalEnvironmentContext).getEnviromentContext();
// then
assertThat(environmentContext).as("Contructor should set environment context properly")
.isNotNull().isEqualTo(originalEnvironmentContext);
}
@Test
public void testGetEnvironmentData() throws IOException, ClientEnvironmentException {
// given
File settingsXML = new File(Paths.Setting.settingsXMLPath);
Files.write(CorrectXMLExamples.clientConfiguration, settingsXML, UTF_8);
settingsXML.deleteOnExit();
File installationData = new File(Paths.Setting.installationDataXMLPath);
Files.write(CorrectXMLExamples.installationData, installationData, UTF_8);
installationData.deleteOnExit();
EnvironmentContext environmentContext = new EnvironmentContext();
environmentContext.setSettingsXMLPath(Paths.Setting.settingsXMLPath);
environmentContext.setInstallationDataXMLPath(Paths.Setting.installationDataXMLPath);
EnvironmentData environmentData = null;
// when
environmentData = new EnvironmentDataManager(environmentContext).getEnvironmentData();
// then
assertThat(environmentData).as("getEnvironmentData() should return result properly")
.isNotNull();
assertThat(environmentData.getClientSettings()).as(
"getEnvironmentData() result should contain valid client settings").isNotNull();
assertThat(environmentData.getProgramsSettings())
.as("getEnvironmentData() result should contain valid programs' settings")
.isNotNull().isNotEmpty();
assertThat(environmentData.getInstallationsData())
.as("getEnvironmentData() result should contain valid installation data when it's available")
.isNotNull().isNotEmpty();
}
@Test
public void testSetEnvironmentData() throws ClientEnvironmentException, IOException {
// given
File settingsXML = new File(Paths.Setting.settingsXMLPath);
settingsXML.deleteOnExit();
File installationData = new File(Paths.Setting.installationDataXMLPath);
installationData.deleteOnExit();
EnvironmentContext environmentContext = new EnvironmentContext();
environmentContext.setSettingsXMLPath(Paths.Setting.settingsXMLPath);
environmentContext.setInstallationDataXMLPath(Paths.Setting.installationDataXMLPath);
EnvironmentDataManager environmentDataService = new EnvironmentDataManager(
environmentContext);
// when
environmentDataService.setEnvironmentData(environmentData());
EnvironmentData savedEnvironmentData = environmentDataService.getEnvironmentData();
ClientSettings savedClientSettings = savedEnvironmentData.getClientSettings();
List<ProgramSettings> savedProgramsSettings = new ArrayList<ProgramSettings>(
savedEnvironmentData.getProgramsSettings());
// then
assertThat(savedClientSettings).as(
"setEnvironmentData(EnvironmentData) should save client's settings").isNotNull();
assertThat(savedClientSettings.getPathToClientDirectory())
.as("setEnvironmentData(EnvironmentData) should save client's directory")
.isNotNull().isEqualTo(Paths.Library.clientDir);
assertThat(savedClientSettings.getPathToClient())
.as("setEnvironmentData(EnvironmentData) should save client's executable")
.isNotNull().isEqualTo(Paths.Library.clientPath);
assertThat(savedClientSettings.getPathToInstaller())
.as("setEnvironmentData(EnvironmentData) should save installer's path").isNotNull()
.isEqualTo(Paths.Library.installerPath);
;
assertThat(savedProgramsSettings)
.as("setEnvironmentData(EnvironmentData) should save installation data")
.isNotNull().hasSize(2);
assertThat(savedProgramsSettings.get(0).getProgramName())
.as("setEnvironmentData(EnvironmentData) should save program's name").isNotNull()
.isEqualTo(Values.ProgramSettings.programName);
assertThat(savedProgramsSettings.get(0).getPathToProgramDirectory())
.as("setEnvironmentData(EnvironmentData) should save program's directory")
.isNotNull().isEqualTo(Paths.Installations.Program.programDir);
assertThat(savedProgramsSettings.get(0).getPathToProgram())
.as("setEnvironmentData(EnvironmentData) should save path to program").isNotNull()
.isEqualTo(Paths.Installations.Program.programPath);
assertThat(savedProgramsSettings.get(0).getServerAddress())
.as("setEnvironmentData(EnvironmentData) should save server's address").isNotNull()
.isEqualTo(Values.ProgramSettings.serverAddress);
assertThat(savedProgramsSettings.get(0).isDevelopmentVersion()).as(
"setEnvironmentData(EnvironmentData) should save development version").isTrue();
}
@Test
public void testCreateDefaultSettings() {
// given
File settingsXML = new File(Paths.Setting.settingsXMLPath);
settingsXML.deleteOnExit();
File installationData = new File(Paths.Setting.installationDataXMLPath);
installationData.deleteOnExit();
EnvironmentContext environmentContext = new EnvironmentContext();
environmentContext.setSettingsXMLPath(Paths.Setting.settingsXMLPath);
environmentContext.setInstallationDataXMLPath(Paths.Setting.installationDataXMLPath);
// when
EnvironmentData environmentData = new EnvironmentDataManager(environmentContext)
.createDefaultSettings();
ClientSettings clientSettings = environmentData.getClientSettings();
List<ProgramSettings> programsSettings = new ArrayList<ProgramSettings>(
environmentData.getProgramsSettings());
// then
assertThat(clientSettings).as("createEnvironmentData() should create client's settings")
.isNotNull();
assertThat(clientSettings.getPathToClientDirectory())
.as("createEnvironmentData() should create client's directory").isNotNull()
.isEqualTo(environmentContext.getDefaultPathToClientDirectory());
assertThat(clientSettings.getPathToClient())
.as("createEnvironmentData() should create client's executable").isNotNull()
.isEqualTo(environmentContext.getDefaultPathToClient());
assertThat(clientSettings.getPathToInstaller())
.as("createEnvironmentData() should create installer's path").isNotNull()
.isEqualTo(environmentContext.getDefaultPathToInstaller());
assertThat(programsSettings)
.as("createEnvironmentData() should not create any program's settings").isNotNull()
.isEmpty();
}
@Test
public void testCreateDefaultSettingsWithProxy() {
// given
File settingsXML = new File(Paths.Setting.settingsXMLPath);
settingsXML.deleteOnExit();
File installationData = new File(Paths.Setting.installationDataXMLPath);
installationData.deleteOnExit();
EnvironmentContext environmentContext = new EnvironmentContext();
environmentContext.setSettingsXMLPath(Paths.Setting.settingsXMLPath);
environmentContext.setInstallationDataXMLPath(Paths.Setting.installationDataXMLPath);
// when
EnvironmentData environmentData = new EnvironmentDataManager(environmentContext)
.createDefaultSettingsWithProxy();
ClientSettings clientSettings = environmentData.getClientSettings();
List<ProgramSettings> programsSettings = new ArrayList<ProgramSettings>(
environmentData.getProgramsSettings());
// then
assertThat(clientSettings).as(
"createEnvironmentDataWithProxy() should create client's settings").isNotNull();
assertThat(clientSettings.getPathToClientDirectory())
.as("createEnvironmentDataWithProxy() should create client's directory")
.isNotNull().isEqualTo(environmentContext.getDefaultPathToClientDirectory());
assertThat(clientSettings.getPathToClient())
.as("createEnvironmentDataWithProxy() should create client's executable")
.isNotNull().isEqualTo(environmentContext.getDefaultPathToClient());
assertThat(clientSettings.getPathToInstaller())
.as("createEnvironmentDataWithProxy() should create installer's path").isNotNull()
.isEqualTo(environmentContext.getDefaultPathToInstaller());
assertThat(clientSettings.getProxyAddress())
.as("createEnvironmentDataWithProxy() should create proxy's address").isNotNull()
.isEqualTo(environmentContext.getDefaultProxyAddress());
assertThat(clientSettings.getProxyPort())
.as("createEnvironmentDataWithProxy() should create proxy's port").isNotNull()
.isEqualTo(environmentContext.getDefaultProxyPort());
assertThat(programsSettings)
.as("createEnvironmentDataWithProxy() should not create any program's settings")
.isNotNull().isEmpty();
}
}