From b9edba7f696b2175cc74f111891d9051ce5e9c31 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 28 九月 2026 15:21:21 +0800
Subject: [PATCH] 拒绝把全权限账号写进厂商数据源配置

---
 battery-device-neware/src/test/java/com/battery/device/neware/NewareMysqlAdapterContractTest.java |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/battery-device-neware/src/test/java/com/battery/device/neware/NewareMysqlAdapterContractTest.java b/battery-device-neware/src/test/java/com/battery/device/neware/NewareMysqlAdapterContractTest.java
index d89ff23..d3be22c 100644
--- a/battery-device-neware/src/test/java/com/battery/device/neware/NewareMysqlAdapterContractTest.java
+++ b/battery-device-neware/src/test/java/com/battery/device/neware/NewareMysqlAdapterContractTest.java
@@ -204,4 +204,20 @@
         assertTrue(adapter.discoverChannels().stream()
                 .allMatch(item -> ADAPTER_CODE.equals(item.identity().adapterCode())));
     }
+
+    /** 凭据只用现场取得的服务端只读账号;已知的全权限账号不进入配置。 */
+    @Test
+    void credentialsFallBackToTheReadOnlyAccountAndRefuseFullPrivilegeAccounts()
+    {
+        assertEquals("visitor", NewareMysqlAdapterFactory.readOnlyUser(Map.of()));
+        assertEquals("visitor", NewareMysqlAdapterFactory.readOnlyUser(Map.of("user", " ")));
+        assertEquals("another_ro", NewareMysqlAdapterFactory.readOnlyUser(Map.of("user", "another_ro")));
+        for (String account : List.of("BtsServer", "btsserver", "root", "ROOT"))
+        {
+            var failure = org.junit.jupiter.api.Assertions.assertThrows(
+                    com.battery.device.api.DeviceAdapterException.class,
+                    () -> NewareMysqlAdapterFactory.readOnlyUser(Map.of("user", account)));
+            assertTrue(failure.getMessage().contains(account));
+        }
+    }
 }

--
Gitblit v1.7.1