~ubuntu-branches/ubuntu/utopic/jetty/utopic-proposed

« back to all changes in this revision

Viewing changes to contrib/jetty-rewrite-handler/src/test/java/org/mortbay/jetty/handler/rewrite/RewriteHandlerTest.java

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2009-08-09 08:48:10 UTC
  • Revision ID: james.westby@ubuntu.com-20090809084810-k522b97ind2robyd
ImportĀ upstreamĀ versionĀ 6.1.19

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// ========================================================================
 
2
// Copyright 2006 Mort Bay Consulting Pty. Ltd.
 
3
// ------------------------------------------------------------------------
 
4
// Licensed under the Apache License, Version 2.0 (the "License");
 
5
// you may not use this file except in compliance with the License.
 
6
// You may obtain a copy of the License at 
 
7
// http://www.apache.org/licenses/LICENSE-2.0
 
8
// Unless required by applicable law or agreed to in writing, software
 
9
// distributed under the License is distributed on an "AS IS" BASIS,
 
10
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
11
// See the License for the specific language governing permissions and
 
12
// limitations under the License.
 
13
// ========================================================================
 
14
package org.mortbay.jetty.handler.rewrite;
 
15
 
 
16
import java.io.IOException;
 
17
 
 
18
import javax.servlet.ServletException;
 
19
import javax.servlet.http.HttpServletRequest;
 
20
import javax.servlet.http.HttpServletResponse;
 
21
 
 
22
import org.mortbay.jetty.handler.AbstractHandler;
 
23
 
 
24
 
 
25
public class RewriteHandlerTest extends AbstractRuleTestCase
 
26
{   
 
27
    RewriteHandler _handler;
 
28
    RewritePatternRule _rule1;
 
29
    RewritePatternRule _rule2;
 
30
    RewritePatternRule _rule3;
 
31
    
 
32
    
 
33
    public void setUp() throws Exception
 
34
    {
 
35
        _handler=new RewriteHandler();
 
36
        _server.setHandler(_handler);
 
37
        _handler.setHandler(new AbstractHandler(){
 
38
 
 
39
            public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException
 
40
            {
 
41
                response.setStatus(201);
 
42
                request.setAttribute("target",target);
 
43
                request.setAttribute("URI",request.getRequestURI());
 
44
                request.setAttribute("info",request.getPathInfo());
 
45
            }
 
46
            
 
47
        });
 
48
        
 
49
        _rule1 = new RewritePatternRule();
 
50
        _rule1.setPattern("/aaa/*");
 
51
        _rule1.setReplacement("/bbb");
 
52
        _rule2 = new RewritePatternRule();
 
53
        _rule2.setPattern("/bbb/*");
 
54
        _rule2.setReplacement("/ccc");
 
55
        _rule3 = new RewritePatternRule();
 
56
        _rule3.setPattern("/ccc/*");
 
57
        _rule3.setReplacement("/ddd");
 
58
        
 
59
        _handler.setRules(new Rule[]{_rule1,_rule2,_rule3});
 
60
        
 
61
        super.setUp();
 
62
    }    
 
63
    
 
64
    
 
65
    public void test() throws Exception
 
66
    {
 
67
        _response.setStatus(200);
 
68
        _request.setHandled(false);
 
69
        _handler.setOriginalPathAttribute("/before");
 
70
        _handler.setRewriteRequestURI(false);
 
71
        _handler.setRewritePathInfo(false);
 
72
        _request.setRequestURI("/foo/bar");
 
73
        _request.setPathInfo("/foo/bar");
 
74
        _handler.handle("/foo/bar",_request,_response,0);
 
75
        assertEquals(201,_response.getStatus());
 
76
        assertEquals("/foo/bar",_request.getAttribute("target"));
 
77
        assertEquals("/foo/bar",_request.getAttribute("URI"));
 
78
        assertEquals("/foo/bar",_request.getAttribute("info"));
 
79
        assertEquals(null,_request.getAttribute("before"));
 
80
        
 
81
 
 
82
        _response.setStatus(200);
 
83
        _request.setHandled(false);
 
84
        _handler.setOriginalPathAttribute(null);
 
85
        _request.setRequestURI("/aaa/bar");
 
86
        _request.setPathInfo("/aaa/bar");
 
87
        _handler.handle("/aaa/bar",_request,_response,0);
 
88
        assertEquals(201,_response.getStatus());
 
89
        assertEquals("/ddd/bar",_request.getAttribute("target"));
 
90
        assertEquals("/aaa/bar",_request.getAttribute("URI"));
 
91
        assertEquals("/aaa/bar",_request.getAttribute("info"));
 
92
        assertEquals(null,_request.getAttribute("before"));
 
93
        
 
94
 
 
95
        _response.setStatus(200);
 
96
        _request.setHandled(false);
 
97
        _handler.setOriginalPathAttribute("before");
 
98
        _handler.setRewriteRequestURI(true);
 
99
        _handler.setRewritePathInfo(true);
 
100
        _request.setRequestURI("/aaa/bar");
 
101
        _request.setPathInfo("/aaa/bar");
 
102
        _handler.handle("/aaa/bar",_request,_response,0);
 
103
        assertEquals(201,_response.getStatus());
 
104
        assertEquals("/ddd/bar",_request.getAttribute("target"));
 
105
        assertEquals("/ddd/bar",_request.getAttribute("URI"));
 
106
        assertEquals("/ddd/bar",_request.getAttribute("info"));
 
107
        assertEquals("/aaa/bar",_request.getAttribute("before"));
 
108
        
 
109
 
 
110
        _response.setStatus(200);
 
111
        _request.setHandled(false);
 
112
        _rule2.setTerminating(true);
 
113
        _request.setRequestURI("/aaa/bar");
 
114
        _request.setPathInfo("/aaa/bar");
 
115
        _handler.handle("/aaa/bar",_request,_response,0);
 
116
        assertEquals(201,_response.getStatus());
 
117
        assertEquals("/ccc/bar",_request.getAttribute("target"));
 
118
        assertEquals("/ccc/bar",_request.getAttribute("URI"));
 
119
        assertEquals("/ccc/bar",_request.getAttribute("info"));
 
120
        assertEquals("/aaa/bar",_request.getAttribute("before"));
 
121
 
 
122
        _response.setStatus(200);
 
123
        _request.setHandled(false);
 
124
        _rule2.setHandling(true);
 
125
        _request.setAttribute("before",null);
 
126
        _request.setAttribute("target",null);
 
127
        _request.setAttribute("URI",null);
 
128
        _request.setAttribute("info",null);
 
129
        _request.setRequestURI("/aaa/bar");
 
130
        _request.setPathInfo("/aaa/bar");
 
131
        _handler.handle("/aaa/bar",_request,_response,0);
 
132
        assertEquals(200,_response.getStatus());
 
133
        assertEquals(null,_request.getAttribute("target"));
 
134
        assertEquals(null,_request.getAttribute("URI"));
 
135
        assertEquals(null,_request.getAttribute("info"));
 
136
        assertEquals("/aaa/bar",_request.getAttribute("before"));
 
137
        assertTrue(_request.isHandled());
 
138
        
 
139
        
 
140
        
 
141
    }
 
142
}