test_class.file: dubbo-plugin/dubbo-auth/src/test/java/org/apache/dubbo/auth/AccessKeyAuthenticatorTest.java
test_class.identifier: AccessKeyAuthenticatorTest
test_case.body: @Test
      void testGetAccessKeyPairFailed() {
          URL url = URL.valueOf("dubbo://10.10.10.10:2181")
                  .addParameter(Constants.ACCESS_KEY_ID_KEY, "ak");
          AccessKeyAuthenticator helper = new AccessKeyAuthenticator();
          Invocation invocation = mock(Invocation.class);
          assertThrows(RuntimeException.class, () -> helper.getAccessKeyPair(invocation, url));
      }
test_case.class_method_signature: AccessKeyAuthenticatorTest.testGetAccessKeyPairFailed()
test_case.full_signature: @Test void testGetAccessKeyPairFailed()
test_case.identifier: testGetAccessKeyPairFailed
test_case.invocations: addParameter valueOf mock assertThrows getAccessKeyPair
test_case.modifiers: @Test
test_case.parameters: ()
test_case.return: void
test_case.signature: void testGetAccessKeyPairFailed()
focal_class.file: dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/AccessKeyAuthenticator.java
focal_class.identifier: AccessKeyAuthenticator
focal_class.interfaces: implements Authenticator
focal_class.class_method_signature: AccessKeyAuthenticator.sign(Invocation invocation, URL url)
focal_class.full_signature: @Override public void sign(Invocation invocation, URL url)
focal_class.identifier: sign
focal_class.modifiers: @Override public
focal_class.parameters: (Invocation invocation, URL url)
focal_class.return: void
focal_class.signature: void sign(Invocation invocation, URL url)
focal_class.class_method_signature: AccessKeyAuthenticator.authenticate(Invocation invocation, URL url)
focal_class.full_signature: @Override public void authenticate(Invocation invocation, URL url)
focal_class.identifier: authenticate
focal_class.modifiers: @Override public
focal_class.parameters: (Invocation invocation, URL url)
focal_class.return: void
focal_class.signature: void authenticate(Invocation invocation, URL url)
focal_class.class_method_signature: AccessKeyAuthenticator.getAccessKeyPair(Invocation invocation, URL url)
focal_class.full_signature:  AccessKeyPair getAccessKeyPair(Invocation invocation, URL url)
focal_class.identifier: getAccessKeyPair
focal_class.parameters: (Invocation invocation, URL url)
focal_class.return: AccessKeyPair
focal_class.signature: AccessKeyPair getAccessKeyPair(Invocation invocation, URL url)
focal_class.class_method_signature: AccessKeyAuthenticator.getSignature(URL url, Invocation invocation, String secretKey, String time)
focal_class.full_signature:  String getSignature(URL url, Invocation invocation, String secretKey, String time)
focal_class.identifier: getSignature
focal_class.parameters: (URL url, Invocation invocation, String secretKey, String time)
focal_class.return: String
focal_class.signature: String getSignature(URL url, Invocation invocation, String secretKey, String time)
focal_method.body: AccessKeyPair getAccessKeyPair(Invocation invocation, URL url) {
          AccessKeyStorage accessKeyStorage = ExtensionLoader.getExtensionLoader(AccessKeyStorage.class)
                  .getExtension(url.getParameter(Constants.ACCESS_KEY_STORAGE_KEY, Constants.DEFAULT_ACCESS_KEY_STORAGE));
  
          AccessKeyPair accessKeyPair = null;
          try {
              accessKeyPair = accessKeyStorage.getAccessKey(url, invocation);
              if (accessKeyPair == null || StringUtils.isEmpty(accessKeyPair.getAccessKey()) || StringUtils.isEmpty(accessKeyPair.getSecretKey())) {
                  throw new AccessKeyNotFoundException("AccessKeyId or secretAccessKey not found");
              }
          } catch (Exception e) {
              throw new RuntimeException("Can't load the AccessKeyPair from accessKeyStorage", e);
          }
          return accessKeyPair;
      }
focal_method.class_method_signature: AccessKeyAuthenticator.getAccessKeyPair(Invocation invocation, URL url)
focal_method.full_signature:  AccessKeyPair getAccessKeyPair(Invocation invocation, URL url)
focal_method.identifier: getAccessKeyPair
focal_method.invocations: getExtension getExtensionLoader getParameter getAccessKey isEmpty getAccessKey isEmpty getSecretKey
focal_method.parameters: (Invocation invocation, URL url)
focal_method.return: AccessKeyPair
focal_method.signature: AccessKeyPair getAccessKeyPair(Invocation invocation, URL url)