功能:完善终端认证恢复、选择页及策略和指标采集

This commit is contained in:
songyiming committed 2026-11-10 17:51:39 +08:00
1 parent d87fa47e24
commit eef485306f
22 files changed
+904 -151

No files matched your search

@@ -0,0 +1,33 @@
#include <QtTest>
#include <QTemporaryDir>
#include <QFile>
#include <QJsonDocument>
#include "terminal_policy.h"
class TerminalPolicyTest : public QObject {
Q_OBJECT
private slots:
void durableBeforeRuntime() {
QTemporaryDir dir; const QString path=dir.path()+"/policy.json";int calls=0;
QJsonObject p{{"policyProtocol",1},{"configVersion",2},{"deploymentId","dispatch_1"},
{"heartbeatInterval",30},{"commandPollInterval",5},{"desktopRefreshInterval",20},{"deviceToken","must-not-persist"}};
auto apply=[&](int h,int c,int r){
QFile file(path); QVERIFY(file.open(QIODevice::ReadOnly));
const auto disk=QJsonDocument::fromJson(file.readAll()).object();
QCOMPARE(disk.value("configVersion").toInt(),2);QVERIFY(!disk.contains("deviceToken"));
QCOMPARE(h,30);QCOMPARE(c,5);QCOMPARE(r,20);++calls;
};
QCOMPARE(vdi::applyTerminalPolicy(p,path,apply),QString());QCOMPARE(calls,1);
const auto original=QFileInfo(path).size();
for (const auto key:{"heartbeatInterval","commandPollInterval","desktopRefreshInterval","policyProtocol","configVersion"}) {
auto bad=p;bad[key]=1.5;
QCOMPARE(vdi::applyTerminalPolicy(bad,path,apply),QString("invalid_policy"));
}
auto bad=p;bad["heartbeatInterval"]=90;
QCOMPARE(vdi::applyTerminalPolicy(bad,path,apply),QString("invalid_policy"));
QCOMPARE(QFileInfo(path).size(),original);QCOMPARE(calls,1);
QCOMPARE(vdi::applyTerminalPolicy(p,dir.path()+"/missing/policy.json",apply),QString("persist_failed"));
QCOMPARE(vdi::applyTerminalPolicy(p,path,{}),QString("runtime_unavailable"));QCOMPARE(calls,1);
}
};
QTEST_GUILESS_MAIN(TerminalPolicyTest)
#include "test_terminal_policy.moc"