diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 16dc6c50f7..276057e0eb 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -16,15 +16,9 @@ jobs:
- jdk: 3.8.6-eclipse-temurin-18
nashorn: ''
bytebuddy: ''
- isPublishing: 'true'
- - jdk: 3.9.3-eclipse-temurin-20
- nashorn: ''
- bytebuddy: ''
- isPublishing: 'false'
- jdk: 3.9.7-eclipse-temurin-21
nashorn: ''
bytebuddy: '-Dnet.bytebuddy.experimental=true'
- isPublishing: 'false'
# Groovy not compatible jdk22: gmavenplus-plugin JsonUtilSpock.groovy Unsupported class file major version 66
# - jdk: 3.9.7-eclipse-temurin-22
# nashorn: ""
@@ -34,7 +28,6 @@ jobs:
MAVEN_NASHORN: ${{ matrix.nashorn }}
# experimental enabled on jdk21 to prevent 'Mockito cannot mock this class: class org.jsoup.nodes.Document'
MAVEN_BYTEBUDDY: ${{ matrix.bytebuddy }}
- IS_PUBLISHING: ${{ matrix.isPublishing }}
DOCKER_RESOURCES: ${{ inputs.DOCKER_RESOURCES }}
steps:
@@ -107,7 +100,7 @@ jobs:
- name: Coverage and site
uses: ./.github/workflows/publish-scan/
- if: env.IS_PUBLISHING == 'true'
+ if: matrix.jdk == '3.8.6-eclipse-temurin-18'
with: # composite cannot use secrets directly
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }}
\ No newline at end of file
diff --git a/model/pom.xml b/model/pom.xml
index 594c5ced57..af81048b0d 100644
--- a/model/pom.xml
+++ b/model/pom.xml
@@ -58,7 +58,7 @@
SQLix01x03x03x07 + *SqLix01x03x03x07 */ public static final String LEAD_HEX = "0x53714c69"; + public static final String LEAD_PIPE = "Sq'||'Li"; public static final String TRAIL_SQL = "%01%03%03%07"; public static final String TRAIL_HEX = "0x01030307"; @@ -99,7 +100,7 @@ public class VendorYaml implements AbstractVendor { public static final String INJECTION = "${injection}"; - private static final String TEST = "${test}"; + public static final String TEST = "${test}"; private static final String FILEPATH = "${filepath}"; private static final String FILEPATH_HEX = "${filepath.hex}"; @@ -600,7 +601,8 @@ public static String replaceTags(String sqlRequest) { .replace("${trail_sql}", TRAIL_SQL) .replace("${trail_hex}", TRAIL_HEX) .replace("${lead}", LEAD) - .replace("${lead_hex}", LEAD_HEX); + .replace("${lead_hex}", LEAD_HEX) + .replace("${lead_pipe}", LEAD_PIPE); } /** @@ -636,12 +638,12 @@ public String sqlPrivilegeTest() { } @Override - public ListgetListFalseTest() { + public List getFalsy() { return this.modelYaml.getStrategy().getBoolean().getTest().getFalsy(); } @Override - public List getListTrueTest() { + public List getTruthy() { return this.modelYaml.getStrategy().getBoolean().getTest().getTruthy(); } diff --git a/model/src/main/java/com/jsql/model/injection/vendor/model/yaml/Fingerprint.java b/model/src/main/java/com/jsql/model/injection/vendor/model/yaml/Fingerprint.java index 3145562f3a..3809e3a50c 100644 --- a/model/src/main/java/com/jsql/model/injection/vendor/model/yaml/Fingerprint.java +++ b/model/src/main/java/com/jsql/model/injection/vendor/model/yaml/Fingerprint.java @@ -13,6 +13,7 @@ public class Fingerprint implements Serializable { private List errorMessage = new ArrayList<>(); private String orderByErrorMessage = StringUtils.EMPTY; + private String vendorSpecific = StringUtils.EMPTY; public List getErrorMessage() { return this.errorMessage; @@ -40,4 +41,12 @@ public String getErrorMessageAsString() { public void setErrorMessageAsString(String errorMessage) { this.errorMessage = Arrays.asList(errorMessage.split("[\r\n]+")); } + + public String getVendorSpecific() { + return vendorSpecific; + } + + public void setVendorSpecific(String vendorSpecific) { + this.vendorSpecific = vendorSpecific; + } } diff --git a/model/src/main/java/com/jsql/model/injection/vendor/model/yaml/Test.java b/model/src/main/java/com/jsql/model/injection/vendor/model/yaml/Test.java index b4e5f15170..0669a3e408 100644 --- a/model/src/main/java/com/jsql/model/injection/vendor/model/yaml/Test.java +++ b/model/src/main/java/com/jsql/model/injection/vendor/model/yaml/Test.java @@ -11,18 +11,18 @@ public class Test implements Serializable { private List falsy = Arrays.asList( - "true = false", - "true %21= true", - "false %21= false", + "'a' = 'b'", + "'a' %21= 'a'", + "'b' %21= 'b'", "1 = 2", "1 %21= 1", "2 %21= 2" ); private List truthy = Arrays.asList( - "true = true", - "false = false", - "true %21= false", + "'a' = 'a'", + "'b' = 'b'", + "'a' %21= 'b'", "1 = 1", "2 = 2", "1 %21= 2" diff --git a/model/src/main/java/com/jsql/model/suspendable/SuspendableGetCharInsertion.java b/model/src/main/java/com/jsql/model/suspendable/SuspendableGetCharInsertion.java index 15f1cc2d03..7251e52f9c 100644 --- a/model/src/main/java/com/jsql/model/suspendable/SuspendableGetCharInsertion.java +++ b/model/src/main/java/com/jsql/model/suspendable/SuspendableGetCharInsertion.java @@ -186,8 +186,8 @@ private List initializeCallables(CompletionService t ); List prefixQuotes = Arrays.asList( - LABEL_PREFIX, LABEL_PREFIX +"'", + LABEL_PREFIX, LABEL_PREFIX +"`", // TODO add ITs LABEL_PREFIX +"\"", LABEL_PREFIX +"%bf'" // GBK slash encoding use case diff --git a/model/src/main/java/com/jsql/model/suspendable/SuspendableGetVendor.java b/model/src/main/java/com/jsql/model/suspendable/SuspendableGetVendor.java new file mode 100644 index 0000000000..1a31d561da --- /dev/null +++ b/model/src/main/java/com/jsql/model/suspendable/SuspendableGetVendor.java @@ -0,0 +1,83 @@ +package com.jsql.model.suspendable; + +import com.jsql.model.InjectionModel; +import com.jsql.model.bean.util.Header; +import com.jsql.model.bean.util.Interaction; +import com.jsql.model.bean.util.Request; +import com.jsql.model.exception.JSqlException; +import com.jsql.model.exception.JSqlRuntimeException; +import com.jsql.model.exception.StoppedByUserSlidingException; +import com.jsql.model.injection.strategy.blind.AbstractInjectionBoolean; +import com.jsql.model.injection.strategy.blind.InjectionVendor; +import com.jsql.util.LogLevelUtil; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.EnumMap; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; + +public class SuspendableGetVendor extends AbstractSuspendable { + + /** + * Log4j logger sent to view. + */ + private static final Logger LOGGER = LogManager.getRootLogger(); + + public SuspendableGetVendor(InjectionModel injectionModel) { + super(injectionModel); + } + + @Override + public String run(Object... args) throws JSqlException { + + LOGGER.log(LogLevelUtil.CONSOLE_DEFAULT, "Fingerprinting vendor with Boolean match..."); + + AtomicBoolean isVendorFound = new AtomicBoolean(false); + this.injectionModel.getMediatorVendor().getVendors() + .stream() + .filter(vendor -> vendor != this.injectionModel.getMediatorVendor().getAuto()) + .filter(vendor -> StringUtils.isNotEmpty(vendor.instance().getModelYaml() + .getStrategy() + .getConfiguration() + .getFingerprint() + .getVendorSpecific() + )) + .forEach(vendor -> { + + if (isVendorFound.get()) { + return; + } + String vendorSpecificWithMode = AbstractInjectionBoolean.BooleanMode.OR.name() + " " + vendor.instance().getModelYaml() + .getStrategy() + .getConfiguration() + .getFingerprint() + .getVendorSpecific(); + try { + var injectionCharInsertion = new InjectionVendor(this.injectionModel, vendorSpecificWithMode, vendor); + if (injectionCharInsertion.isInjectable(vendorSpecificWithMode)) { + + if (this.isSuspended()) { + throw new StoppedByUserSlidingException(); + } + + LOGGER.log(LogLevelUtil.CONSOLE_SUCCESS, "Found vendor [{}] using Boolean match", vendor); + this.injectionModel.getMediatorVendor().setVendor(vendor); + isVendorFound.set(true); + + var requestSetVendor = new Request(); + requestSetVendor.setMessage(Interaction.SET_VENDOR); + Map msgHeader = new EnumMap<>(Header.class); + msgHeader.put(Header.URL, this.injectionModel.getMediatorUtils().getConnectionUtil().getUrlByUser()); + msgHeader.put(Header.VENDOR, this.injectionModel.getMediatorVendor().getVendor()); + requestSetVendor.setParameters(msgHeader); + this.injectionModel.sendToViews(requestSetVendor); + } + } catch (StoppedByUserSlidingException e) { + throw new JSqlRuntimeException(e); + } + }); + return null; + } +} \ No newline at end of file diff --git a/model/src/main/java/com/jsql/util/CookiesUtil.java b/model/src/main/java/com/jsql/util/CookiesUtil.java index 7eb4fe4c86..18c3a9d75f 100644 --- a/model/src/main/java/com/jsql/util/CookiesUtil.java +++ b/model/src/main/java/com/jsql/util/CookiesUtil.java @@ -27,6 +27,9 @@ public CookiesUtil(InjectionModel injectionModel) { public boolean testParameters(boolean hasFoundInjection) { if (!hasFoundInjection) { + if (!this.injectionModel.getMediatorUtils().getPreferencesUtil().isCheckingAllCookieParam()) { + return false; + } LOGGER.log(LogLevelUtil.CONSOLE_DEFAULT, "Checking cookies params..."); } else { return true; diff --git a/model/src/main/resources/vendor/mysql.yml b/model/src/main/resources/vendor/mysql.yml index 64ea7ff75b..945255732e 100644 --- a/model/src/main/resources/vendor/mysql.yml +++ b/model/src/main/resources/vendor/mysql.yml @@ -21,8 +21,8 @@ resource: separator ${separator_cell_hex} ) from ( select - cast(schema_name as char) r, - cast(count(table_name) as char) q + schema_name r, + count(table_name) q from information_schema.tables right join information_schema.schemata on schema_name = table_schema @@ -43,8 +43,8 @@ resource: separator ${separator_cell_hex} ) from ( select - cast(table_name as char) r, - cast(ifnull(table_rows, 0x30) as char) q + table_name r, + ifnull(table_rows, 0x30) q from information_schema.tables where table_schema = 0x${database.hex} /* Required by Error Extractvalue */ @@ -62,7 +62,7 @@ resource: order by n separator ${separator_cell_hex} ) from ( - select cast(column_name as char) n + select column_name n from information_schema.columns where table_schema = 0x${database.hex} and table_name = 0x${table.hex} @@ -83,8 +83,8 @@ resource: separator ${separator_cell_hex} ) from ( select - cast(concat(${fields}) as char) r, - cast(count(*) as char) q + concat(${fields}) r, + count(*) q from `${database}`.`${table}` group by r /* Required by Error Extractvalue */ @@ -145,7 +145,7 @@ resource: select concat(@a:=0,(select count(*) from ( select concat( ${enclose_value_hex}, - cast(schema_name as char), + schema_name, '${separator_qte_sql}0${enclose_value_sql}${separator_cell_sql}' ) a from information_schema.schemata @@ -158,7 +158,7 @@ resource: select concat(@a:=0,(select count(*) from ( select concat( ${enclose_value_hex}, - cast(table_name as char), + table_name, '${separator_qte_sql}0${enclose_value_sql}${separator_cell_sql}' ) a from information_schema.tables @@ -172,7 +172,7 @@ resource: select concat(@a:=0,(select count(*) from ( select concat( ${enclose_value_hex}, - cast(column_name as char), + column_name, '${separator_qte_sql}0${enclose_value_sql}${separator_cell_sql}' ) a from information_schema.columns @@ -187,7 +187,7 @@ resource: select concat(@a:=0,(select count(*) from ( select concat( ${enclose_value_hex}, - cast(concat(${fields}) as char), + concat(${fields}), '${separator_qte_sql}0${enclose_value_sql}${separator_cell_sql}' ) a from `${database}`.`${table}` @@ -199,13 +199,13 @@ resource: file: privilege: | - cast(( + ( select if(count(*) = 1, 0x74727565, 0x66616c7365) from information_schema.user_privileges - where grantee = concat(0x27, replace(cast(current_user as char), 0x40, 0x274027), 0x27) + where grantee = concat(0x27, replace(current_user, 0x40, 0x274027), 0x27) and privilege_type = 0x46494c45 - ) as char) - read: cast(load_file(0x${filepath.hex}) as char) + ) + read: load_file(0x${filepath.hex}) write: body: (select 0x${body.hex}) path: into outfile '${filepath}' @@ -248,6 +248,7 @@ strategy: - tidb orderByErrorMessage: - Unknown column '1337' in 'order clause' + vendorSpecific: if(${test}, 'a', 'b')='a' normal: indices: union select ${indices} diff --git a/model/src/main/resources/vendor/oracle.yml b/model/src/main/resources/vendor/oracle.yml index 5daa4a89ee..557cc7de2d 100644 --- a/model/src/main/resources/vendor/oracle.yml +++ b/model/src/main/resources/vendor/oracle.yml @@ -173,7 +173,7 @@ strategy: slidingWindow: | ( select - '${lead}' + '${lead_pipe}' || substr( (${injection}), ${window.char}, @@ -209,13 +209,14 @@ strategy: - "Warning: oci_fetch_array()" orderByErrorMessage: - ORDER BY item must be the number of a SELECT-list expression + vendorSpecific: 0 != bitand(case when ${test} then 1 else 2 end, 1) normal: indices: union select ${indices} from dual capacity: | ( select - '${lead}' + '${lead_pipe}' || ${indice} || ${calibrator} s diff --git a/model/src/main/resources/vendor/postgresql.yml b/model/src/main/resources/vendor/postgresql.yml index fdbb7e8249..7559f99ecd 100644 --- a/model/src/main/resources/vendor/postgresql.yml +++ b/model/src/main/resources/vendor/postgresql.yml @@ -121,7 +121,7 @@ strategy: select /* Coalesce appends trail when end of string (${lead}${trail}). TODO Cleaner lead (similar to 0+1) */ - 'Sq' || 'Li' + '${lead_pipe}' || coalesce( substr( (${injection}), @@ -159,10 +159,11 @@ strategy: orderByErrorMessage: # Collision with vertica - (? System.getProperty("profileId", "tests").equals( - propertyByEngine.getKey().getProperty("jsql.profile", "tests") // undefined by default - )) + getPropertiesFilterByProfile() .forEach(propertyByEngine -> { Configuration configuration = new Configuration(); @@ -221,6 +219,13 @@ private static void initializeNeo4j() throws IOException { driver.close(); } + public static Stream > getPropertiesFilterByProfile() { + return SpringTargetApplication.propertiesByEngine.parallelStream().filter(propertyByEngine -> + System.getProperty("profileId") == null + || propertyByEngine.getKey().getProperty("jsql.profile").equals(System.getProperty("profileId")) + ); + } + /** * For debug purpose only. * @param args @@ -236,7 +241,7 @@ public static void main(String[] args) throws Exception { @PreDestroy public void onDestroy() throws Exception { - if (!"tests-additional".equals(System.getProperty("profileId", StringUtils.EMPTY))) { + if (System.getProperty("profileId") == null || "tests".equals(System.getProperty("profileId"))) { LOGGER.info("Ending in-memory databases..."); serverDerby.shutdown(); diff --git a/model/src/test/java/spring/tenant/MasterService.java b/model/src/test/java/spring/tenant/MasterService.java index e980dec26b..686621e7c7 100644 --- a/model/src/test/java/spring/tenant/MasterService.java +++ b/model/src/test/java/spring/tenant/MasterService.java @@ -20,11 +20,7 @@ public MasterService() { // Remove annoying logs from jdbc driver DriverManager.setLogWriter(null); - SpringTargetApplication.propertiesByEngine.stream() - .filter(propertyByEngine -> System.getProperty("profileId", "tests").equals( - propertyByEngine.getKey().getProperty("jsql.profile", "tests") // undefined by default - )) - .map(AbstractMap.SimpleEntry::getKey).forEach(props -> { + SpringTargetApplication.getPropertiesFilterByProfile().map(AbstractMap.SimpleEntry::getKey).forEach(props -> { DatasourceConnectionProviderImpl connectionProvider = new DatasourceConnectionProviderImpl(); diff --git a/model/src/test/resources/docker/docker-compose.yml b/model/src/test/resources/docker/docker-compose.yml index c7e087a207..9047fd92f7 100644 --- a/model/src/test/resources/docker/docker-compose.yml +++ b/model/src/test/resources/docker/docker-compose.yml @@ -1,7 +1,6 @@ version: "3.7" services: - cubrid: ports: - "33000:33000" diff --git a/model/src/test/resources/docker/scripts/healthcheck/healthcheck-additional.sh b/model/src/test/resources/docker/scripts/healthcheck/healthcheck-additional.sh index 05142ef213..4be703577c 100755 --- a/model/src/test/resources/docker/scripts/healthcheck/healthcheck-additional.sh +++ b/model/src/test/resources/docker/scripts/healthcheck/healthcheck-additional.sh @@ -2,7 +2,7 @@ steps=0 function __echoStep { - steps=$((steps+1)) && echo "## Step $steps/8" + steps=$((steps+1)) && echo "## Step $steps/2" } __echoStep && ./model/src/test/resources/docker/scripts/healthcheck/sqlserver.sh diff --git a/model/src/test/resources/docker/scripts/healthcheck/healthcheck.sh b/model/src/test/resources/docker/scripts/healthcheck/healthcheck.sh index b24263fe1d..14d96cb23e 100755 --- a/model/src/test/resources/docker/scripts/healthcheck/healthcheck.sh +++ b/model/src/test/resources/docker/scripts/healthcheck/healthcheck.sh @@ -2,7 +2,7 @@ steps=0 function __echoStep { - steps=$((steps+1)) && echo "## Step $steps/8" + steps=$((steps+1)) && echo "## Step $steps/6" } __echoStep && ./model/src/test/resources/docker/scripts/healthcheck/cubrid.sh diff --git a/model/src/test/resources/hibernate/hibernate.cubrid.properties b/model/src/test/resources/hibernate/hibernate.cubrid.properties index ba39b2f45c..0f9a7852c2 100644 --- a/model/src/test/resources/hibernate/hibernate.cubrid.properties +++ b/model/src/test/resources/hibernate/hibernate.cubrid.properties @@ -1,4 +1,5 @@ jsql.tenant = cubrid +jsql.profile = tests hibernate.connection.driver_class = cubrid.jdbc.driver.CUBRIDDriver hibernate.connection.url = jdbc:cubrid:jsql-cubrid:33000:demodb::: hibernate.connection.username = diff --git a/model/src/test/resources/hibernate/hibernate.derby.properties b/model/src/test/resources/hibernate/hibernate.derby.properties index f8d03d2d2d..58e663903f 100644 --- a/model/src/test/resources/hibernate/hibernate.derby.properties +++ b/model/src/test/resources/hibernate/hibernate.derby.properties @@ -1,4 +1,5 @@ jsql.tenant = derby +jsql.profile = tests hibernate.connection.driver_class = org.apache.derby.jdbc.ClientDriver hibernate.connection.url = jdbc:derby://127.0.0.1:1527/memory:testdb;create=true hibernate.connection.username = admin diff --git a/model/src/test/resources/hibernate/hibernate.firebird.properties b/model/src/test/resources/hibernate/hibernate.firebird.properties index 7a965a8fa9..431adfeaaa 100644 --- a/model/src/test/resources/hibernate/hibernate.firebird.properties +++ b/model/src/test/resources/hibernate/hibernate.firebird.properties @@ -1,4 +1,5 @@ jsql.tenant = firebird +jsql.profile = tests hibernate.connection.driver_class = org.firebirdsql.jdbc.FBDriver # defaultHoldable: allows multiple queries hibernate.connection.url = jdbc:firebirdsql://jsql-firebird:3050//firebird/data/EMPLOYEE.FDB?defaultHoldable diff --git a/model/src/test/resources/hibernate/hibernate.h2.properties b/model/src/test/resources/hibernate/hibernate.h2.properties index 89076da9a8..5b594bf5bf 100644 --- a/model/src/test/resources/hibernate/hibernate.h2.properties +++ b/model/src/test/resources/hibernate/hibernate.h2.properties @@ -1,4 +1,5 @@ jsql.tenant = h2 +jsql.profile = tests hibernate.connection.driver_class = org.h2.Driver hibernate.connection.url = jdbc:h2:mem:public;IGNORECASE=TRUE;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1; hibernate.connection.username = sa diff --git a/model/src/test/resources/hibernate/hibernate.hsqldb.properties b/model/src/test/resources/hibernate/hibernate.hsqldb.properties index 75be14a2e5..267d600100 100644 --- a/model/src/test/resources/hibernate/hibernate.hsqldb.properties +++ b/model/src/test/resources/hibernate/hibernate.hsqldb.properties @@ -1,4 +1,5 @@ jsql.tenant = hsqldb +jsql.profile = tests hibernate.connection.driver_class = org.hsqldb.jdbc.JDBCDriver hibernate.connection.url = jdbc:hsqldb:hsql://127.0.0.1:9002/mainDb hibernate.connection.username = SA diff --git a/model/src/test/resources/hibernate/hibernate.informix.properties b/model/src/test/resources/hibernate/hibernate.informix.properties index 0f4939658d..ddcf1a1f6a 100644 --- a/model/src/test/resources/hibernate/hibernate.informix.properties +++ b/model/src/test/resources/hibernate/hibernate.informix.properties @@ -1,4 +1,5 @@ jsql.tenant = informix +jsql.profile = tests hibernate.connection.driver_class = com.informix.jdbc.IfxDriver hibernate.connection.url = jdbc:informix-sqli://jsql-informix:9088/sysutils hibernate.connection.username = informix diff --git a/model/src/test/resources/hibernate/hibernate.mysql-5-5-40.properties b/model/src/test/resources/hibernate/hibernate.mysql-5-5-40.properties index d2cb08de74..ca5f23f4a4 100644 --- a/model/src/test/resources/hibernate/hibernate.mysql-5-5-40.properties +++ b/model/src/test/resources/hibernate/hibernate.mysql-5-5-40.properties @@ -1,4 +1,5 @@ jsql.tenant = mysql-error +jsql.profile = tests hibernate.connection.driver_class = com.mysql.cj.jdbc.Driver hibernate.connection.url = jdbc:mysql://jsql-mysql-5-5-40:3307/musicstore?createDatabaseIfNotExist=true&allowMultiQueries=true hibernate.connection.username = root diff --git a/model/src/test/resources/hibernate/hibernate.mysql.properties b/model/src/test/resources/hibernate/hibernate.mysql.properties index ff401c8c2a..ac4a102e30 100644 --- a/model/src/test/resources/hibernate/hibernate.mysql.properties +++ b/model/src/test/resources/hibernate/hibernate.mysql.properties @@ -1,4 +1,5 @@ jsql.tenant = mysql +jsql.profile = tests hibernate.connection.driver_class = com.mysql.cj.jdbc.Driver hibernate.connection.url = jdbc:mysql://jsql-mysql:3306/musicstore?createDatabaseIfNotExist=true&allowMultiQueries=true hibernate.connection.username = root diff --git a/model/src/test/resources/hibernate/hibernate.postgresql.properties b/model/src/test/resources/hibernate/hibernate.postgresql.properties index dac1538f02..37afe4a400 100644 --- a/model/src/test/resources/hibernate/hibernate.postgresql.properties +++ b/model/src/test/resources/hibernate/hibernate.postgresql.properties @@ -1,4 +1,5 @@ jsql.tenant = postgresql +jsql.profile = tests hibernate.connection.driver_class = org.postgresql.Driver hibernate.connection.url = jdbc:postgresql://jsql-postgresql:5432/ hibernate.connection.username = postgres diff --git a/model/src/test/resources/hibernate/hibernate.sqlite.properties b/model/src/test/resources/hibernate/hibernate.sqlite.properties index 60f77f2e04..70b58ddd1d 100644 --- a/model/src/test/resources/hibernate/hibernate.sqlite.properties +++ b/model/src/test/resources/hibernate/hibernate.sqlite.properties @@ -1,4 +1,5 @@ jsql.tenant = sqlite +jsql.profile = tests hibernate.connection.driver_class = org.sqlite.JDBC hibernate.connection.url = jdbc:sqlite:jsql-sqlite-its.db hibernate.connection.username = diff --git a/pom.xml b/pom.xml index 0ab65c766b..cdd0bc5356 100644 --- a/pom.xml +++ b/pom.xml @@ -36,9 +36,9 @@ 3.7.0 3.4.0 -3.6.1 +3.6.2 4.0.0-M15 -3.3.0 +3.3.1 4.8.6.2 2.17.0 diff --git a/view/pom.xml b/view/pom.xml index 792f4bb561..cc9c88bd6f 100644 --- a/view/pom.xml +++ b/view/pom.xml @@ -19,6 +19,8 @@3.6.0 3.7.1 5.2.0 +1.2.1 +1.16.1 @@ -59,7 +61,7 @@ org.pitest pitest-maven -1.16.1 +${pitest-maven.version} @@ -76,7 +78,14 @@ org.pitest pitest-maven -1.16.1 +${pitest-maven.version} ++ + +org.pitest +pitest-junit5-plugin +${pitest-junit5-plugin.version} +maven-assembly-plugin diff --git a/view/src/main/java/com/jsql/view/swing/panel/preferences/PanelInjection.java b/view/src/main/java/com/jsql/view/swing/panel/preferences/PanelInjection.java index e1eb569968..852ef081f9 100644 --- a/view/src/main/java/com/jsql/view/swing/panel/preferences/PanelInjection.java +++ b/view/src/main/java/com/jsql/view/swing/panel/preferences/PanelInjection.java @@ -98,7 +98,7 @@ public PanelInjection(PanelPreferences panelPreferences) { "Default is searching for the prefix but can be disabled to save time when prefix is already set by the user.