34 lines
1.8 KiB
C++
34 lines
1.8 KiB
C++
#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"
|