1
package org.mortbay.jetty.handler.rewrite;
3
import org.mortbay.jetty.HttpFields;
5
public class ForwardedSchemeHeaderRuleTest extends AbstractRuleTestCase
7
private ForwardedSchemeHeaderRule _rule;
8
private HttpFields _requestHeaderFields;
10
public void setUp() throws Exception
13
_rule = new ForwardedSchemeHeaderRule();
14
_requestHeaderFields = _connection.getRequestFields();
15
_request.setScheme(null);
18
public void testDefaultScheme() throws Exception
20
setRequestHeader("X-Forwarded-Scheme", "https");
21
_rule.setHeader("X-Forwarded-Scheme");
22
_rule.setHeaderValue("https");
24
_rule.matchAndApply("/", _request, _response);
25
assertEquals("https", _request.getScheme());
28
public void testScheme() throws Exception
30
setRequestHeader("X-Forwarded-Scheme", "https");
31
_rule.setHeader("X-Forwarded-Scheme");
32
_rule.setHeaderValue("https");
33
_rule.setScheme("https");
35
_rule.matchAndApply("/", _request, _response);
36
assertEquals("https", _request.getScheme());
39
_rule.setScheme("http");
40
_rule.matchAndApply("/", _request, _response);
41
assertEquals("http", _request.getScheme());
44
public void testHeaderValue() throws Exception
46
setRequestHeader("Front-End-Https", "on");
47
_rule.setHeader("Front-End-Https");
48
_rule.setHeaderValue("on");
49
_rule.setScheme("https");
51
_rule.matchAndApply("/",_request,_response);
52
assertEquals("https",_request.getScheme());
53
_request.setScheme(null);
56
// header value doesn't match rule's value
57
setRequestHeader("Front-End-Https", "off");
59
_rule.matchAndApply("/",_request,_response);
60
assertEquals(null,_request.getScheme());
61
_request.setScheme(null);
64
// header value can be any value
65
setRequestHeader("Front-End-Https", "any");
66
_rule.setHeaderValue(null);
68
_rule.matchAndApply("/",_request,_response);
69
assertEquals("https",_request.getScheme());
72
private void setRequestHeader(String header, String headerValue)
74
_requestHeaderFields.put(header, headerValue);