testcacic.cpp 10.8 KB
#include "testcacic.h"

QTEST_MAIN(CTestCacic)

CTestCacic::CTestCacic(QObject *parent) :
    QObject(parent)
{
}

void CTestCacic::initTestCase()
{
    this->OCacicComm = new CacicComm();
    OCacicComm->setUrlGerente("http://10.209.134.100/cacic/app_dev.php");
    OCacicComm->setUsuario("cacic");
    OCacicComm->setPassword("cacic123");
    this->testPath = QDir::currentPath() + "/teste";
    this->testIniPath = testPath + "/teste.ini";
    QVariantMap jsonMap;
    jsonMap["session"] = "lakdhfalkfhsaklfhasfhsl";
    this->session = QJsonObject::fromVariantMap(jsonMap);
}

void CTestCacic::testCreateFolder()
{
    QVERIFY(OCacic.createFolder(testPath));
}

void CTestCacic::testGetAndSetValueFromFile()
{
    OCacic.setValueToFile("Teste", "teste", "Valor de teste", testIniPath);
    QVERIFY( OCacic.getValueFromFile("Teste", "teste", testIniPath) == "Valor de teste");
}

void CTestCacic::testGetValueFromTags()
{
    QString value = "blablab[teste]Valor de teste[/teste]feihgj";
    QVERIFY(OCacic.getValueFromTags(value, "teste") == "Valor de teste");
}

void CTestCacic::testCommStatus()
{
    QVERIFY(OCacicComm->commStatus());
}

//void CTestCacic::testComm()
//{
//    bool ok;
//    if (OCacicComm->commStatus()){
//        QJsonObject jsonreply = OCacicComm->comm("/ws/neo", &ok);
//        //      qDebug() << jsonreply["codestatus"].toString();
//        QVERIFY(OCacic.getValueFromTags(jsonreply["reply"].toString(), "Comm_Status", "<>") == QString("OK"));
//    } else
//        QSKIP("Teste de comunicação negativo!");
//}

void CTestCacic::testDeleteFile()
{
    QDir file(testIniPath);
    OCacic.deleteFile(testIniPath);
    QVERIFY(!file.exists());
}

void CTestCacic::testDeleteFolder()
{
    QDir folder(testPath);
    OCacic.deleteFolder(testPath);
    QVERIFY(!folder.exists());
}

void CTestCacic::testInterfaceDeRede(){
    //    qDebug() << OCacicComp.getNetworkInterface().at(0)["nome"].toString();
    QVERIFY2(!OCacicComp.getNetworkInterface().empty(), "Nenhuma interface de rede encontrada.");
}

void CTestCacic::testcoletaIdOs(){
    // instancia um OperatingSystem que invoca coletaIdOs() no construtor
    OperatingSystem OS;

    //    QVERIFY(OS.getIdOs() == OperatingSystem::LINUX_ARCH);
    QVERIFY(OS.getIdOs() != -1);
}

void CTestCacic::testpegarOS(){
    //basta que seja um retorno válido, não precisa validar todos.
    QVERIFY(OCacicComp.getOs().getIdOs() != -1 );
}

void CTestCacic::testConsole()
{
#if defined(Q_OS_LINUX)
    ConsoleObject console;
    QVERIFY(console("echo teste").toStdString() == "teste\n");
#else
    QSKIP("Teste desnecessário nessa plataforma");
#endif
}

void CTestCacic::testPegarUsu(){
    QVERIFY(OCacicComp.getUser() != "");
}

void CTestCacic::testJsonValueFromJsonString()
{
    QVERIFY(OCacic.jsonValueFromJsonString("{\"nome\":\"teste\"}", "nome").toString() == "teste");
}

void CTestCacic::testLogin(){
    bool ok;
    QJsonObject jsonReply = OCacicComm->login(&ok);
    //  qDebug() << jsonReply;
    QJsonObject sessionvalue = jsonReply["reply"].toObject();
    OCacic.setChaveCrypt(sessionvalue["chavecrip"].toString());
    QVERIFY(ok);
}

void CTestCacic::testSslConnection()
{
    bool ok;
    QJsonObject json = OCacicComm->comm("", &ok, QJsonObject(), true);
    QJsonValue jsonvalue = (!json["codestatus"].isNull()) ?
                           json["codestatus"] :
                           QJsonValue::fromVariant("-1");
//    qDebug()<< jsonvalue.toDouble();
    QVERIFY(jsonvalue.toString() == "200" || jsonvalue.toString() == "302");
}

