@Test
void testAuthSuccessfully() {

    String service = "org.apache.dubbo.DemoService";
    String method = "test";
    long currentTimeMillis = System.currentTimeMillis();
    URL url = URL.valueOf("dubbo://10.10.10.10:2181")
            .setServiceInterface(service)
            .addParameter(Constants.ACCESS_KEY_ID_KEY, "ak")
            .addParameter(Constants.SECRET_ACCESS_KEY_KEY, "sk")
            .addParameter(CommonConstants.APPLICATION_KEY, "test-provider")
            .addParameter(Constants.SERVICE_AUTH, true);
    Invoker invoker = mock(Invoker.class);
    Invocation invocation = mock(Invocation.class);
    when(invocation.getAttachment(Constants.AK_KEY)).thenReturn("ak");
    when(invocation.getAttachment(CommonConstants.CONSUMER)).thenReturn("test-consumer");
    when(invocation.getAttachment(Constants.REQUEST_TIMESTAMP_KEY)).thenReturn(String.valueOf(currentTimeMillis));
    when(invocation.getMethodName()).thenReturn(method);
    when(invoker.getUrl()).thenReturn(url);
    String requestString = String.format(Constants.SIGNATURE_STRING_FORMAT,
            url.getColonSeparatedKey(), invocation.getMethodName(), "sk", currentTimeMillis);
    String sign = SignatureUtils.sign(requestString, "sk");
    when(invocation.getAttachment(Constants.REQUEST_SIGNATURE_KEY)).thenReturn(sign);
    ProviderAuthFilter providerAuthFilter = new ProviderAuthFilter();
    Result result = providerAuthFilter.invoke(invoker, invocation);
    assertNull(result);
}