From 4ac42c80d7ab4a904f44a20cf04115d5e06f6b09 Mon Sep 17 00:00:00 2001 From: Avgustin Marinov Date: Wed, 13 Dec 2023 16:29:56 +0200 Subject: [PATCH] [#1509] Sync Target type with SW and DS types (targettype.key search) (#1515) Signed-off-by: Marinov Avgustin --- .../hawkbit/repository/TargetFields.java | 2 +- .../hawkbit/repository/TargetTypeFields.java | 4 +++ .../jpa/rsql/RSQLTargetFieldTest.java | 25 ++++++++++++++++--- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFields.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFields.java index 2734fcffd..7197f6144 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFields.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFields.java @@ -91,7 +91,7 @@ public enum TargetFields implements FieldNameProvider { /** * The target type. */ - TARGETTYPE("targetType", TargetTypeFields.NAME.getFieldName()); + TARGETTYPE("targetType", TargetTypeFields.KEY.getFieldName(), TargetTypeFields.NAME.getFieldName()); private final String fieldName; private List subEntityAttribues; diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTypeFields.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTypeFields.java index 6c117de0f..97fc98584 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTypeFields.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTypeFields.java @@ -14,6 +14,10 @@ package org.eclipse.hawkbit.repository; * the REST API */ public enum TargetTypeFields implements FieldNameProvider { + /** + * The name field. + */ + KEY("key"), /** * The name field. */ 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 3420a5bb9..31d58d24b 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 @@ -90,9 +90,13 @@ class RSQLTargetFieldTest extends AbstractJpaIntegrationTest { assignDistributionSet(ds.getId(), target.getControllerId()); targetType1 = targetTypeManagement - .create(entityFactory.targetType().create().name("Type1").description("Desc. Type1")); + .create(entityFactory.targetType().create() + .name("Type1").description("Desc. Type1") + .key("Type1.key")); targetType2 = targetTypeManagement - .create(entityFactory.targetType().create().name("Type2").description("Desc. Type2")); + .create(entityFactory.targetType().create() + .name("Type2").description("Desc. Type2") + .key("Type2.key")); targetManagement.assignType(target.getControllerId(), targetType1.getId()); targetManagement.assignType(target2.getControllerId(), targetType2.getId()); @@ -306,13 +310,26 @@ class RSQLTargetFieldTest extends AbstractJpaIntegrationTest { } @Test - @Description("Test filter by target type") - void shouldFilterTargetsByTypeIdNameAndDescription() { + @Description("Test filter by target type key") + void shouldFilterTargetsByTypeKey() { + assertRSQLQuery("targettype." + TargetTypeFields.KEY.name() + "==" + targetType1.getKey(), 1); + assertRSQLQuery("targettype." + TargetTypeFields.KEY.name() + "==*1.key", 1); + assertRSQLQuery("targettype." + TargetTypeFields.KEY.name() + "!=" + targetType2.getKey(), 4); + assertRSQLQuery("targettype." + TargetTypeFields.KEY.name() + "==noExist*", 0); + } + + @Test + @Description("Test filter by target type name") + void shouldFilterTargetsByTypeName() { assertRSQLQuery("targettype." + TargetTypeFields.NAME.name() + "==" + targetType1.getName(), 1); assertRSQLQuery("targettype." + TargetTypeFields.NAME.name() + "==*1", 1); assertRSQLQuery("targettype." + TargetTypeFields.NAME.name() + "!=" + targetType2.getName(), 4); assertRSQLQuery("targettype." + TargetTypeFields.NAME.name() + "==noExist*", 0); + } + @Test + @Description("Test filter by target type ID and description") + void shouldFilterTargetsByTypeIdAndDescription() { assertThatExceptionOfType(RSQLParameterUnsupportedFieldException.class) .isThrownBy(() -> assertRSQLQuery("targettype.ID==1", 0)); assertThatExceptionOfType(RSQLParameterUnsupportedFieldException.class)