/** configureURLForProtectedAccess */
  @Test
  public void testConfigureURLForProtectedAccess() throws Exception {
    CoreOAuthConsumerSupport support =
        new CoreOAuthConsumerSupport() {
          // Inherited.
          @Override
          public String getOAuthQueryString(
              ProtectedResourceDetails details,
              OAuthConsumerToken accessToken,
              URL url,
              String httpMethod,
              Map<String, String> additionalParameters) {
            return "myquerystring";
          }
        };
    support.setStreamHandlerFactory(new DefaultOAuthURLStreamHandlerFactory());
    ProtectedResourceDetails details = createMock(ProtectedResourceDetails.class);
    OAuthConsumerToken token = new OAuthConsumerToken();
    URL url = new URL("https://myhost.com/somepath?with=some&query=params&too");

    expect(details.isAcceptsAuthorizationHeader()).andReturn(true);
    replay(details);
    assertEquals(
        "https://myhost.com/somepath?with=some&query=params&too",
        support.configureURLForProtectedAccess(url, token, details, "GET", null).toString());
    verify(details);
    reset(details);

    expect(details.isAcceptsAuthorizationHeader()).andReturn(false);
    replay(details);
    assertEquals(
        "https://myhost.com/somepath?myquerystring",
        support.configureURLForProtectedAccess(url, token, details, "GET", null).toString());
    verify(details);
    reset(details);

    replay(details);
    assertEquals(
        "https://myhost.com/somepath?with=some&query=params&too",
        support.configureURLForProtectedAccess(url, token, details, "POST", null).toString());
    verify(details);
    reset(details);

    replay(details);
    assertEquals(
        "https://myhost.com/somepath?with=some&query=params&too",
        support.configureURLForProtectedAccess(url, token, details, "PUT", null).toString());
    verify(details);
    reset(details);
  }