private RemotingCommand deleteAcl(ChannelHandlerContext ctx,
        RemotingCommand request) throws RemotingCommandException {
        final RemotingCommand response = RemotingCommand.createResponseCommand(null);

        DeleteAclRequestHeader requestHeader = request.decodeCommandCustomHeader(DeleteAclRequestHeader.class);

        Subject subject = Subject.of(requestHeader.getSubject());

        PolicyType policyType = PolicyType.getByName(requestHeader.getPolicyType());

        Resource resource = Resource.of(requestHeader.getResource());

        this.brokerController.getAuthorizationMetadataManager().deleteAcl(subject, policyType, resource)
            .thenAccept(nil -> {
                response.setCode(ResponseCode.SUCCESS);
            })
            .exceptionally(ex -> {
                LOGGER.error("delete acl for {} error", requestHeader.getSubject(), ex);
                return handleAuthException(response, ex);
            })
            .join();

        return response;
    }
@Test
    public void testDeleteAcl() throws RemotingCommandException {
        when(authorizationMetadataManager.deleteAcl(any(), any(), any()))
            .thenReturn(CompletableFuture.completedFuture(null));

        DeleteAclRequestHeader deleteAclRequestHeader = new DeleteAclRequestHeader();
        deleteAclRequestHeader.setSubject("User:abc");
        RemotingCommand request = RemotingCommand.createRequestCommand(RequestCode.AUTH_DELETE_ACL, deleteAclRequestHeader);
        request.setVersion(441);
        request.addExtField("AccessKey", "rocketmq");
        request.makeCustomHeaderToNet();
        RemotingCommand response = adminBrokerProcessor.processRequest(handlerContext, request);
        assertThat(response.getCode()).isEqualTo(ResponseCode.SUCCESS);
    }