diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/negative/TestBrokenResources.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/negative/TestBrokenResources.java index 5527ac2666a..373e849e55b 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/negative/TestBrokenResources.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/negative/TestBrokenResources.java @@ -185,7 +185,7 @@ public void test020GetResourceBroken() throws Exception { @Test public void test030ListResources() throws Exception { final String TEST_NAME = "test030ListResources"; - testListResources(TEST_NAME, 4); + testListResources(TEST_NAME, 4, null); } @Test @@ -585,7 +585,7 @@ public void test362GetResourceNoConfiguration() throws Exception { @Test public void test368ListResources() throws Exception { final String TEST_NAME = "test368ListResources"; - testListResources(TEST_NAME, 5); + testListResources(TEST_NAME, 5, null); } @Test @@ -614,7 +614,7 @@ public void test369DeleteResourceNoConfiguration() throws Exception { @Test public void test370ListResources() throws Exception { final String TEST_NAME = "test370ListResources"; - testListResources(TEST_NAME, 4); + testListResources(TEST_NAME, 4, null); } @Test @@ -634,15 +634,70 @@ public void test371ImportUnaccessibleResource() throws Exception { TestUtil.assertSuccess(result); } + /** + * No fetch operation should NOT try to read the schema. + * MID-3509 + */ + @Test + public void test372GetUnaccessibleResourceNoFetch() throws Exception { + final String TEST_NAME = "test372GetUnaccessibleResourceNoFetch"; + TestUtil.displayTestTile(this, TEST_NAME); + + // GIVEN + Task task = taskManager.createTaskInstance(TestBrokenResources.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + + rememberResourceSchemaFetchCount(); + rememberConnectorInitializationCount(); + rememberConnectorOperationCount(); + rememberConnectorSchemaParseCount(); + + // WHEN + PrismObject resource = modelService.getObject(ResourceType.class, RESOURCE_DUMMY_UNACCESSIBLE_OID, + GetOperationOptions.createNoFetchCollection(), task, result); + + // THEN + result.computeStatus(); + TestUtil.assertSuccess(result); + display("Resource after", resource); + assertNotNull("No resource", resource); + + assertResourceSchemaFetchIncrement(0); + assertConnectorInitializationCountIncrement(0); + assertConnectorOperationIncrement(0); + assertConnectorSchemaParseIncrement(0); + } + + /** + * No fetch operation should NOT try to read the schema. + * MID-3509 + */ + @Test + public void test374ListResourcesNoFetch() throws Exception { + final String TEST_NAME = "test374ListResourcesNoFetch"; + + rememberResourceSchemaFetchCount(); + rememberConnectorInitializationCount(); + rememberConnectorOperationCount(); + rememberConnectorSchemaParseCount(); + + testListResources(TEST_NAME, 5, GetOperationOptions.createNoFetchCollection()); + + assertResourceSchemaFetchIncrement(0); + assertConnectorInitializationCountIncrement(0); + assertConnectorOperationIncrement(0); + assertConnectorSchemaParseIncrement(0); + } + @Test - public void test372ListResources() throws Exception { - final String TEST_NAME = "test372ListResources"; - testListResources(TEST_NAME, 5); + public void test375ListResources() throws Exception { + final String TEST_NAME = "test375ListResources"; + testListResources(TEST_NAME, 5, null); } @Test - public void test373GetResourceNoConfiguration() throws Exception { - final String TEST_NAME = "test373GetResourceNoConfiguration"; + public void test377GetResourceNoConfiguration() throws Exception { + final String TEST_NAME = "test377GetResourceNoConfiguration"; TestUtil.displayTestTile(this, TEST_NAME); // GIVEN @@ -721,7 +776,7 @@ private void testAssignTwoResoures(final String TEST_NAME, String badResourceOid assertNotNull("No jack dummy account", jackDummyAccount); } - public void testListResources(final String TEST_NAME, int expectedNumber) throws Exception { + public void testListResources(final String TEST_NAME, int expectedNumber, Collection> options) throws Exception { TestUtil.displayTestTile(this, TEST_NAME); // GIVEN (1) @@ -729,12 +784,18 @@ public void testListResources(final String TEST_NAME, int expectedNumber) throws OperationResult result = task.getResult(); // WHEN (1) - final SearchResultList> resources = modelService.searchObjects(ResourceType.class, null, null, task, result); + final SearchResultList> resources = modelService.searchObjects(ResourceType.class, null, options, task, result); // THEN (1) result.computeStatus(); display("getObject result", result); - assertEquals("Expected partial error (search)", OperationResultStatus.PARTIAL_ERROR, result.getStatus()); + if (options == null) { + assertEquals("Expected partial error (search)", OperationResultStatus.PARTIAL_ERROR, result.getStatus()); + } else if (GetOperationOptions.isNoFetch(SelectorOptions.findRootOptions(options))) { + TestUtil.assertSuccess(result); + } else { + AssertJUnit.fail("unexpected"); + } display("Got resources: "+resources); assertEquals("Wrong number of resources", expectedNumber, resources.size()); @@ -752,12 +813,18 @@ public boolean handle(PrismObject object, OperationResult parentRe }; // WHEN (2) - modelService.searchObjectsIterative(ResourceType.class, null, handler, null, task, result); + modelService.searchObjectsIterative(ResourceType.class, null, handler, options, task, result); // THEN (2) result.computeStatus(); display("getObject result", result); - assertEquals("Expected partial error (searchIterative)", OperationResultStatus.PARTIAL_ERROR, result.getStatus()); + if (options == null) { + assertEquals("Expected partial error (searchIterative)", OperationResultStatus.PARTIAL_ERROR, result.getStatus()); + } else if (GetOperationOptions.isNoFetch(SelectorOptions.findRootOptions(options))) { + TestUtil.assertSuccess(result); + } else { + AssertJUnit.fail("unexpected"); + } display("Got resources: "+resources); assertEquals("Wrong number of resources", expectedNumber, resources.size());