1 /***************************************************************************
2  * SPDX-FileCopyrightText: 2021 S. MANKOWSKI stephane@mankowski.fr
3  * SPDX-FileCopyrightText: 2021 G. DE BURE support@mankowski.fr
4  * SPDX-License-Identifier: GPL-3.0-or-later
5  ***************************************************************************/
6 /** @file
7  * This file is a test script.
8  *
9  * @author Stephane MANKOWSKI / Guillaume DE BURE
10  */
11 #include <qfile.h>
12 #include <qsqldatabase.h>
13 
14 #include "skgtestmacro.h"
15 
16 /**
17  * The main function of the unit test
18  * @param argc the number of arguments
19  * @param argv the list of arguments
20  */
main(int argc,char ** argv)21 int main(int argc, char** argv)
22 {
23     Q_UNUSED(argc)
24     Q_UNUSED(argv)
25 
26     // Init test
27     SKGINITTEST(true) {
28         SKGTESTBOOL("QSQLITE:isDriverAvailable", QSqlDatabase::isDriverAvailable(QStringLiteral("QSQLITE")), true)
29         SKGTESTBOOL("SKGSQLCIPHER:isDriverAvailable", QSqlDatabase::isDriverAvailable(QStringLiteral("SKGSQLCIPHER")), true)
30     }
31     {
32         // test class SKGDocument / LOAD / SAVE
33         QString filename1 = SKGTest::getTestPath(QStringLiteral("IN")) % QStringLiteral("/filename1_e.skg");
34         qDebug("filename1=%s", filename1.toUtf8().constData());
35         {
36             SKGDocument document1;
37             QFile(filename1).remove();
38             SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
39             SKGTESTERROR(QStringLiteral("DOC:setLanguage"), document1.setLanguage(QStringLiteral("en")), true)
40             SKGTESTERROR(QStringLiteral("DOC:setLanguage"), document1.setLanguage(QStringLiteral("fr")), true)
41             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
42 
43             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
44             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT3"), QStringLiteral("VAL3")), true)
45             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
46             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(false), true)
47             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
48 
49             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
50             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT3"), QStringLiteral("VAL3")), true)
51             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
52             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
53             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
54 
55             document1.setFileNotModified();
56             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
57 
58             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("t_name")), QStringLiteral("Name"))
59             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("node.t_name")), QStringLiteral("Name"))
60             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("v_node.t_name")), QStringLiteral("Name"))
61             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("v_node.unknown")), QStringLiteral("v_node.unknown"))
62 
63             QString oResult;
64             SKGTESTERROR(QStringLiteral("DOC:isFileModified"), document1.dumpSelectSqliteOrder(QStringLiteral("select * from parameters"), oResult), true)
65         }
66         {
67             SKGDocument document1;
68             QFile(filename1).remove();
69             SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
70             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
71 
72             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
73             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
74             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)  // because the transaction is empty
75         }
76         {
77             SKGDocument document1;
78             QFile(filename1).remove();
79             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), false)
80             SKGTESTERROR(QStringLiteral("DOC:saveAs+invalid path"), document1.saveAs(QStringLiteral("/notfound/file.skg"), true), false)
81             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), QLatin1String(""))
82             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
83             SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
84             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
85             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("t1")), true)
86             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), QLatin1String(""))
87             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), false)
88             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), QLatin1String(""))
89             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)  // due to the beginTransaction
90             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QLatin1String(""))
91             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1")), true)
92             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
93             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1"))
94             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
95             SKGTESTERROR(QStringLiteral("DOC:saveAs+overwrite=false"), document1.saveAs(filename1, false), true)
96             SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
97             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), filename1)
98             SKGTESTERROR(QStringLiteral("DOC:saveAs+overwrite=false"), document1.saveAs(filename1, false), false)
99             SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
100             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), filename1)
101             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
102             SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
103             SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), filename1)
104 
105             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("t1")), true)
106             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)  // due to the beginTransaction
107             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1"))
108             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL2")), true)
109             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL2"))
110             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
111             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
112 
113             SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
114             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
115             SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
116             SKGTESTBOOL("DOC:getCurrentFileName", (!document1.getCurrentFileName().isEmpty()), true)
117             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1"))
118         }
119 
120         {
121             SKGDocument document1;
122             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
123             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("t3")), true)
124             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT3"), QStringLiteral("VAL3")), true)
125             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
126             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
127 
128             SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QStringLiteral("pwd1")), true)
129             SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QStringLiteral("pwd")), true)
130             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
131             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("SAVE"), QStringLiteral("1")), true)
132             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
133 
134             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("SAVE")), QStringLiteral("1"))
135             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
136         }
137         {
138             SKGDocument document1;
139             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), false)
140             SKGTEST(QStringLiteral("DOC:load"), document1.load(filename1, QStringLiteral("wrong pwd")).getReturnCode(), ERR_ENCRYPTION)
141         }
142         {
143             SKGDocument document1;
144             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QStringLiteral("pwd")), true)
145             SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QStringLiteral("pwd1")), true)
146             SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QLatin1String("")), true)
147             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
148             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
149         }
150 
151         {
152             SKGDocument document1;
153             QFile(filename1).remove();
154             SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
155             document1.setBackupParameters(QLatin1String(""), QStringLiteral("/invalid suffix"));
156             SKGTESTERROR(QStringLiteral("DOC:saveAs"), document1.saveAs(filename1, true), true)
157             SKGTESTERROR(QStringLiteral("DOC:saveAs"), document1.saveAs(filename1, true), true)
158 
159             document1.setBackupParameters(QStringLiteral("."), QStringLiteral(".old"));
160             SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/.file.skg.old"))
161 
162             document1.setBackupParameters(QLatin1String(""), QStringLiteral("_<DATE>.backup"));
163             SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/file.skg_") % SKGServices::dateToSqlString(QDateTime::currentDateTime().date()) % ".backup")
164 
165             document1.setBackupParameters(QLatin1String(""), QStringLiteral("_<DATE>.skg"));
166             SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/file_") % SKGServices::dateToSqlString(QDateTime::currentDateTime().date()) % ".skg")
167 
168             document1.setBackupParameters(QLatin1String(""), QStringLiteral("_<TIME>.backup"));
169             SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/file.skg_") % SKGServices::timeToString(QDateTime::currentDateTime()) % ".backup")
170 
171             document1.setBackupParameters(QStringLiteral("/tmp/"), QStringLiteral(".old"));
172             SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/home/user1/file.skg")), QStringLiteral("/tmp/file.skg.old"))
173         }
174 
175         {
176             SKGDocument document1;
177             SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
178             SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
179             SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("SAVE"), QStringLiteral("1")), true)
180             SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("SAVE")), QStringLiteral("1"))
181             SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
182             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
183 
184             // Check save when file system is full
185             qputenv("SKGFILESYSTEMFULL", "Y");
186             SKGTEST(QStringLiteral("DOC:getParameter"), static_cast<unsigned int>(QFile(filename1).exists()), static_cast<unsigned int>(true))
187             SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), false)
188             SKGTEST(QStringLiteral("DOC:getParameter"), static_cast<unsigned int>(QFile(filename1).exists()), static_cast<unsigned int>(true))
189         }
190 
191         QFile(filename1).remove();
192         QFile(filename1 % ".old").remove();
193     }
194     // End test
195     SKGENDTEST()
196 }
197