diff --git a/pom.xml b/pom.xml index 530e121686..764f5127f8 100644 --- a/pom.xml +++ b/pom.xml @@ -30,9 +30,9 @@ 3.12.13 - org.ini4j - ini4j - 0.5.4 + org.apache.commons + commons-configuration2 + 2.12.0 junit diff --git a/src/main/java/com/tencentcloudapi/common/provider/ProfileCredentialsProvider.java b/src/main/java/com/tencentcloudapi/common/provider/ProfileCredentialsProvider.java index a54c0cdeae..c3dcc30795 100644 --- a/src/main/java/com/tencentcloudapi/common/provider/ProfileCredentialsProvider.java +++ b/src/main/java/com/tencentcloudapi/common/provider/ProfileCredentialsProvider.java @@ -2,17 +2,18 @@ import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.exception.TencentCloudSDKException; -import org.ini4j.Wini; +import org.apache.commons.configuration2.INIConfiguration; +import org.apache.commons.configuration2.ex.ConfigurationException; -import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; public class ProfileCredentialsProvider implements CredentialsProvider { - private static Wini ini; + private static INIConfiguration ini; - private static Wini getIni() throws TencentCloudSDKException { + private static INIConfiguration getIni() throws TencentCloudSDKException { String fileName; if (Files.exists(Paths.get(System.getProperty("user.home") + "\\.tencentcloud\\credentials"))) { fileName = System.getProperty("user.home") + "\\.tencentcloud\\credentials"; @@ -24,18 +25,19 @@ private static Wini getIni() throws TencentCloudSDKException { throw new TencentCloudSDKException("Not found file"); } try { - ini = new Wini(new File(fileName)); - } catch (IOException e) { - throw new TencentCloudSDKException("IOException"); + ini = new INIConfiguration(); + ini.read(new FileReader(fileName)); + } catch (IOException | ConfigurationException e) { + throw new TencentCloudSDKException("IOException or ConfigurationException"); } return ini; } @Override public Credential getCredentials() throws TencentCloudSDKException { - Wini ini = getIni(); - String secretId = ini.get("default", "secret_id"); - String secretKey = ini.get("default", "secret_key"); + INIConfiguration ini = getIni(); + String secretId = ini.getString("default.secret_id"); + String secretKey = ini.getString("default.secret_key"); if (secretId == null || secretKey == null) { throw new TencentCloudSDKException("Not found secretId or secretKey"); } diff --git a/src/test/java/com/tencentcloudapi/integration/common/provider/ProfileCredentialsProviderTest.java b/src/test/java/com/tencentcloudapi/integration/common/provider/ProfileCredentialsProviderTest.java new file mode 100644 index 0000000000..0bb227fd08 --- /dev/null +++ b/src/test/java/com/tencentcloudapi/integration/common/provider/ProfileCredentialsProviderTest.java @@ -0,0 +1,54 @@ +package com.tencentcloudapi.integration.common.provider; + +import com.tencentcloudapi.common.Credential; +import com.tencentcloudapi.common.provider.ProfileCredentialsProvider; +import org.junit.Test; +import java.nio.file.Path; +import java.nio.file.Files; + +import static org.junit.Assert.*; + +public class ProfileCredentialsProviderTest { + + @Test + public void testGetCredentials() throws Exception { + // 创建临时目录模拟用户主目录 + Path tempHomeDir = Files.createTempDirectory("tencentcloud-test-home"); + Path credentialsDir = tempHomeDir.resolve(".tencentcloud"); + Files.createDirectories(credentialsDir); + Path credentialsFile = credentialsDir.resolve("credentials"); + + // 保存原始user.home属性 + String originalUserHome = System.getProperty("user.home"); + + try { + // 设置临时目录为用户主目录 + System.setProperty("user.home", tempHomeDir.toString()); + + // 写入配置文件内容 + String configContent = "[default]\n" + + "secret_id = secret_id_test\n" + + "secret_key = secret_key_test"; + Files.write(credentialsFile, configContent.getBytes()); + + // 测试ProfileCredentialsProvider是否能正确读取 + ProfileCredentialsProvider provider = new ProfileCredentialsProvider(); + Credential cred = provider.getCredentials(); + + // 验证读取的凭据是否正确 + assertEquals("secret_id_test", cred.getSecretId()); + assertEquals("secret_key_test", cred.getSecretKey()); + + } finally { + // 恢复原始user.home属性 + if (originalUserHome != null) { + System.setProperty("user.home", originalUserHome); + } + + // 清理临时文件 + Files.deleteIfExists(credentialsFile); + Files.deleteIfExists(credentialsDir); + Files.deleteIfExists(tempHomeDir); + } + } +}