File indexing completed on 2024-05-12 16:45:20
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 "skgtestmacro.h" 0012 #include "skgbankincludes.h" 0013 0014 /** 0015 * The main function of the unit test 0016 * @param argc the number of arguments 0017 * @param argv the list of arguments 0018 */ 0019 int main(int argc, char** argv) 0020 { 0021 Q_UNUSED(argc) 0022 Q_UNUSED(argv) 0023 0024 // Init test 0025 SKGINITTEST(true) 0026 0027 // test class SKGDocument / PARAMETERS 0028 { 0029 SKGDocument document1; 0030 SKGTESTERROR(QStringLiteral("PARAM:initialize"), document1.initialize(), true) 0031 SKGTESTERROR(QStringLiteral("PARAM:beginTransaction"), document1.beginTransaction(QStringLiteral("t1")), true) 0032 SKGTESTERROR(QStringLiteral("PARAM:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1")), true) 0033 SKGTEST(QStringLiteral("PARAM:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1")) 0034 SKGTESTERROR(QStringLiteral("PARAM:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1UPDATED")), true) 0035 SKGTEST(QStringLiteral("PARAM:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1UPDATED")) 0036 SKGTESTERROR(QStringLiteral("PARAM:setParameter"), document1.setParameter(QStringLiteral("ATT2"), QStringLiteral("VAL2")), true) 0037 SKGTEST(QStringLiteral("PARAM:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1UPDATED")) 0038 SKGTEST(QStringLiteral("PARAM:getParameter"), document1.getParameter(QStringLiteral("ATT2")), QStringLiteral("VAL2")) 0039 SKGTEST(QStringLiteral("PARAM:getParameter"), document1.getParameter(QStringLiteral("NOTFOUND")), QLatin1String("")) 0040 SKGTESTERROR(QStringLiteral("PARAM:setParameter+sql injection"), document1.setParameter(QStringLiteral("'"), QStringLiteral("VAL3")), true) 0041 SKGTEST(QStringLiteral("PARAM:getParameter+sql injection"), document1.getParameter(QStringLiteral("'")), QStringLiteral("VAL3")) 0042 SKGTESTERROR(QStringLiteral("PARAM:endTransaction"), document1.endTransaction(true), true) 0043 } 0044 0045 // Test parameters on object 0046 { 0047 SKGDocumentBank document1; 0048 SKGTESTERROR(QStringLiteral("PROP:initialize"), document1.initialize(), true) 0049 SKGTESTERROR(QStringLiteral("PROP:beginTransaction"), document1.beginTransaction(QStringLiteral("t1")), true) 0050 SKGTESTERROR(QStringLiteral("PROP:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1")), true) 0051 0052 SKGObjectBase obj1(&document1, QStringLiteral("bank")); 0053 SKGTESTERROR(QStringLiteral("PROP:setAttribute"), obj1.setAttribute(QStringLiteral("t_name"), QStringLiteral("CL")), true) 0054 SKGTESTERROR(QStringLiteral("PROP:Replace"), obj1.save(), true) 0055 0056 SKGTESTERROR(QStringLiteral("PROP:setProperty"), obj1.setProperty(QStringLiteral("ATT1"), QStringLiteral("VAL2"), QVariant(145)), true) 0057 0058 // Check 0059 SKGTEST(QStringLiteral("PROP:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1")) 0060 SKGTEST(QStringLiteral("PROP:getProperty"), obj1.getProperty(QStringLiteral("ATT1")), QStringLiteral("VAL2")) 0061 SKGTEST(QStringLiteral("PROP:getProperty"), obj1.getPropertyBlob(QStringLiteral("ATT1")).toInt(), 145) 0062 0063 0064 QStringList oResult; 0065 SKGTESTERROR(QStringLiteral("PROP:getDistinctValues"), document1.getDistinctValues(QStringLiteral("parameters"), QStringLiteral("t_value"), QStringLiteral("t_value like 'VAL%'"), oResult), true) 0066 SKGTEST(QStringLiteral("PROP:oResult.size"), oResult.size(), 2) 0067 0068 // delete cascade 0069 SKGTESTERROR(QStringLiteral("PROP:Replace"), obj1.remove(), true) 0070 SKGTESTERROR(QStringLiteral("PROP:getDistinctValues"), document1.getDistinctValues(QStringLiteral("parameters"), QStringLiteral("t_value"), QStringLiteral("t_value like 'VAL%'"), oResult), true) 0071 SKGTEST(QStringLiteral("PROP:oResult.size"), oResult.size(), 1) 0072 0073 SKGTESTERROR(QStringLiteral("PROP:setProperty"), obj1.setProperty(QStringLiteral("ATT4"), QStringLiteral("VAL4"), SKGTest::getTestPath(QStringLiteral("IN")) % "/dates.txt"), true) 0074 SKGTESTERROR(QStringLiteral("PROP:setProperty"), obj1.setProperty(QStringLiteral("ATT5"), QStringLiteral("VAL5"), SKGTest::getTestPath(QStringLiteral("IN"))), true) 0075 0076 { 0077 // Scope of the transaction 0078 SKGError err; 0079 SKGBEGINTRANSACTION(document1, QStringLiteral("T1"), err) 0080 0081 SKGPropertyObject propAdded1; 0082 SKGTESTERROR(QStringLiteral("PROP.setProperty"), obj1.setProperty(QStringLiteral("normal"), QStringLiteral("value"), QVariant(), &propAdded1), true) 0083 SKGTEST(QStringLiteral("PROP.getUrl"), propAdded1.getUrl().toDisplayString(), QLatin1String("")) 0084 0085 SKGPropertyObject propAdded2; 0086 SKGTESTERROR(QStringLiteral("PROP.setProperty"), obj1.setProperty(QStringLiteral("url"), QStringLiteral("https://skrooge.org/"), QVariant(), &propAdded2), true) 0087 SKGTEST(QStringLiteral("PROP.getUrl"), propAdded2.getUrl().toDisplayString(), QStringLiteral("https://skrooge.org/")) 0088 0089 SKGPropertyObject propAdded3; 0090 SKGTESTERROR(QStringLiteral("PROP.setProperty"), obj1.setProperty(QStringLiteral("file copied"), SKGTest::getTestPath(QStringLiteral("IN")) % "dates.txt", QVariant(), &propAdded3), true) 0091 SKGTEST(QStringLiteral("PROP.getUrl"), propAdded3.getUrl().toDisplayString(), "file://" % SKGTest::getTestPath(QStringLiteral("IN")) % "dates.txt") 0092 0093 SKGPropertyObject propAdded4; 0094 SKGTESTERROR(QStringLiteral("PROP.setProperty"), obj1.setProperty(QStringLiteral("file moved"), QStringLiteral("test.txt"), QVariant("ABC"), &propAdded4), true) 0095 SKGTESTBOOL("PROP.getUrl", propAdded4.getUrl().toDisplayString().startsWith(QLatin1String("file://")), true) 0096 SKGTESTBOOL("PROP.getUrl", propAdded4.getUrl().toDisplayString().endsWith(QLatin1String("test.txt")), true) 0097 0098 SKGTESTBOOL("PROP.getUrl", propAdded4.getUrl(true).toDisplayString().startsWith(QLatin1String("file://")), true) 0099 SKGTESTBOOL("PROP.getUrl", propAdded4.getUrl(true).toDisplayString().endsWith(QLatin1String("test.txt")), true) 0100 } 0101 } 0102 0103 { 0104 SKGDocumentBank document1; 0105 SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true) 0106 QStringList listTables; 0107 SKGTESTERROR(QStringLiteral("DOC::getTablesList"), document1.getTablesList(listTables), true) 0108 for (const auto& table : qAsConst(listTables)) { 0109 document1.getDisplaySchemas(table); 0110 } 0111 } 0112 0113 // End test 0114 SKGENDTEST() 0115 }