From 42b1fc94392e1c36707b7ed4cc7a1047e09e5ad6 Mon Sep 17 00:00:00 2001 From: Bondar Bogdan <36962546+bogdan-bondar@users.noreply.github.com> Date: Mon, 30 Aug 2021 20:17:52 +0200 Subject: [PATCH] fix null pointer exception in rsql target field validation test (#1172) Signed-off-by: Bogdan Bondar --- .../jpa/rsql/RSQLTargetFieldTest.java | 27 ++++++++++++ .../rsql/RSQLTargetFieldValidationTest.java | 42 ------------------- 2 files changed, 27 insertions(+), 42 deletions(-) delete mode 100644 hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldValidationTest.java diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldTest.java index e08f189ab..f9ebbd9f7 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldTest.java @@ -9,6 +9,7 @@ package org.eclipse.hawkbit.repository.jpa.rsql; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.junit.jupiter.api.Assertions.fail; import java.util.Arrays; @@ -234,6 +235,32 @@ public class RSQLTargetFieldTest extends AbstractJpaIntegrationTest { + TargetFields.CONTROLLERID.name() + "!=targetId1235", 4); } + @Test + @Description("Testing allowed RSQL keys based on TargetFields definition") + public void rsqlValidTargetFields() { + final String rsql1 = "ID == '0123' and NAME == abcd and DESCRIPTION == absd" + + " and CREATEDAT =lt= 0123 and LASTMODIFIEDAT =gt= 0123" + + " and CONTROLLERID == 0123 and UPDATESTATUS == PENDING" + + " and IPADDRESS == 0123 and LASTCONTROLLERREQUESTAT == 0123" + " and tag == beta"; + + RSQLUtility.validateRsqlFor(rsql1, TargetFields.class); + + final String rsql2 = "ASSIGNEDDS.name == abcd and ASSIGNEDDS.version == 0123" + + " and INSTALLEDDS.name == abcd and INSTALLEDDS.version == 0123"; + RSQLUtility.validateRsqlFor(rsql2, TargetFields.class); + + final String rsql3 = "ATTRIBUTE.subkey1 == test and ATTRIBUTE.subkey2 == test" + + " and METADATA.metakey1 == abcd and METADATA.metavalue2 == asdfg"; + RSQLUtility.validateRsqlFor(rsql3, TargetFields.class); + + final String rsql4 = "CREATEDAT =lt= ${NOW_TS} and LASTMODIFIEDAT =ge= ${OVERDUE_TS}"; + RSQLUtility.validateRsqlFor(rsql4, TargetFields.class); + + final String rsql5 = "wrongfield == abcd"; + assertThatExceptionOfType(RSQLParameterUnsupportedFieldException.class) + .isThrownBy(() -> RSQLUtility.validateRsqlFor(rsql5, TargetFields.class)); + } + private void assertRSQLQuery(final String rsqlParam, final long expcetedTargets) { final Page findTargetPage = targetManagement.findByRsql(PAGE, rsqlParam); final long countTargetsAll = findTargetPage.getTotalElements(); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldValidationTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldValidationTest.java deleted file mode 100644 index 168bc7764..000000000 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLTargetFieldValidationTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright (c) 2020 devolo AG and others. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.hawkbit.repository.jpa.rsql; - -import org.eclipse.hawkbit.repository.TargetFields; -import org.junit.jupiter.api.Test; - -import io.qameta.allure.Description; -import io.qameta.allure.Feature; -import io.qameta.allure.Story; - -@Feature("Component Tests - Repository") -@Story("RSQL target field validation") -public class RSQLTargetFieldValidationTest { - @Test - @Description("Testing allowed RSQL keys based on TargetFields.class") - public void rsqlValidTargetFields() { - final String rsql1 = "ID == '0123' and NAME == abcd and DESCRIPTION == absd" - + " and CREATEDAT =lt= 0123 and LASTMODIFIEDAT =gt= 0123" - + " and CONTROLLERID == 0123 and UPDATESTATUS == PENDING" - + " and IPADDRESS == 0123 and LASTCONTROLLERREQUESTAT == 0123" + " and tag == beta"; - - RSQLUtility.validateRsqlFor(rsql1, TargetFields.class); - - final String rsql2 = "ASSIGNEDDS.name == abcd and ASSIGNEDDS.version == 0123" - + " and INSTALLEDDS.name == abcd and INSTALLEDDS.version == 0123"; - RSQLUtility.validateRsqlFor(rsql2, TargetFields.class); - - final String rsql3 = "ATTRIBUTE.subkey1 == test and ATTRIBUTE.subkey2 == test" - + " and METADATA.metakey1 == abcd and METADATA.metavalue2 == asdfg"; - RSQLUtility.validateRsqlFor(rsql3, TargetFields.class); - - final String rsql4 = "CREATEDAT =lt= ${NOW_TS} and LASTMODIFIEDAT =ge= ${OVERDUE_TS}"; - RSQLUtility.validateRsqlFor(rsql4, TargetFields.class); - } -}