File indexing completed on 2024-05-12 16:45:28

0001 /***************************************************************************
0002  * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane@mankowski.fr
0003  * SPDX-FileCopyrightText: 2022 G. DE BURE support@mankowski.fr
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  ***************************************************************************/
0006 /** @file
0007  * This file is a test script.
0008  *
0009  * @author Stephane MANKOWSKI / Guillaume DE BURE
0010  */
0011 #include <qfile.h>
0012 #include <qsqldatabase.h>
0013 
0014 #include "skgtestmacro.h"
0015 
0016 /**
0017  * The main function of the unit test
0018  * @param argc the number of arguments
0019  * @param argv the list of arguments
0020  */
0021 int main(int argc, char** argv)
0022 {
0023     Q_UNUSED(argc)
0024     Q_UNUSED(argv)
0025 
0026     // Init test
0027     SKGINITTEST(true) {
0028         SKGTESTBOOL("QSQLITE:isDriverAvailable", QSqlDatabase::isDriverAvailable(QStringLiteral("QSQLITE")), true)
0029         SKGTESTBOOL("SKGSQLCIPHER:isDriverAvailable", QSqlDatabase::isDriverAvailable(QStringLiteral("SKGSQLCIPHER")), true)
0030     }
0031     {
0032         // test class SKGDocument / LOAD / SAVE
0033         QString filename1 = SKGTest::getTestPath(QStringLiteral("IN")) % QStringLiteral("/filename1_e.skg");
0034         qDebug("filename1=%s", filename1.toUtf8().constData());
0035         {
0036             SKGDocument document1;
0037             QFile(filename1).remove();
0038             SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
0039             SKGTESTERROR(QStringLiteral("DOC:setLanguage"), document1.setLanguage(QStringLiteral("en")), true)
0040             SKGTESTERROR(QStringLiteral("DOC:setLanguage"), document1.setLanguage(QStringLiteral("fr")), true)
0041             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
0042 
0043             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
0044             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT3"), QStringLiteral("VAL3")), true)
0045             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
0046             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(false), true)
0047             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
0048 
0049             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
0050             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT3"), QStringLiteral("VAL3")), true)
0051             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
0052             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
0053             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
0054 
0055             document1.setFileNotModified();
0056             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
0057 
0058             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("t_name")), QStringLiteral("Name"))
0059             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("node.t_name")), QStringLiteral("Name"))
0060             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("v_node.t_name")), QStringLiteral("Name"))
0061             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("v_node.unknown")), QStringLiteral("v_node.unknown"))
0062 
0063             QString oResult;
0064             SKGTESTERROR(QStringLiteral("DOC:isFileModified"), document1.dumpSelectSqliteOrder(QStringLiteral("select * from parameters"), oResult), true)
0065         }
0066         {
0067             SKGDocument document1;
0068             QFile(filename1).remove();
0069             SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
0070             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
0071 
0072             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
0073             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
0074             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)  // because the transaction is empty
0075         }
0076         {
0077             SKGDocument document1;
0078             QFile(filename1).remove();
0079             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), false)
0080             SKGTESTERROR(QStringLiteral("DOC:saveAs+invalid path"), document1.saveAs(QStringLiteral("/notfound/file.skg"), true), false)
0081             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), QLatin1String(""))
0082             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
0083             SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
0084             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
0085             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("t1")), true)
0086             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), QLatin1String(""))
0087             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), false)
0088             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), QLatin1String(""))
0089             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)  // due to the beginTransaction
0090             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QLatin1String(""))
0091             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1")), true)
0092             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
0093             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1"))
0094             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
0095             SKGTESTERROR(QStringLiteral("DOC:saveAs+overwrite=false"), document1.saveAs(filename1, false), true)
0096             SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
0097             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), filename1)
0098             SKGTESTERROR(QStringLiteral("DOC:saveAs+overwrite=false"), document1.saveAs(filename1, false), false)
0099             SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
0100             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), filename1)
0101             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
0102             SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
0103             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), filename1)
0104 
0105             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("t1")), true)
0106             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)  // due to the beginTransaction
0107             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1"))
0108             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL2")), true)
0109             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL2"))
0110             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
0111             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
0112 
0113             SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
0114             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
0115             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
0116             SKGTESTBOOL("DOC:getCurrentFileName", (!document1.getCurrentFileName().isEmpty()), true)
0117             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1"))
0118         }
0119 
0120         {
0121             SKGDocument document1;
0122             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
0123             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("t3")), true)
0124             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT3"), QStringLiteral("VAL3")), true)
0125             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
0126             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
0127 
0128             SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QStringLiteral("pwd1")), true)
0129             SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QStringLiteral("pwd")), true)
0130             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
0131             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("SAVE"), QStringLiteral("1")), true)
0132             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
0133 
0134             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("SAVE")), QStringLiteral("1"))
0135             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
0136         }
0137         {
0138             SKGDocument document1;
0139             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), false)
0140             SKGTEST(QStringLiteral("DOC:load"), document1.load(filename1, QStringLiteral("wrong pwd")).getReturnCode(), ERR_ENCRYPTION)
0141         }
0142         {
0143             SKGDocument document1;
0144             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QStringLiteral("pwd")), true)
0145             SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QStringLiteral("pwd1")), true)
0146             SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QLatin1String("")), true)
0147             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
0148             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
0149         }
0150 
0151         {
0152             SKGDocument document1;
0153             QFile(filename1).remove();
0154             SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
0155             document1.setBackupParameters(QLatin1String(""), QStringLiteral("/invalid suffix"));
0156             SKGTESTERROR(QStringLiteral("DOC:saveAs"), document1.saveAs(filename1, true), true)
0157             SKGTESTERROR(QStringLiteral("DOC:saveAs"), document1.saveAs(filename1, true), true)
0158 
0159             document1.setBackupParameters(QStringLiteral("."), QStringLiteral(".old"));
0160             SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/.file.skg.old"))
0161 
0162             document1.setBackupParameters(QLatin1String(""), QStringLiteral("_<DATE>.backup"));
0163             SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/file.skg_") % SKGServices::dateToSqlString(QDateTime::currentDateTime().date()) % ".backup")
0164 
0165             document1.setBackupParameters(QLatin1String(""), QStringLiteral("_<DATE>.skg"));
0166             SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/file_") % SKGServices::dateToSqlString(QDateTime::currentDateTime().date()) % ".skg")
0167 
0168             document1.setBackupParameters(QLatin1String(""), QStringLiteral("_<TIME>.backup"));
0169             SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/file.skg_") % SKGServices::timeToString(QDateTime::currentDateTime()) % ".backup")
0170 
0171             document1.setBackupParameters(QStringLiteral("/tmp/"), QStringLiteral(".old"));
0172             SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/home/user1/file.skg")), QStringLiteral("/tmp/file.skg.old"))
0173         }
0174 
0175         {
0176             SKGDocument document1;
0177             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
0178             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
0179             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("SAVE"), QStringLiteral("1")), true)
0180             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("SAVE")), QStringLiteral("1"))
0181             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
0182             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
0183 
0184             // Check save when file system is full
0185             qputenv("SKGFILESYSTEMFULL", "Y");
0186             SKGTEST(QStringLiteral("DOC:getParameter"), static_cast<unsigned int>(QFile(filename1).exists()), static_cast<unsigned int>(true))
0187             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), false)
0188             SKGTEST(QStringLiteral("DOC:getParameter"), static_cast<unsigned int>(QFile(filename1).exists()), static_cast<unsigned int>(true))
0189         }
0190 
0191         QFile(filename1).remove();
0192         QFile(filename1 % ".old").remove();
0193     }
0194     // End test
0195     SKGENDTEST()
0196 }