void CTestCacic::testEnCrypt(){
    std::string IV = "0123456789123456"; //iv nunca se repete para a mesma senha.
    std::string input = "aqui vai a url que sera encriptada";
    OCacic.setChaveCrypt("testecript123456");
    this->cripTeste = OCacic.enCrypt(input, IV);
    QVERIFY(!this->cripTeste.isEmpty() && !this->cripTeste.isNull());
}

void CTestCacic::testDeCrypt(){
    std::string IV = "0123456789123456asas"; //iv nunca se repete para a mesma senha.
    std::string input = this->cripTeste.toStdString();
    QVERIFY(OCacic.deCrypt(input, IV) == "aqui vai a url que sera encriptada");

}

void CTestCacic::testCacicCompToJsonObject()
{
    //    qDebug() << OCacicComp.toJsonObject();
    //    OCacic.setJsonToFile(OCacicComp.toJsonObject(), "jsoncomp.json");
    QVERIFY(!OCacicComp.toJsonObject().empty());
}

void CTestCacic::testOperatingSystemToJsonObject()
{
    QVERIFY(!OCacicComp.getOs().toJsonObject().empty());
}

void CTestCacic::testJsonToFile()
{
    QJsonObject json;
    json["teste"] = QJsonValue::fromVariant(QString("teste"));
    QVERIFY(OCacic.setJsonToFile(json, "teste.json"));
}

void CTestCacic::testJsonFromFile()
{
    QVERIFY(OCacic.getJsonFromFile("teste.json")["teste"].toString() == "teste");
}

void CTestCacic::testSetRegistry()
{
    QVariantMap valueMap;
    valueMap["teste1"] = QString("Teste 1");
    valueMap["teste2"] = QString("Teste2");
    OCacic.setValueToRegistry("Lightbase", "Teste", valueMap);
    QSettings confirmaTeste("Lightbase", "Teste");
    QVERIFY(confirmaTeste.value("teste1") == QVariant("Teste 1"));
}

void CTestCacic::testGetValueFromRegistry()
{
    QVERIFY(OCacic.getValueFromRegistry("Lightbase", "Teste", "teste1") == QVariant("Teste 1"));
}

void CTestCacic::testRemoveRegistry()
{
    OCacic.removeRegistry("Lightbase", "Teste");
    QSettings confirmaTeste("Lightbase", "Teste");
    QVERIFY(confirmaTeste.allKeys().isEmpty());
    confirmaTeste.clear();
    confirmaTeste.sync();
}

void CTestCacic::testConvertDouble()
{
    double number = 4.0905;

    QString converted = OCacic.convertDouble(number);

    QVERIFY(converted.toDouble() == number);
}

void CTestCacic::testGetTest()
{
    bool ok;
    QJsonObject envio;
    envio["computador"] = OCacicComp.toJsonObject();
//    qDebug() << envio;
//    OCacicComm->setUrlGerente("http://teste.cacic.cc");
    OCacicComm->comm("/ws/neo/getTest", &ok, envio, true);
    QVERIFY(ok);
}

void CTestCacic::testGetConfig()
{
    bool ok;
    QJsonObject configEnvio;
    configEnvio["computador"] = oColeta.getOComputer().toJsonObject();
    OCacic.setJsonToFile(OCacicComm->comm("/ws/neo/config", &ok, configEnvio)["reply"].toObject(), "getConfig.json");

    QVERIFY(ok);
}

void CTestCacic::testColetaSoftware()
{
    oColeta.configuraColetas();
    oColeta.run();
    oColeta.waitToCollect();
    QVERIFY(!oColeta.toJsonObject()["software"].toObject().isEmpty());
}

void CTestCacic::testColetaHardware()
{
    QVERIFY(!oColeta.toJsonObject()["hardware"].toObject().isEmpty());
}

