@POST
    @Timed
    @Path("tables/{idOrName}/purge")
    @ApiOperation(value = "Purge Lookup Table Cache on the cluster-wide level")
    @NoAuditEvent("Cache purge only")
    @RequiresPermissions(RestPermissions.LOOKUP_TABLES_READ)
    public Map<String, CallResult<Void>> performPurge(
            @ApiParam(name = "idOrName") @PathParam("idOrName") @NotEmpty String idOrName,
            @ApiParam(name = "key") @QueryParam("key") String key) {
        return requestOnAllNodes(RemoteLookupTableResource.class, client -> client.performPurge(idOrName, key));
    }
@Test
    public void performPurge_whenAllCallsSucceedThenResponseWithPerNodeDetailsReturned() throws Exception {
        // given
        when(nodeService.allActive()).thenReturn(nodeMap());
        mock204Response("testName", "testKey", remoteLookupTableResource1);
        mock204Response("testName", "testKey", remoteLookupTableResource2);

        // when
        final Map<String, ProxiedResource.CallResult<Void>> res = underTest.performPurge("testName", "testKey");

        // then
        verify(remoteLookupTableResource1).performPurge("testName", "testKey");
        verify(remoteLookupTableResource2).performPurge("testName", "testKey");

        assertThat(res.get("node_1")).satisfies(nodeRes -> {
            assertThat(nodeRes.isCallExecuted()).isTrue();
            assertThat(nodeRes.serverErrorMessage()).isNull();
            assertThat(nodeRes.response().code()).isEqualTo(204);
            assertThat(nodeRes.response().entity()).isEmpty();
            assertThat(nodeRes.response().errorText()).isNull();
        });

        assertThat(res.get("node_2")).satisfies(nodeRes -> {
            assertThat(nodeRes.isCallExecuted()).isTrue();
            assertThat(nodeRes.serverErrorMessage()).isNull();
            assertThat(nodeRes.response().code()).isEqualTo(204);
            assertThat(nodeRes.response().entity()).isEmpty();
            assertThat(nodeRes.response().errorText()).isNull();
        });
    }