vdi-cloud/terminal/kiosk-shell/tests/test_terminal_policy.cpp

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"