void CTestCacic::testLogger()
{
    QLogger::QLoggerManager *logManager = QLogger::QLoggerManager::getInstance();
    logManager->addDestination("./log.txt","teste",QLogger::DebugLevel);
    logManager->addDestination("log01.txt","teste01",QLogger::DebugLevel);
    logManager->addDestination("./log02.txt","teste02",QLogger::DebugLevel);
    logManager->addDestination("../log03.txt","teste03",QLogger::DebugLevel);
    logManager->addDestination("logs/log04.txt","teste04",QLogger::DebugLevel);
    logManager->addDestination("./logs/log05.txt","teste05",QLogger::DebugLevel);
    logManager->addDestination("../logs/log06.txt","teste06",QLogger::DebugLevel);

    QLogger::QLog_Debug("teste01", "Teste do modulo logger.");
    QLogger::QLog_Debug("teste02", "Teste do modulo logger.");
    QLogger::QLog_Debug("teste03", "Teste do modulo logger.");
    QLogger::QLog_Debug("teste04", "Teste do modulo logger.");
    QLogger::QLog_Debug("teste05", "Teste do modulo logger.");
    QLogger::QLog_Debug("teste06", "Teste do modulo logger.");

    QFile logFile01("log01.txt");
    if(logFile01.exists()) logFile01.open(QIODevice::ReadOnly);
    QFile logFile02("./log02.txt");
    if(logFile02.exists()) logFile02.open(QIODevice::ReadOnly);
    QFile logFile03("../log03.txt");
    if(logFile03.exists()) logFile03.open(QIODevice::ReadOnly);
    QFile logFile04("logs/log04.txt");
    if(logFile04.exists()) logFile04.open(QIODevice::ReadOnly);
    QFile logFile05("./logs/log05.txt");
    if(logFile05.exists()) logFile05.open(QIODevice::ReadOnly);
    QFile logFile06("../logs/log06.txt");
    if(logFile06.exists()) logFile06.open(QIODevice::ReadOnly);

    QVERIFY(logManager &&
            logFile01.exists() &&
            logFile01.readLine().contains("Teste do modulo logger.") &&
            logFile02.exists() &&
            logFile02.readLine().contains("Teste do modulo logger.") &&
            logFile03.exists() &&
            logFile03.readLine().contains("Teste do modulo logger.") &&
            logFile04.exists() &&
            logFile04.readLine().contains("Teste do modulo logger.") &&
            logFile05.exists() &&
            logFile05.readLine().contains("Teste do modulo logger.") &&
            logFile06.exists() &&
            logFile06.readLine().contains("Teste do modulo logger.")
            );

    logManager->closeLogger();
    logFile01.close();
    logFile02.close();
    logFile03.close();
    logFile04.close();
    logFile05.close();
    logFile06.close();
}

void CTestCacic::testDownload()
{
    QJsonObject ftp;
    ftp = OCacic.getJsonFromFile("getConfig.json")["agentcomputer"].toObject()["metodoDownload"].toObject();
    OCacicComm->setFtpPass(ftp["senha"].toString());
    OCacicComm->setFtpUser(ftp["usuario"].toString());
    OCacicComm->fileDownload(ftp["tipo"].toString(),
                             ftp["url"].toString(),
                             "/" + ftp["path"].toString() + "install-cacic",
                             "");
    QFile downloaded("cacic-service");

    QVERIFY( downloaded.open(QIODevice::ReadOnly) );
    QVERIFY( downloaded.exists() );
    QVERIFY( downloaded.readAll() != "" );
}

void CTestCacic::testStartService()
{
    bool ok;
    QString exitStatus;
#ifdef Q_OS_WIN
    exitStatus = OCacic.startProcess("install-cacic.exe", true, &ok);
    qDebug() << exitStatus;
#else
    exitStatus = OCacic.startProcess("./install-cacic", false, &ok);
//    qDebug() << exitStatus;
#endif
    QVERIFY(ok);
}
void CTestCacic::testEnviaColeta()
{
    bool ok;
    QJsonObject coletaEnvio = oColeta.toJsonObject();
    OCacic.setJsonToFile(oColeta.toJsonObject(), "coleta.json");
//    qDebug() << coletaEnvio;
    OCacicComm->comm("/ws/neo/coleta", &ok, coletaEnvio, true);
    QVERIFY(ok);
}

void CTestCacic::testGetModulesValues()
{
    oCheckModules = new CheckModules(QDir::currentPath());
    oCheckModules->start();
    QVERIFY(false);
}

void CTestCacic::cleanupTestCase()
{
    OCacic.deleteFile("gpl-2.0.txt");
    OCacic.deleteFile("log01.txt");
    OCacic.deleteFile("./log02.txt");
    OCacic.deleteFile("../log03.txt");
    OCacic.deleteFile("logs/log04.txt");
    OCacic.deleteFile("./logs/log05.txt");
    OCacic.deleteFolder("./logs");
    OCacic.deleteFile("../logs/log06.txt");
    OCacic.deleteFolder("../logs");
    OCacic.deleteFile("configRequest.json");
    OCacic.deleteFile("teste.json");
//    OCacic.deleteFile("getConfig.json");
    OCacic.deleteFolder("./temp");
}