|
42 | 42 | import java.io.IOException;
|
43 | 43 | import java.net.URLEncoder;
|
44 | 44 | import java.util.ArrayList;
|
| 45 | +import java.util.Arrays; |
45 | 46 | import java.util.Collections;
|
46 | 47 | import java.util.HashMap;
|
47 | 48 | import java.util.List;
|
| 49 | +import java.util.function.Predicate; |
48 | 50 |
|
49 | 51 | import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
|
50 | 52 | import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
|
51 | 53 | import static org.testng.Assert.assertEquals;
|
52 | 54 | import static org.testng.Assert.assertNotNull;
|
53 | 55 | import static org.testng.Assert.assertNull;
|
| 56 | +import static org.testng.Assert.assertTrue; |
54 | 57 | import static org.testng.Assert.fail;
|
55 | 58 |
|
56 | 59 | public class BasicSearchIT extends BaseResourceIT {
|
@@ -224,6 +227,43 @@ public void testSavedSearch(String jsonFile) {
|
224 | 227 | }
|
225 | 228 | }
|
226 | 229 |
|
| 230 | + @Test |
| 231 | + public void testAttributeSearchInvalidOperator() { |
| 232 | + runNegativeSearchTest("search-parameters/operator", "ATLAS-400-00-103", parameters -> parameters.getEntityFilters() != null && parameters.getEntityFilters().getOperator() != null); |
| 233 | + } |
| 234 | + |
| 235 | + @Test |
| 236 | + public void testAttributeSearchEmptyNameAttribute() { |
| 237 | + runNegativeSearchTest("search-parameters/attribute-name", "ATLAS-400-00-104", parameters -> parameters.getEntityFilters() != null && parameters.getEntityFilters().getAttributeName() != null); |
| 238 | + } |
| 239 | + |
| 240 | + @Test |
| 241 | + public void testAttributeSearchEmptyValueAttribute() { |
| 242 | + runNegativeSearchTest("search-parameters/attribute-value", "ATLAS-400-00-105", parameters -> parameters.getEntityFilters() != null && parameters.getEntityFilters().getAttributeValue() != null); |
| 243 | + } |
| 244 | + |
| 245 | + public void runNegativeSearchTest(String jsonFile, String expectedErrorCode, java.util.function.Predicate<SearchParameters> paramFilter) { |
| 246 | + try { |
| 247 | + BasicSearchParametersWithExpectation[] testExpectations = TestResourceFileUtils.readObjectFromJson(jsonFile, BasicSearchParametersWithExpectation[].class); |
| 248 | + assertNotNull(testExpectations); |
| 249 | + Arrays |
| 250 | + .stream(testExpectations) |
| 251 | + .map(testExpectation -> testExpectation.getSearchParameters()) |
| 252 | + .filter(paramFilter) |
| 253 | + .forEach(params -> { |
| 254 | + try { |
| 255 | + atlasClientV2.facetedSearch(params); |
| 256 | + } |
| 257 | + catch (AtlasServiceException e) { |
| 258 | + assertTrue(e.getMessage().contains(expectedErrorCode), |
| 259 | + "Expected error code " + expectedErrorCode + " in exception message: " + e.getMessage()); |
| 260 | + } |
| 261 | + }); |
| 262 | + } catch (IOException e) { |
| 263 | + fail(e.getMessage()); |
| 264 | + } |
| 265 | + } |
| 266 | + |
227 | 267 | @Test(dependsOnMethods = "testSavedSearch")
|
228 | 268 | public void testExecuteSavedSearchByName() {
|
229 | 269 | try {
|
|
0 commit comments