diff --git a/spring-cloud-alibaba-nacos-config/pom.xml b/spring-cloud-alibaba-nacos-config/pom.xml
index d003031f..9fcb1662 100644
--- a/spring-cloud-alibaba-nacos-config/pom.xml
+++ b/spring-cloud-alibaba-nacos-config/pom.xml
@@ -71,6 +71,18 @@
spring-boot-starter-test
test
+
+ org.powermock
+ powermock-module-junit4
+ 1.7.1
+ test
+
+
+ org.powermock
+ powermock-api-mockito
+ 1.7.1
+ test
+
diff --git a/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigAutoConfigurationTests.java b/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigAutoConfigurationTests.java
deleted file mode 100644
index a1a0cde0..00000000
--- a/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigAutoConfigurationTests.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2018 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.springframework.cloud.alibaba.nacos;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.AutoConfigureBefore;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator;
-import org.springframework.cloud.alibaba.nacos.refresh.NacosRefreshProperties;
-import org.springframework.cloud.context.refresh.ContextRefresher;
-import org.springframework.cloud.context.scope.refresh.RefreshScope;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.Environment;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * @author xiaojing
- */
-public class NacosConfigAutoConfigurationTests {
-
- private ConfigurableApplicationContext context;
-
- @Before
- public void setUp() throws Exception {
- this.context = new SpringApplicationBuilder(
- NacosConfigBootstrapConfiguration.class,
- NacosConfigAutoConfiguration.class, TestConfiguration.class).web(false)
- .run("--spring.cloud.nacos.config.name=myapp",
- "--spring.cloud.config.enabled=true",
- "--spring.cloud.nacos.config.server-addr=127.0.0.1:8848",
- "--spring.cloud.nacos.config.prefix=test");
- }
-
- @After
- public void tearDown() throws Exception {
- if (this.context != null) {
- this.context.close();
- }
- }
-
- @Test
- public void testNacosConfigProperties() {
- NacosConfigProperties nacosConfigProperties = this.context.getParent()
- .getBean(NacosConfigProperties.class);
- assertThat(nacosConfigProperties.getFileExtension()).isEqualTo("properties");
- assertThat(nacosConfigProperties.getPrefix()).isEqualTo("test");
- assertThat(nacosConfigProperties.getName()).isEqualTo("myapp");
-
- }
-
- @Test
- public void testNacosRefreshProperties() {
-
- NacosRefreshProperties nacosRefreshProperties = this.context
- .getBean(NacosRefreshProperties.class);
- assertThat(nacosRefreshProperties.isEnabled()).isEqualTo(true);
-
- }
-
- @Configuration
- @AutoConfigureBefore(NacosConfigAutoConfiguration.class)
- static class TestConfiguration {
-
- @Autowired
- ConfigurableApplicationContext context;
-
- @Bean
- ContextRefresher contextRefresher() {
- return new ContextRefresher(context, new RefreshScope());
- }
-
- }
-
-}
diff --git a/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigBootstrapConfigurationTests.java b/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigBootstrapConfigurationTests.java
deleted file mode 100644
index 3225ba68..00000000
--- a/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigBootstrapConfigurationTests.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2018 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.springframework.cloud.alibaba.nacos;
-
-import java.lang.reflect.Field;
-
-import com.alibaba.nacos.api.config.ConfigService;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.core.env.Environment;
-import org.springframework.util.ReflectionUtils;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * @author xiaojing
- */
-public class NacosConfigBootstrapConfigurationTests {
-
- private ConfigurableApplicationContext context;
-
- @Before
- public void setUp() throws Exception {
- this.context = new SpringApplicationBuilder(
- NacosConfigBootstrapConfiguration.class).web(false).run(
- "--spring.cloud.nacos.config.name=true",
- "--spring.cloud.config.enabled=true",
- "--spring.cloud.nacos.config.server-addr=127.0.0.1:8848",
- "--spring.cloud.nacos.config.prefix=myapp");
- }
-
- @After
- public void tearDown() throws Exception {
- if (this.context != null) {
- this.context.close();
- }
- }
-
- @Test
- public void testNacosPropertySourceLocator() {
-
- NacosPropertySourceLocator locator = this.context
- .getBean(NacosPropertySourceLocator.class);
- Environment environment = this.context.getEnvironment();
- try {
- locator.locate(environment);
- }
- catch (Exception e) {
-
- }
-
- Field nacosConfigPropertiesField = ReflectionUtils
- .findField(NacosPropertySourceLocator.class, "nacosConfigProperties");
- nacosConfigPropertiesField.setAccessible(true);
-
- NacosConfigProperties configService = (NacosConfigProperties) ReflectionUtils
- .getField(nacosConfigPropertiesField, locator);
-
- assertThat(configService).isNotNull();
- }
-
-}
diff --git a/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigurationExtConfigTests.java b/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigurationExtConfigTests.java
new file mode 100644
index 00000000..cc7098b1
--- /dev/null
+++ b/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigurationExtConfigTests.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2018 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.springframework.cloud.alibaba.nacos;
+
+import static org.junit.Assert.assertNotNull;
+import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+import com.alibaba.nacos.client.config.NacosConfigService;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.api.support.MethodProxy;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.modules.junit4.PowerMockRunnerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator;
+import org.springframework.cloud.alibaba.nacos.endpoint.NacosConfigEndpointAutoConfiguration;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author xiaojing
+ */
+
+@RunWith(PowerMockRunner.class)
+@PowerMockIgnore("javax.management.*")
+@PowerMockRunnerDelegate(SpringRunner.class)
+@PrepareForTest({ NacosConfigService.class })
+@SpringBootTest(classes = NacosConfigurationExtConfigTests.TestConfig.class, properties = {
+ "spring.application.name=myTestService1", "spring.profiles.active=dev,test",
+ "spring.cloud.nacos.config.server-addr=127.0.0.1:8848",
+ "spring.cloud.nacos.config.encode=utf-8",
+ "spring.cloud.nacos.config.timeout=1000",
+ "spring.cloud.nacos.config.file-extension=properties",
+
+ "spring.cloud.nacos.config.ext-config[0].data-id=ext-config-common01.properties",
+
+ "spring.cloud.nacos.config.ext-config[1].data-id=ext-config-common02.properties",
+ "spring.cloud.nacos.config.ext-config[1].group=GLOBAL_GROUP",
+
+ "spring.cloud.nacos.config.shared-dataids=common1.properties,common2.properties",
+
+ "spring.cloud.nacos.config.accessKey=test-accessKey",
+ "spring.cloud.nacos.config.secretKey=test-secretKey" }, webEnvironment = NONE)
+public class NacosConfigurationExtConfigTests {
+
+ static {
+
+ try {
+ // when(any(ConfigService.class).getConfig(eq("test-name.properties"),
+ // eq("test-group"), any())).thenReturn("user.name=hello");
+
+ Method method = PowerMockito.method(NacosConfigService.class, "getConfig",
+ String.class, String.class, long.class);
+ MethodProxy.proxy(method, new InvocationHandler() {
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable {
+
+ if ("test-name.properties".equals(args[0])
+ && "DEFAULT_GROUP".equals(args[1])) {
+ return "user.name=hello\nuser.age=12";
+ }
+
+ if ("test-name-dev.properties".equals(args[0])
+ && "DEFAULT_GROUP".equals(args[1])) {
+ return "user.name=dev";
+ }
+
+ if ("ext-config-common01.properties".equals(args[0])
+ && "DEFAULT_GROUP".equals(args[1])) {
+ return "test-ext-config1=config1\ntest-ext-config2=config1";
+ }
+ if ("ext-config-common02.properties".equals(args[0])
+ && "GLOBAL_GROUP".equals(args[1])) {
+ return "test-ext-config2=config2";
+ }
+
+ if ("common1.properties".equals(args[0])
+ && "DEFAULT_GROUP".equals(args[1])) {
+ return "test-common1=common1\ntest-common2=common1";
+ }
+
+ if ("common2.properties".equals(args[0])
+ && "DEFAULT_GROUP".equals(args[1])) {
+ return "test-common2=common2";
+ }
+
+ return "";
+ }
+ });
+
+ }
+ catch (Exception ignore) {
+ ignore.printStackTrace();
+
+ }
+ }
+
+ @Autowired
+ private Environment environment;
+
+ @Autowired
+ private NacosPropertySourceLocator locator;
+
+ @Autowired
+ private NacosConfigProperties properties;
+
+ @Test
+ public void contextLoads() throws Exception {
+
+ assertNotNull("NacosPropertySourceLocator was not created", locator);
+ assertNotNull("NacosConfigProperties was not created", properties);
+
+ Assert.assertEquals(environment.getProperty("test-ext-config1"), "config1");
+ Assert.assertEquals(environment.getProperty("test-ext-config2"), "config2");
+ Assert.assertEquals(environment.getProperty("test-common1"), "common1");
+ Assert.assertEquals(environment.getProperty("test-common2"), "common2");
+
+ }
+
+ @Configuration
+ @EnableAutoConfiguration
+ @ImportAutoConfiguration({ NacosConfigEndpointAutoConfiguration.class,
+ NacosConfigAutoConfiguration.class, NacosConfigBootstrapConfiguration.class })
+ public static class TestConfig {
+ }
+}
diff --git a/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigurationTests.java b/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigurationTests.java
new file mode 100644
index 00000000..34f275c2
--- /dev/null
+++ b/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigurationTests.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2018 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.springframework.cloud.alibaba.nacos;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+import java.util.Map;
+
+import com.alibaba.nacos.client.config.NacosConfigService;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.api.support.MethodProxy;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.modules.junit4.PowerMockRunnerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator;
+import org.springframework.cloud.alibaba.nacos.endpoint.NacosConfigEndpoint;
+import org.springframework.cloud.alibaba.nacos.endpoint.NacosConfigEndpointAutoConfiguration;
+import org.springframework.cloud.alibaba.nacos.refresh.NacosRefreshHistory;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author xiaojing
+ */
+
+@RunWith(PowerMockRunner.class)
+@PowerMockIgnore("javax.management.*")
+@PowerMockRunnerDelegate(SpringRunner.class)
+@PrepareForTest({ NacosConfigService.class })
+@SpringBootTest(classes = NacosConfigurationTests.TestConfig.class, properties = {
+ "spring.application.name=myTestService1", "spring.profiles.active=dev,test",
+ "spring.cloud.nacos.config.server-addr=127.0.0.1:8848",
+ "spring.cloud.nacos.config.endpoint=test-endpoint",
+ "spring.cloud.nacos.config.namespace=test-namespace",
+ "spring.cloud.nacos.config.encode=utf-8",
+ "spring.cloud.nacos.config.timeout=1000",
+ "spring.cloud.nacos.config.group=test-group",
+ "spring.cloud.nacos.config.name=test-name",
+ "spring.cloud.nacos.config.cluster-name=test-cluster",
+ "spring.cloud.nacos.config.file-extension=properties",
+ "spring.cloud.nacos.config.contextPath=test-contextpath",
+
+ "spring.cloud.nacos.config.ext-config[0].data-id=ext-config-common01.properties",
+
+ "spring.cloud.nacos.config.ext-config[1].data-id=ext-config-common02.properties",
+ "spring.cloud.nacos.config.ext-config[1].group=GLOBAL_GROUP",
+
+ "spring.cloud.nacos.config.shared-dataids=common1.properties,common2.properties",
+
+ "spring.cloud.nacos.config.accessKey=test-accessKey",
+ "spring.cloud.nacos.config.secretKey=test-secretKey" }, webEnvironment = NONE)
+public class NacosConfigurationTests {
+
+ static {
+
+ try {
+ // when(any(ConfigService.class).getConfig(eq("test-name.properties"),
+ // eq("test-group"), any())).thenReturn("user.name=hello");
+
+ Method method = PowerMockito.method(NacosConfigService.class, "getConfig",
+ String.class, String.class, long.class);
+ MethodProxy.proxy(method, new InvocationHandler() {
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable {
+
+ if ("test-name.properties".equals(args[0])
+ && "test-group".equals(args[1])) {
+ return "user.name=hello\nuser.age=12";
+ }
+
+ if ("test-name-dev.properties".equals(args[0])
+ && "test-group".equals(args[1])) {
+ return "user.name=dev";
+ }
+
+ if ("ext-config-common01.properties".equals(args[0])
+ && "DEFAULT_GROUP".equals(args[1])) {
+ return "test-ext-config1=config1\ntest-ext-config2=config1";
+ }
+ if ("ext-config-common02.properties".equals(args[0])
+ && "GLOBAL_GROUP".equals(args[1])) {
+ return "test-ext-config2=config2";
+ }
+
+ if ("common1.properties".equals(args[0])
+ && "DEFAULT_GROUP".equals(args[1])) {
+ return "test-common1=common1\ntest-common2=common1";
+ }
+
+ if ("common2.properties".equals(args[0])
+ && "DEFAULT_GROUP".equals(args[1])) {
+ return "test-common2=common2";
+ }
+
+ return "";
+ }
+ });
+
+ }
+ catch (Exception ignore) {
+ ignore.printStackTrace();
+
+ }
+ }
+
+ @Autowired
+ private Environment environment;
+
+ @Autowired
+ private NacosPropertySourceLocator locator;
+
+ @Autowired
+ private NacosConfigProperties properties;
+
+ @Autowired
+ private NacosRefreshHistory refreshHistory;
+
+ @Test
+ public void contextLoads() throws Exception {
+
+ assertNotNull("NacosPropertySourceLocator was not created", locator);
+ assertNotNull("NacosConfigProperties was not created", properties);
+
+ checkoutNacosConfigServerAddr();
+ checkoutNacosConfigEndpoint();
+ checkoutNacosConfigNamespace();
+ checkoutNacosConfigClusterName();
+ checkoutNacosConfigAccessKey();
+ checkoutNacosConfigSecrectKey();
+ checkoutNacosConfigName();
+ checkoutNacosConfigGroup();
+ checkoutNacosConfigContextPath();
+ checkoutNacosConfigFileExtension();
+ checkoutNacosConfigTimeout();
+ checkoutNacosConfigEncode();
+ checkoutNacosConfigProfiles();
+
+ checkoutEndpoint();
+ checkoutDataLoad();
+
+ }
+
+ private void checkoutNacosConfigServerAddr() {
+ assertEquals("NacosConfigProperties server address is wrong", "127.0.0.1:8848",
+ properties.getServerAddr());
+
+ }
+
+ private void checkoutNacosConfigEndpoint() {
+ assertEquals("NacosConfigProperties endpoint is wrong", "test-endpoint",
+ properties.getEndpoint());
+
+ }
+
+ private void checkoutNacosConfigNamespace() {
+ assertEquals("NacosConfigProperties namespace is wrong", "test-namespace",
+ properties.getNamespace());
+
+ }
+
+ private void checkoutNacosConfigClusterName() {
+ assertEquals("NacosConfigProperties' cluster is wrong", "test-cluster",
+ properties.getClusterName());
+ }
+
+ private void checkoutNacosConfigAccessKey() {
+ assertEquals("NacosConfigProperties' is access key is wrong", "test-accessKey",
+ properties.getAccessKey());
+ }
+
+ private void checkoutNacosConfigSecrectKey() {
+ assertEquals("NacosConfigProperties' is secret key is wrong", "test-secretKey",
+ properties.getSecretKey());
+ }
+
+ private void checkoutNacosConfigContextPath() {
+ assertEquals("NacosConfigProperties' context path is wrong", "test-contextpath",
+ properties.getContextPath());
+ }
+
+ private void checkoutNacosConfigName() {
+ assertEquals("NacosConfigProperties' name is wrong", "test-name",
+ properties.getName());
+ }
+
+ private void checkoutNacosConfigGroup() {
+ assertEquals("NacosConfigProperties' group is wrong", "test-group",
+ properties.getGroup());
+ }
+
+ private void checkoutNacosConfigFileExtension() {
+ assertEquals("NacosConfigProperties' file extension is wrong", "properties",
+ properties.getFileExtension());
+ }
+
+ private void checkoutNacosConfigTimeout() {
+ assertEquals("NacosConfigProperties' timeout is wrong", 1000,
+ properties.getTimeout());
+ }
+
+ private void checkoutNacosConfigEncode() {
+ assertEquals("NacosConfigProperties' encode is wrong", "utf-8",
+ properties.getEncode());
+ }
+
+ private void checkoutDataLoad() {
+
+ Assert.assertEquals(environment.getProperty("user.name"), "dev");
+ Assert.assertEquals(environment.getProperty("user.age"), "12");
+ }
+
+ private void checkoutNacosConfigProfiles() {
+ assertEquals("NacosConfigProperties' profiles is wrong",
+ new String[] { "dev", "test" }, properties.getActiveProfiles());
+ }
+
+ private void checkoutEndpoint() throws Exception {
+ NacosConfigEndpoint nacosConfigEndpoint = new NacosConfigEndpoint(properties,
+ refreshHistory);
+ Map map = nacosConfigEndpoint.invoke();
+ assertEquals(map.get("NacosConfigProperties"), properties);
+ assertEquals(map.get("RefreshHistory"), refreshHistory.getRecords());
+ }
+
+ @Configuration
+ @EnableAutoConfiguration
+ @ImportAutoConfiguration({ NacosConfigEndpointAutoConfiguration.class,
+ NacosConfigAutoConfiguration.class, NacosConfigBootstrapConfiguration.class })
+ public static class TestConfig {
+ }
+}
diff --git a/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosFileExtensionTest.java b/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosFileExtensionTest.java
new file mode 100644
index 00000000..979cac3f
--- /dev/null
+++ b/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/NacosFileExtensionTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2019 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.springframework.cloud.alibaba.nacos;
+
+import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+import com.alibaba.nacos.client.config.NacosConfigService;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.api.support.MethodProxy;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.modules.junit4.PowerMockRunnerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.alibaba.nacos.endpoint.NacosConfigEndpointAutoConfiguration;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author xiaojing
+ */
+
+@RunWith(PowerMockRunner.class)
+@PowerMockIgnore("javax.management.*")
+@PowerMockRunnerDelegate(SpringRunner.class)
+@PrepareForTest({ NacosConfigService.class })
+@SpringBootTest(classes = NacosFileExtensionTest.TestConfig.class, properties = {
+ "spring.application.name=test-name",
+ "spring.cloud.nacos.config.server-addr=127.0.0.1:8848",
+ "spring.cloud.nacos.config.file-extension=yaml" }, webEnvironment = NONE)
+public class NacosFileExtensionTest {
+
+ static {
+
+ try {
+ Method method = PowerMockito.method(NacosConfigService.class, "getConfig",
+ String.class, String.class, long.class);
+ MethodProxy.proxy(method, new InvocationHandler() {
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable {
+ if ("test-name.yaml".equals(args[0])
+ && "DEFAULT_GROUP".equals(args[1])) {
+ return "user:\n name: hello\n age: 12";
+ }
+ return "";
+ }
+ });
+
+ }
+ catch (Exception ignore) {
+ ignore.printStackTrace();
+
+ }
+ }
+
+ @Autowired
+ private Environment environment;
+
+ @Test
+ public void contextLoads() throws Exception {
+
+ Assert.assertEquals(environment.getProperty("user.name"), "hello");
+ Assert.assertEquals(environment.getProperty("user.age"), "12");
+ }
+
+ @Configuration
+ @EnableAutoConfiguration
+ @ImportAutoConfiguration({ NacosConfigEndpointAutoConfiguration.class,
+ NacosConfigAutoConfiguration.class, NacosConfigBootstrapConfiguration.class })
+ public static class TestConfig {
+ }
+}
diff --git a/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosConfigEndpointTests.java b/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosConfigEndpointTests.java
new file mode 100644
index 00000000..ef823960
--- /dev/null
+++ b/spring-cloud-alibaba-nacos-config/src/test/java/org/springframework/cloud/alibaba/nacos/endpoint/NacosConfigEndpointTests.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2018 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.springframework.cloud.alibaba.nacos.endpoint;
+
+import static org.junit.Assert.assertEquals;
+import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.nacos.client.config.NacosConfigService;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.api.support.MethodProxy;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.modules.junit4.PowerMockRunnerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.actuate.health.Health.Builder;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.alibaba.nacos.NacosConfigAutoConfiguration;
+import org.springframework.cloud.alibaba.nacos.NacosConfigBootstrapConfiguration;
+import org.springframework.cloud.alibaba.nacos.NacosConfigProperties;
+import org.springframework.cloud.alibaba.nacos.refresh.NacosRefreshHistory;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author xiaojing
+ */
+
+@RunWith(PowerMockRunner.class)
+@PowerMockIgnore("javax.management.*")
+@PowerMockRunnerDelegate(SpringRunner.class)
+@PrepareForTest({ NacosConfigService.class })
+@SpringBootTest(classes = NacosConfigEndpointTests.TestConfig.class, properties = {
+ "spring.application.name=test-name",
+ "spring.cloud.nacos.config.server-addr=127.0.0.1:8848",
+ "spring.cloud.nacos.config.file-extension=properties" }, webEnvironment = NONE)
+public class NacosConfigEndpointTests {
+
+ static {
+
+ try {
+
+ Method method = PowerMockito.method(NacosConfigService.class, "getConfig",
+ String.class, String.class, long.class);
+ MethodProxy.proxy(method, new InvocationHandler() {
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable {
+
+ if ("test-name.properties".equals(args[0])
+ && "DEFAULT_GROUP".equals(args[1])) {
+ return "user.name=hello\nuser.age=12";
+ }
+ return "";
+ }
+ });
+
+ }
+ catch (Exception ignore) {
+ ignore.printStackTrace();
+
+ }
+ }
+
+ @Autowired
+ private NacosConfigProperties properties;
+
+ @Autowired
+ private NacosRefreshHistory refreshHistory;
+
+ @Test
+ public void contextLoads() throws Exception {
+
+ checkoutEndpoint();
+ checkoutAcmHealthIndicator();
+
+ }
+
+ private void checkoutAcmHealthIndicator() {
+ try {
+ Builder builder = new Builder();
+
+ NacosConfigHealthIndicator healthIndicator = new NacosConfigHealthIndicator(
+ properties, properties.configServiceInstance());
+ healthIndicator.doHealthCheck(builder);
+
+ Builder builder1 = new Builder();
+ List dataIds = new ArrayList<>();
+ dataIds.add("test-name.properties");
+ builder1.up().withDetail("dataIds", dataIds);
+
+ Assert.assertTrue(builder.build().equals(builder1.build()));
+
+ }
+ catch (Exception ignoreE) {
+
+ }
+
+ }
+
+ private void checkoutEndpoint() throws Exception {
+ NacosConfigEndpoint endpoint = new NacosConfigEndpoint(properties,
+ refreshHistory);
+ Map map = endpoint.invoke();
+ assertEquals(map.get("NacosConfigProperties"), properties);
+ assertEquals(map.get("RefreshHistory"), refreshHistory.getRecords());
+ }
+
+ @Configuration
+ @EnableAutoConfiguration
+ @ImportAutoConfiguration({ NacosConfigEndpointAutoConfiguration.class,
+ NacosConfigAutoConfiguration.class, NacosConfigBootstrapConfiguration.class })
+ public static class TestConfig {
+ }
+}