Package org.aeonbits.owner.importedprops

Source Code of org.aeonbits.owner.importedprops.WithImportedPropertiesTest$WithImportedProperties

/*
* Copyright (c) 2012-2014, Luigi R. Viggiano
* All rights reserved.
*
* This software is distributable under the BSD license.
* See the terms of the BSD license in the documentation provided with this software.
*/

package org.aeonbits.owner.importedprops;

import org.aeonbits.owner.Config;
import org.aeonbits.owner.ConfigFactory;
import org.aeonbits.owner.SystemProviderForTest;
import org.aeonbits.owner.UtilTest;
import org.junit.Test;

import java.util.HashMap;
import java.util.Properties;

import static org.junit.Assert.assertEquals;

/**
* @author Luigi R. Viggiano
*/
public class WithImportedPropertiesTest {

    @Test
    public void testSubstituteWithImports() {
        Properties propsFromTest = new Properties();
        propsFromTest.setProperty("external", "propsFromTest");
        WithImportedProperties conf = ConfigFactory.create
                (WithImportedProperties.class, propsFromTest);
        assertEquals("testing replacement from propsFromTest properties file.", conf.someValue());
    }

    @Test
    public void testSystemProperty() {
        String userHome = System.getProperty("user.home");
        WithImportedProperties conf = ConfigFactory.create(WithImportedProperties.class, System.getProperties());
        assertEquals(userHome, conf.userHome());
    }

    @Test
    public void testSystemEnv() {
        Object save = UtilTest.setSystem(
                new SystemProviderForTest(
                        new Properties() {{
                            setProperty("user.home", "/home/foobar");
                        }},
                        new HashMap<String, String>() {{
                            put("HOME", "/home/foobar");
                        }}
                ));
        try {
            String envHome = UtilTest.getenv("HOME");
            WithImportedProperties conf = ConfigFactory.create(WithImportedProperties.class, UtilTest.getenv());
            assertEquals(envHome, conf.envHome());
        } finally {
            UtilTest.setSystem(save);
        }
    }

    @Test
    public void testMultipleImports() {
        Object save = UtilTest.setSystem(
                new SystemProviderForTest(
                        new Properties() {{
                            setProperty("user.home", "/home/foobar");
                        }},
                        new HashMap<String, String>() {{
                            put("HOME", "/home/foobar");
                        }}
                ));
        try {
            Properties propsFromTest = new Properties();
            propsFromTest.setProperty("external", "propsFromTest");

            String userHome = UtilTest.getSystemProperty("user.home");
            String envHome = UtilTest.getenv("HOME");
            WithImportedProperties conf =
                    ConfigFactory.create(WithImportedProperties.class,
                            propsFromTest, UtilTest.getSystemProperties(), UtilTest.getenv());
            assertEquals(userHome, conf.userHome());
            assertEquals(envHome, conf.envHome());
            assertEquals("testing replacement from propsFromTest properties file.", conf.someValue());
        } finally {
            UtilTest.setSystem(save);
        }
    }

    @Test
    public void testBackSlash() {
        Properties propsFromTest = new Properties();
        propsFromTest.setProperty("external", "propsFromTest");
        String winPath = "C:\\windows\\path";
        propsFromTest.setProperty("value.with.backslash", winPath);

        WithImportedProperties conf =
                ConfigFactory.create(WithImportedProperties.class,
                        propsFromTest);

        assertEquals(winPath, conf.valueWithBackslash());
    }

    @Test
    public void testPropertyComingFromExternalObject() {
        Properties propsFromTest = new Properties();
        propsFromTest.setProperty("external", "propsFromTest");

        WithImportedProperties conf =
                ConfigFactory.create(WithImportedProperties.class,
                        propsFromTest);

        assertEquals("propsFromTest", conf.external());
    }

    public static interface WithImportedProperties extends Config {
        String someValue();

        @DefaultValue("${user.home}")
        String userHome();

        @DefaultValue("${HOME}")
        String envHome();

        @DefaultValue("${value.with.backslash}")
        String valueWithBackslash();

        String external();
    }
}
TOP

Related Classes of org.aeonbits.owner.importedprops.WithImportedPropertiesTest$WithImportedProperties

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.