From 2e98a4db3523e5f4ad1ede3683bb288674d9955d Mon Sep 17 00:00:00 2001 From: Radhika Kundam Date: Wed, 17 Jun 2026 17:41:10 -0700 Subject: [PATCH] ATLAS-5326: Enforce Atlas authorization on AdminResource REST endpoints --- .../atlas/web/resources/AdminResource.java | 42 ++- .../web/resources/AdminResourceTest.java | 350 +++++++++++++----- 2 files changed, 294 insertions(+), 98 deletions(-) diff --git a/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java b/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java index da9967a1ce3..cb12d40895a 100755 --- a/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java +++ b/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java @@ -268,9 +268,11 @@ public AdminResource(ServiceState serviceState, MetricsService metricsService, A @GET @Path("stack") @Produces(MediaType.TEXT_PLAIN) - public String getThreadDump() { + public String getThreadDump() throws AtlasBaseException { LOG.debug("==> AdminResource.getThreadDump()"); + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_EXPORT), "thread dump"); + ThreadGroup topThreadGroup = Thread.currentThread().getThreadGroup(); while (topThreadGroup.getParent() != null) { @@ -360,9 +362,11 @@ public Response getStatus() { @GET @Path("session") @Produces(Servlets.JSON_MEDIA_TYPE) - public Response getUserProfile(@Context HttpServletRequest request) { + public Response getUserProfile(@Context HttpServletRequest request) throws AtlasBaseException { LOG.debug("==> AdminResource.getUserProfile()"); + AtlasAuthorizationUtils.verifyAccess(new AtlasEntityAccessRequest(typeRegistry, AtlasPrivilege.ENTITY_READ), "session"); + Response response; boolean isEntityUpdateAccessAllowed = false; @@ -735,6 +739,8 @@ public AtlasAsyncImportRequest importAsync(@DefaultValue("{}") @FormDataParam("r @Produces(Servlets.JSON_MEDIA_TYPE) @Consumes(MediaType.APPLICATION_JSON) public void abortAsyncImport(@PathParam("importId") String importId) throws AtlasBaseException { + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_IMPORT), "abort async import"); + importService.abortAsyncImport(importId); } @@ -749,6 +755,8 @@ public PList getAsyncImportStatus(@QueryParam("offset") @Defa perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "AdminResource.getAsyncImportStatus()"); } + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_IMPORT), "async import status"); + return importService.getAsyncImportsStatus(offset, limit); } finally { AtlasPerfTracer.log(perf); @@ -766,6 +774,8 @@ public AtlasAsyncImportRequest getAsyncImportStatusById(@PathParam("importId") S perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "AdminResource.getAsyncImportStatusById(importId=" + importId + ")"); } + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_IMPORT), "async import status by id"); + return importService.getAsyncImportRequest(importId); } finally { AtlasPerfTracer.log(perf); @@ -923,6 +933,8 @@ public AtlasServer getCluster(@PathParam("serverName") String serverName) throws perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "cluster.getServer(" + serverName + ")"); } + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_EXPORT), "get server"); + AtlasServer cluster = new AtlasServer(serverName, serverName); return atlasServerService.get(cluster); @@ -946,6 +958,8 @@ public List getExportImportAudit(@QueryParam("serverName perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "getExportImportAudit(" + serverName + ")"); } + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_EXPORT), "export import audit"); + return exportImportAuditService.get(userName, operation, serverName, startTime, endTime, limit, offset); } finally { AtlasPerfTracer.log(perf); @@ -1018,6 +1032,8 @@ public List getAuditDetails(@PathParam("auditGuid") String au perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "AdminResource.getAuditDetails(" + auditGuid + ", " + limit + ", " + offset + ")"); } + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_AUDITS), "audit details"); + List ret = new ArrayList<>(); AtlasAuditEntry auditEntry = auditService.toAtlasAuditEntry(entityStore.getById(auditGuid, false, true)); @@ -1050,14 +1066,18 @@ public List getAuditDetails(@PathParam("auditGuid") String au @GET @Path("activeSearches") @Produces(Servlets.JSON_MEDIA_TYPE) - public Set getActiveSearches() { + public Set getActiveSearches() throws AtlasBaseException { + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_EXPORT), "active searches"); + return activeSearches.getActiveSearches(); } @DELETE @Path("activeSearches/{id}") @Produces(Servlets.JSON_MEDIA_TYPE) - public boolean terminateActiveSearch(@PathParam("id") String searchId) { + public boolean terminateActiveSearch(@PathParam("id") String searchId) throws AtlasBaseException { + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_EXPORT), "terminate active search"); + SearchContext terminate = activeSearches.terminate(searchId); return null != terminate; @@ -1075,6 +1095,8 @@ public AtlasCheckStateResult checkState(AtlasCheckStateRequest request) throws A perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "checkState(" + request + ")"); } + AtlasAuthorizationUtils.verifyAccess(new AtlasEntityAccessRequest(typeRegistry, AtlasPrivilege.ENTITY_READ), "check state"); + return entityStore.checkState(request); } finally { AtlasPerfTracer.log(perf); @@ -1084,9 +1106,11 @@ public AtlasCheckStateResult checkState(AtlasCheckStateRequest request) throws A @GET @Path("patches") @Produces(Servlets.JSON_MEDIA_TYPE) - public AtlasPatches getAtlasPatches() { + public AtlasPatches getAtlasPatches() throws AtlasBaseException { LOG.debug("==> AdminResource.getAtlasPatches()"); + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_IMPORT), "patches"); + AtlasPatches ret = patchManager.getAllPatches(); LOG.debug("<== AdminResource.getAtlasPatches()"); @@ -1098,6 +1122,8 @@ public AtlasPatches getAtlasPatches() { @Path("/tasks") @Produces(Servlets.JSON_MEDIA_TYPE) public List getTaskStatus(@QueryParam("guids") List guids) throws AtlasBaseException { + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_PURGE), "tasks"); + return CollectionUtils.isNotEmpty(guids) ? taskManagement.getByGuids(guids) : taskManagement.getAll(); } @@ -1105,6 +1131,8 @@ public List getTaskStatus(@QueryParam("guids") List guids) th @Path("/tasks") @Produces(Servlets.JSON_MEDIA_TYPE) public void deleteTask(@QueryParam("guids") List guids) throws AtlasBaseException { + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_PURGE), "delete tasks"); + if (CollectionUtils.isNotEmpty(guids)) { taskManagement.deleteByGuids(guids); } @@ -1113,7 +1141,9 @@ public void deleteTask(@QueryParam("guids") List guids) throws AtlasBase @GET @Path("/debug/metrics") @Produces(MediaType.APPLICATION_JSON) - public Map getDebugMetrics() { + public Map getDebugMetrics() throws AtlasBaseException { + AtlasAuthorizationUtils.verifyAccess(new AtlasAdminAccessRequest(AtlasPrivilege.ADMIN_EXPORT), "debug metrics"); + return debugMetricsRESTSink.getMetrics(); } diff --git a/webapp/src/test/java/org/apache/atlas/web/resources/AdminResourceTest.java b/webapp/src/test/java/org/apache/atlas/web/resources/AdminResourceTest.java index 7723ee75ace..f48874a5aab 100644 --- a/webapp/src/test/java/org/apache/atlas/web/resources/AdminResourceTest.java +++ b/webapp/src/test/java/org/apache/atlas/web/resources/AdminResourceTest.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.databind.JsonNode; import org.apache.atlas.AtlasErrorCode; import org.apache.atlas.authorize.AtlasAuthorizationUtils; +import org.apache.atlas.authorize.AtlasEntityAccessRequest; import org.apache.atlas.discovery.SearchContext; import org.apache.atlas.exception.AtlasBaseException; import org.apache.atlas.model.PList; @@ -96,6 +97,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.Callable; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; @@ -232,6 +234,22 @@ private AdminResource createAdminResource() { debugMetricsRESTSink, auditReductionService, atlasMetricsUtil, purgeService); } + private void withAuthorizationBypass(Runnable runnable) { + try (MockedStatic mockedUtils = mockStatic(AtlasAuthorizationUtils.class)) { + mockedUtils.when(() -> AtlasAuthorizationUtils.verifyAccess(any(org.apache.atlas.authorize.AtlasAdminAccessRequest.class), any())).then(invocation -> null); + mockedUtils.when(() -> AtlasAuthorizationUtils.verifyAccess(any(AtlasEntityAccessRequest.class), any())).then(invocation -> null); + runnable.run(); + } + } + + private T withAuthorizationBypassCallable(Callable callable) throws Exception { + try (MockedStatic mockedUtils = mockStatic(AtlasAuthorizationUtils.class)) { + mockedUtils.when(() -> AtlasAuthorizationUtils.verifyAccess(any(org.apache.atlas.authorize.AtlasAdminAccessRequest.class), any())).then(invocation -> null); + mockedUtils.when(() -> AtlasAuthorizationUtils.verifyAccess(any(AtlasEntityAccessRequest.class), any())).then(invocation -> null); + return callable.call(); + } + } + // Helper method to inject HttpServletRequest via reflection private void injectHttpServletRequest(AdminResource adminResource) throws Exception { Field requestField = AdminResource.class.getDeclaredField("httpServletRequest"); @@ -249,11 +267,18 @@ private void injectHttpServletResponse(AdminResource adminResource) throws Excep @Test public void testGetThreadDump() { AdminResource adminResource = createAdminResource(); - String threadDump = adminResource.getThreadDump(); + withAuthorizationBypass(() -> { + String threadDump = null; + try { + threadDump = adminResource.getThreadDump(); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } - assertNotNull(threadDump); - assertTrue(threadDump.length() > 0); - assertTrue(threadDump.contains("State:")); + assertNotNull(threadDump); + assertTrue(threadDump.length() > 0); + assertTrue(threadDump.contains("State:")); + }); } @Test @@ -283,14 +308,20 @@ public void testGetUserProfile() throws Exception { // Inject the mocked request injectHttpServletRequest(adminResource); - Response response = adminResource.getUserProfile(httpServletRequest); + withAuthorizationBypass(() -> { + try { + Response response = adminResource.getUserProfile(httpServletRequest); - assertNotNull(response); - assertEquals(response.getStatus(), HttpServletResponse.SC_OK); + assertNotNull(response); + assertEquals(response.getStatus(), HttpServletResponse.SC_OK); - String responseEntity = (String) response.getEntity(); - assertNotNull(responseEntity); - assertTrue(responseEntity.contains("CSRF_TOKEN") || responseEntity.contains("atlas.rest-csrf.enabled")); + String responseEntity = (String) response.getEntity(); + assertNotNull(responseEntity); + assertTrue(responseEntity.contains("CSRF_TOKEN") || responseEntity.contains("atlas.rest-csrf.enabled")); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -389,13 +420,19 @@ public void testGetActiveSearches() { AdminResource adminResource = createAdminResource(); - Set result = adminResource.getActiveSearches(); + withAuthorizationBypass(() -> { + try { + Set result = adminResource.getActiveSearches(); - assertNotNull(result); - assertEquals(result.size(), 2); - assertTrue(result.contains("search1")); - assertTrue(result.contains("search2")); - verify(activeSearches).getActiveSearches(); + assertNotNull(result); + assertEquals(result.size(), 2); + assertTrue(result.contains("search1")); + assertTrue(result.contains("search2")); + verify(activeSearches).getActiveSearches(); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -407,10 +444,16 @@ public void testTerminateActiveSearch() { AdminResource adminResource = createAdminResource(); - boolean result = adminResource.terminateActiveSearch(searchId); + withAuthorizationBypass(() -> { + try { + boolean result = adminResource.terminateActiveSearch(searchId); - assertTrue(result); - verify(activeSearches).terminate(searchId); + assertTrue(result); + verify(activeSearches).terminate(searchId); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -421,10 +464,16 @@ public void testTerminateActiveSearchNotFound() { AdminResource adminResource = createAdminResource(); - boolean result = adminResource.terminateActiveSearch(searchId); + withAuthorizationBypass(() -> { + try { + boolean result = adminResource.terminateActiveSearch(searchId); - assertFalse(result); - verify(activeSearches).terminate(searchId); + assertFalse(result); + verify(activeSearches).terminate(searchId); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -436,10 +485,16 @@ public void testCheckState() throws Exception { AdminResource adminResource = createAdminResource(); - AtlasCheckStateResult result = adminResource.checkState(request); + withAuthorizationBypass(() -> { + try { + AtlasCheckStateResult result = adminResource.checkState(request); - assertNotNull(result); - verify(entityStore).checkState(request); + assertNotNull(result); + verify(entityStore).checkState(request); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -450,10 +505,16 @@ public void testGetAtlasPatches() { AdminResource adminResource = createAdminResource(); - AtlasPatches result = adminResource.getAtlasPatches(); + withAuthorizationBypass(() -> { + try { + AtlasPatches result = adminResource.getAtlasPatches(); - assertNotNull(result); - verify(patchManager).getAllPatches(); + assertNotNull(result); + verify(patchManager).getAllPatches(); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -470,11 +531,17 @@ public void testGetTaskStatus() throws Exception { AdminResource adminResource = createAdminResource(); - List result = adminResource.getTaskStatus(guids); + withAuthorizationBypass(() -> { + try { + List result = adminResource.getTaskStatus(guids); - assertNotNull(result); - assertFalse(result.isEmpty()); - verify(taskManagement).getByGuids(guids); + assertNotNull(result); + assertFalse(result.isEmpty()); + verify(taskManagement).getByGuids(guids); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -487,10 +554,16 @@ public void testGetTaskStatusWithEmptyGuids() throws Exception { AdminResource adminResource = createAdminResource(); - List result = adminResource.getTaskStatus(null); + withAuthorizationBypass(() -> { + try { + List result = adminResource.getTaskStatus(null); - assertNotNull(result); - verify(taskManagement).getAll(); + assertNotNull(result); + verify(taskManagement).getAll(); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -501,19 +574,31 @@ public void testDeleteTask() throws Exception { AdminResource adminResource = createAdminResource(); - adminResource.deleteTask(guids); + withAuthorizationBypass(() -> { + try { + adminResource.deleteTask(guids); - verify(taskManagement).deleteByGuids(guids); + verify(taskManagement).deleteByGuids(guids); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test public void testDeleteTaskWithEmptyGuids() throws Exception { AdminResource adminResource = createAdminResource(); - adminResource.deleteTask(null); + withAuthorizationBypass(() -> { + try { + adminResource.deleteTask(null); - // Should not call deleteByGuids when guids is null or empty - verify(taskManagement, never()).deleteByGuids(any()); + // Should not call deleteByGuids when guids is null or empty + verify(taskManagement, never()).deleteByGuids(any()); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -526,11 +611,17 @@ public void testGetDebugMetrics() { AdminResource adminResource = createAdminResource(); - Map result = adminResource.getDebugMetrics(); + withAuthorizationBypass(() -> { + try { + Map result = adminResource.getDebugMetrics(); - assertNotNull(result); - assertFalse(result.isEmpty()); - verify(debugMetricsRESTSink).getMetrics(); + assertNotNull(result); + assertFalse(result.isEmpty()); + verify(debugMetricsRESTSink).getMetrics(); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -661,7 +752,10 @@ public void testCheckStateWithException() throws Exception { AdminResource adminResource = createAdminResource(); - adminResource.checkState(request); + withAuthorizationBypassCallable(() -> { + adminResource.checkState(request); + return null; + }); } @Test @@ -710,14 +804,20 @@ public void testGetUserProfileWithAuthentication() throws Exception { try (MockedStatic mockedStatic = mockStatic(SecurityContextHolder.class)) { mockedStatic.when(SecurityContextHolder::getContext).thenReturn(securityContext); - Response response = adminResource.getUserProfile(httpServletRequest); + withAuthorizationBypass(() -> { + try { + Response response = adminResource.getUserProfile(httpServletRequest); - assertNotNull(response); - assertEquals(response.getStatus(), HttpServletResponse.SC_OK); + assertNotNull(response); + assertEquals(response.getStatus(), HttpServletResponse.SC_OK); - String responseEntity = (String) response.getEntity(); - assertNotNull(responseEntity); - assertTrue(responseEntity.contains("userName") || responseEntity.contains("groups")); + String responseEntity = (String) response.getEntity(); + assertNotNull(responseEntity); + assertTrue(responseEntity.contains("userName") || responseEntity.contains("groups")); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } } @@ -812,9 +912,15 @@ public void testAbortAsyncImport() throws Exception { AdminResource adminResource = createAdminResource(); - adminResource.abortAsyncImport(importId); + withAuthorizationBypass(() -> { + try { + adminResource.abortAsyncImport(importId); - verify(importService).abortAsyncImport(importId); + verify(importService).abortAsyncImport(importId); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -828,10 +934,16 @@ public void testGetAsyncImportStatus() throws Exception { AdminResource adminResource = createAdminResource(); - PList result = adminResource.getAsyncImportStatus(offset, limit); + withAuthorizationBypass(() -> { + try { + PList result = adminResource.getAsyncImportStatus(offset, limit); - assertNotNull(result); - verify(importService).getAsyncImportsStatus(offset, limit); + assertNotNull(result); + verify(importService).getAsyncImportsStatus(offset, limit); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -844,10 +956,16 @@ public void testGetAsyncImportStatusById() throws Exception { AdminResource adminResource = createAdminResource(); - AtlasAsyncImportRequest result = adminResource.getAsyncImportStatusById(importId); + withAuthorizationBypass(() -> { + try { + AtlasAsyncImportRequest result = adminResource.getAsyncImportStatusById(importId); - assertNotNull(result); - verify(importService).getAsyncImportRequest(importId); + assertNotNull(result); + verify(importService).getAsyncImportRequest(importId); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -860,10 +978,16 @@ public void testGetCluster() throws Exception { AdminResource adminResource = createAdminResource(); - AtlasServer result = adminResource.getCluster(serverName); + withAuthorizationBypass(() -> { + try { + AtlasServer result = adminResource.getCluster(serverName); - assertNotNull(result); - verify(atlasServerService).get(any(AtlasServer.class)); + assertNotNull(result); + verify(atlasServerService).get(any(AtlasServer.class)); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -885,12 +1009,18 @@ public void testGetExportImportAudit() throws Exception { AdminResource adminResource = createAdminResource(); - List result = adminResource.getExportImportAudit(serverName, userName, operation, - startTime, endTime, limit, offset); + withAuthorizationBypass(() -> { + try { + List result = adminResource.getExportImportAudit(serverName, userName, operation, + startTime, endTime, limit, offset); - assertNotNull(result); - assertFalse(result.isEmpty()); - verify(exportImportAuditService).get(userName, operation, serverName, startTime, endTime, limit, offset); + assertNotNull(result); + assertFalse(result.isEmpty()); + verify(exportImportAuditService).get(userName, operation, serverName, startTime, endTime, limit, offset); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -904,11 +1034,17 @@ public void testAgeoutAuditDataWithConfig() throws Exception { AdminResource adminResource = createAdminResource(); - List result = adminResource.ageoutAuditData(criteria, true); + withAuthorizationBypass(() -> { + try { + List result = adminResource.ageoutAuditData(criteria, true); - assertNotNull(result); - assertFalse(result.isEmpty()); - verify(auditReductionService).startAuditAgingByConfig(); + assertNotNull(result); + assertFalse(result.isEmpty()); + verify(auditReductionService).startAuditAgingByConfig(); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -931,12 +1067,18 @@ public void testAgeoutAuditDataWithCriteria() throws Exception { AdminResource adminResource = createAdminResource(); - List result = adminResource.ageoutAuditData(criteria, false); + withAuthorizationBypass(() -> { + try { + List result = adminResource.ageoutAuditData(criteria, false); - assertNotNull(result); - assertFalse(result.isEmpty()); - verify(auditReductionService).buildAgeoutCriteriaForAllAgingTypes(criteria); - verify(auditReductionService).startAuditAgingByCriteria(mockCriteriaMap); + assertNotNull(result); + assertFalse(result.isEmpty()); + verify(auditReductionService).buildAgeoutCriteriaForAllAgingTypes(criteria); + verify(auditReductionService).startAuditAgingByCriteria(mockCriteriaMap); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -946,10 +1088,16 @@ public void testAgeoutAuditDataWithDisabledAging() throws Exception { AdminResource adminResource = createAdminResource(); - List result = adminResource.ageoutAuditData(criteria, false); + withAuthorizationBypass(() -> { + try { + List result = adminResource.ageoutAuditData(criteria, false); - assertNull(result); - verify(auditReductionService, never()).startAuditAgingByCriteria(any()); + assertNull(result); + verify(auditReductionService, never()).startAuditAgingByCriteria(any()); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -963,11 +1111,17 @@ public void testGetAtlasAudits() throws Exception { AdminResource adminResource = createAdminResource(); - List result = adminResource.getAtlasAudits(searchParameters); + withAuthorizationBypass(() -> { + try { + List result = adminResource.getAtlasAudits(searchParameters); - assertNotNull(result); - assertFalse(result.isEmpty()); - verify(auditService).get(searchParameters); + assertNotNull(result); + assertFalse(result.isEmpty()); + verify(auditService).get(searchParameters); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -992,12 +1146,18 @@ public void testGetAuditDetails() throws Exception { AdminResource adminResource = createAdminResource(); - List result = adminResource.getAuditDetails(auditGuid, limit, offset); + withAuthorizationBypass(() -> { + try { + List result = adminResource.getAuditDetails(auditGuid, limit, offset); - assertNotNull(result); - assertFalse(result.isEmpty()); - verify(entityStore).getById(auditGuid, false, true); - verify(auditService).toAtlasAuditEntry(any()); + assertNotNull(result); + assertFalse(result.isEmpty()); + verify(entityStore).getById(auditGuid, false, true); + verify(auditService).toAtlasAuditEntry(any()); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test @@ -1012,11 +1172,17 @@ public void testGetAuditDetailsWithNullResult() throws Exception { AdminResource adminResource = createAdminResource(); - List result = adminResource.getAuditDetails(auditGuid, 10, 0); + withAuthorizationBypass(() -> { + try { + List result = adminResource.getAuditDetails(auditGuid, 10, 0); - assertNotNull(result); - assertTrue(result.isEmpty()); - verify(entityStore).getById(auditGuid, false, true); + assertNotNull(result); + assertTrue(result.isEmpty()); + verify(entityStore).getById(auditGuid, false, true); + } catch (AtlasBaseException e) { + throw new RuntimeException(e); + } + }); } @Test