diff --git a/src/main/java/org/opensearch/securityanalytics/transport/TransportIndexDetectorAction.java b/src/main/java/org/opensearch/securityanalytics/transport/TransportIndexDetectorAction.java index 92d7e7296..2d033e1d5 100644 --- a/src/main/java/org/opensearch/securityanalytics/transport/TransportIndexDetectorAction.java +++ b/src/main/java/org/opensearch/securityanalytics/transport/TransportIndexDetectorAction.java @@ -288,8 +288,7 @@ public void onFailure(Exception e) { } else { // Failure if detector doesn't have any monitor if (monitorRequests.isEmpty()) { - listener.onFailure(new OpenSearchStatusException(String.format("Detector cannot be created as detector type %s is incompatible with detector rules", - detector.getDetectorType().toLowerCase(Locale.ROOT)), RestStatus.BAD_REQUEST)); + listener.onFailure(new OpenSearchStatusException("Detector cannot be created as monitor cannot be created", RestStatus.BAD_REQUEST)); return; } diff --git a/src/test/java/org/opensearch/securityanalytics/resthandler/DetectorRestApiIT.java b/src/test/java/org/opensearch/securityanalytics/resthandler/DetectorRestApiIT.java index d96d3544d..d9206538d 100644 --- a/src/test/java/org/opensearch/securityanalytics/resthandler/DetectorRestApiIT.java +++ b/src/test/java/org/opensearch/securityanalytics/resthandler/DetectorRestApiIT.java @@ -321,29 +321,9 @@ public void testCreateDetectorWithoutRules() throws IOException { Detector detector = randomDetector(Collections.emptyList()); - Response createResponse = makeRequest(client(), "POST", SecurityAnalyticsPlugin.DETECTOR_BASE_URI, Collections.emptyMap(), toHttpEntity(detector)); - Assert.assertEquals("Create detector failed", RestStatus.CREATED, restStatus(createResponse)); - - Map responseBody = asMap(createResponse); - - // Verify rules - String request = "{\n" + - " \"query\" : {\n" + - " \"match_all\":{\n" + - " }\n" + - " }\n" + - "}"; - SearchResponse response = executeSearchAndGetResponse(DetectorMonitorConfig.getRuleIndex(randomDetectorType()) + "*", request, true); - Assert.assertEquals(0, response.getHits().getTotalHits().value); - - String createdId = responseBody.get("_id").toString(); - int createdVersion = Integer.parseInt(responseBody.get("_version").toString()); - Assert.assertNotEquals("response is missing Id", Detector.NO_ID, createdId); - Assert.assertTrue("incorrect version", createdVersion > 0); - Assert.assertEquals("Incorrect Location header", String.format(Locale.getDefault(), "%s/%s", SecurityAnalyticsPlugin.DETECTOR_BASE_URI, createdId), createResponse.getHeader("Location")); - Assert.assertFalse(((Map) responseBody.get("detector")).containsKey("rule_topic_index")); - Assert.assertFalse(((Map) responseBody.get("detector")).containsKey("findings_index")); - Assert.assertFalse(((Map) responseBody.get("detector")).containsKey("alert_index")); + expectThrows(ResponseException.class, () -> { + makeRequest(client(), "POST", SecurityAnalyticsPlugin.DETECTOR_BASE_URI, Collections.emptyMap(), toHttpEntity(detector)); + }); } public void testCreateDetectorWithIncompatibleDetectorType() throws IOException {