package com.ctrip.framework.apollo.foundation.internals.provider; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileInputStream; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.ctrip.framework.foundation.internals.provider.DefaultServerProvider; public class DefaultServerProviderTest { private DefaultServerProvider defaultServerProvider; @Before public void setUp() throws Exception { cleanUp(); defaultServerProvider = new DefaultServerProvider(); } @After public void tearDown() throws Exception { cleanUp(); } private void cleanUp() { System.clearProperty("env"); System.clearProperty("idc"); } @Test public void testEnvWithSystemProperty() throws Exception { String someEnv = "someEnv"; String someDc = "someDc"; System.setProperty("env", someEnv); System.setProperty("idc", someDc); defaultServerProvider.initialize(null); assertEquals(someEnv, defaultServerProvider.getEnvType()); assertEquals(someDc, defaultServerProvider.getDataCenter()); } @Test public void testWithPropertiesStream() throws Exception { File baseDir = new File("src/test/resources/properties"); File serverProperties = new File(baseDir, "server.properties"); defaultServerProvider.initialize(new FileInputStream(serverProperties)); assertEquals("SHAJQ", defaultServerProvider.getDataCenter()); assertTrue(defaultServerProvider.isEnvTypeSet()); assertEquals("DEV", defaultServerProvider.getEnvType()); } @Test public void testWithUTF8BomPropertiesStream() throws Exception { File baseDir = new File("src/test/resources/properties"); File serverProperties = new File(baseDir, "server-with-utf8bom.properties"); defaultServerProvider.initialize(new FileInputStream(serverProperties)); assertEquals("SHAJQ", defaultServerProvider.getDataCenter()); assertTrue(defaultServerProvider.isEnvTypeSet()); assertEquals("DEV", defaultServerProvider.getEnvType()); } @Test public void testWithPropertiesStreamAndEnvFromSystemProperty() throws Exception { String prodEnv = "pro"; System.setProperty("env", prodEnv); File baseDir = new File("src/test/resources/properties"); File serverProperties = new File(baseDir, "server.properties"); defaultServerProvider.initialize(new FileInputStream(serverProperties)); String predefinedDataCenter = "SHAJQ"; assertEquals(predefinedDataCenter, defaultServerProvider.getDataCenter()); assertTrue(defaultServerProvider.isEnvTypeSet()); assertEquals(prodEnv, defaultServerProvider.getEnvType()); } @Test public void testWithNoPropertiesStream() throws Exception { defaultServerProvider.initialize(null); assertNull(defaultServerProvider.getDataCenter()); assertFalse(defaultServerProvider.isEnvTypeSet()); assertNull(defaultServerProvider.getEnvType()); } }