@Test
  public void testScheme() throws Exception {
    setRequestHeader("X-Forwarded-Scheme", "https");
    _rule.setHeader("X-Forwarded-Scheme");
    _rule.setHeaderValue("https");
    _rule.setScheme("https");
    _rule.matchAndApply("/", _request, _response);
    assertEquals("https", _request.getScheme());

    _rule.setScheme("http");
    _rule.matchAndApply("/", _request, _response);
    assertEquals("http", _request.getScheme());
  }
  @Test
  public void testHeaderValue() throws Exception {
    setRequestHeader("Front-End-Https", "on");
    _rule.setHeader("Front-End-Https");
    _rule.setHeaderValue("on");
    _rule.setScheme("https");
    _rule.matchAndApply("/", _request, _response);
    assertEquals("https", _request.getScheme());

    _request.setScheme(null);
    // header value doesn't match rule's value
    setRequestHeader("Front-End-Https", "off");
    _rule.matchAndApply("/", _request, _response);
    assertEquals(null, _request.getScheme());

    _request.setScheme(null);
    // header value can be any value
    setRequestHeader("Front-End-Https", "any");
    _rule.setHeaderValue(null);
    _rule.matchAndApply("/", _request, _response);
    assertEquals("https", _request.getScheme());
  }