Java tutorial
/* * Copyright 2014 Loic Merckel * * 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 io.uploader.drive.config; import io.uploader.drive.config.proxy.HasProxySettings; import io.uploader.drive.config.proxy.Proxy; import java.io.File; import java.io.IOException; import java.nio.file.Paths; import java.util.Arrays; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.io.FileUtils; import org.junit.Before; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.uploader.drive.config.Configuration; import org.junit.Test; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class ConfigTest { final private static Logger logger = LoggerFactory.getLogger(ConfigTest.class); private File configSettingFile = null; private static boolean hasConfigBeenLoaded = false; @Rule public TemporaryFolder tmpFolder = new TemporaryFolder(); @Before public void init() throws IOException { // generate the test config file File template = new File( new ConfigTest().getClass().getResource("/driveuploader-settings-test.xml").getFile()); configSettingFile = tmpFolder.newFile(); FileUtils.copyFile(template, configSettingFile); assertFalse(configSettingFile == null); assertTrue(io.uploader.drive.util.FileUtils.getFileAttr(Paths.get(configSettingFile.getPath())).size() > 0); // Check the default values before loading if (!hasConfigBeenLoaded) { assertTrue(80 == Configuration.INSTANCE.getHttpProxySettings().getPort()); assertTrue(443 == Configuration.INSTANCE.getHttpsProxySettings().getPort()); } // load the test settings try { Configuration.INSTANCE.load(configSettingFile.getPath()); hasConfigBeenLoaded = true; } catch (ConfigurationException e) { logger.error("Error occurred while loading the cinfiguration file", e); assertTrue(false); } } @Test public void shouldHaveHttpProxy() { verifyProxy(Configuration.INSTANCE.getHttpProxySettings(), false, "host-http", 9000, "user-http", "password-http"); } @Test public void shouldHaveHttpsProxy() { verifyProxy(Configuration.INSTANCE.getHttpsProxySettings(), false, "host-https", 9001, "user-https", "password-https"); } private void verifyProxy(HasProxySettings proxySettings, boolean isActivate, String host, int port, String username, String password) { assertTrue(proxySettings.isActive() == isActivate); assertTrue(username.equals(proxySettings.getUsername())); assertTrue(password.equals(proxySettings.getPassword())); assertTrue(host.equals(proxySettings.getHost())); assertTrue(port == proxySettings.getPort()); } @Test public void shouldUpdateHttpProxy() throws IOException { verifyProxy(Configuration.INSTANCE.getHttpProxySettings(), false, "host-http", 9000, "user-http", "password-http"); byte[] initFileContents = FileUtils.readFileToByteArray(configSettingFile); boolean activated = true; String host = "host.of.the.new.proxy"; String password = "the*new_password"; String username = "the new user name"; int port = 8567; Proxy newProxy = new Proxy.Builder("http").setActivated(activated).setHost(host).setPassword(password) .setUsername(username).setPort(port).build(); Configuration.INSTANCE.updateProxy(newProxy); verifyProxy(Configuration.INSTANCE.getHttpProxySettings(), activated, host, port, username, password); byte[] updatedFileContents = FileUtils.readFileToByteArray(configSettingFile); assertFalse(Arrays.equals(updatedFileContents, initFileContents)); } @Test public void shouldUpdateHttpsProxy() throws IOException { verifyProxy(Configuration.INSTANCE.getHttpsProxySettings(), false, "host-https", 9001, "user-https", "password-https"); byte[] initFileContents = FileUtils.readFileToByteArray(configSettingFile); boolean activated = true; String host = "host.of.the.new.secured.proxy"; String password = "the*new_password*https"; String username = "the new user name for https"; int port = 8577; Proxy newProxy = new Proxy.Builder("https").setActivated(activated).setHost(host).setPassword(password) .setUsername(username).setPort(port).build(); Configuration.INSTANCE.updateProxy(newProxy); verifyProxy(Configuration.INSTANCE.getHttpsProxySettings(), activated, host, port, username, password); byte[] updatedFileContents = FileUtils.readFileToByteArray(configSettingFile); assertFalse(Arrays.equals(updatedFileContents, initFileContents)); } }