/*
* Copyright 2012 Future Systems
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.krakenapps.httpd.impl;
import javax.servlet.ServletRegistration;
import org.junit.Test;
import static org.junit.Assert.*;
public class ServletDispatcherTest {
@Test
public void testSubstringPath() {
ServletDispatcher d = new ServletDispatcher();
MockServlet s1 = new MockServlet(1);
MockServlet s2 = new MockServlet(2);
ServletRegistration reg1 = d.addServlet("s1", s1);
reg1.addMapping("/log/*");
ServletRegistration reg2 = d.addServlet("s2", s2);
reg2.addMapping("//*");
ServletMatchResult r = d.matches("/page/login_start.html");
assertEquals(2, id(r));
ServletMatchResult r2 = d.matches("/logger.html");
assertEquals(2, id(r2));
}
@Test
public void test() {
ServletDispatcher d = new ServletDispatcher();
MockServlet s1 = new MockServlet(1);
MockServlet s2 = new MockServlet(2);
MockServlet s3 = new MockServlet(3);
MockServlet s4 = new MockServlet(4);
ServletRegistration reg1 = d.addServlet("s1", s1);
reg1.addMapping("/foo/bar/*");
ServletRegistration reg2 = d.addServlet("s2", s2);
reg2.addMapping("/baz/*");
ServletRegistration reg3 = d.addServlet("s3", s3);
reg3.addMapping("/catalog");
ServletRegistration reg4 = d.addServlet("s4", s4);
reg4.addMapping("*.bop");
ServletMatchResult r = d.matches("/foo/bar/index.html");
assertEquals(1, id(r));
r = d.matches("/foo/bar/index.bop");
assertEquals(1, id(r));
r = d.matches("/baz");
assertEquals(2, id(r));
r = d.matches("/baz/index.html");
assertEquals(2, id(r));
r = d.matches("/catalog");
assertEquals(3, id(r));
r = d.matches("/catalog/index.html");
assertNull(r);
r = d.matches("/catalog/racecar.bop");
assertEquals(4, id(r));
r = d.matches("/index.bop");
assertEquals(4, id(r));
}
@Test
public void testPathInfo() {
ServletDispatcher d = new ServletDispatcher();
MockServlet s1 = new MockServlet(1);
ServletRegistration reg1 = d.addServlet("s1", s1);
reg1.addMapping("/foo/*");
ServletMatchResult r = d.matches("/foo/bar?login_name=test");
assertNotNull(r);
assertEquals("/foo", r.getServletPath());
assertEquals("/bar", r.getPathInfo());
r = d.matches("/foo/bar");
assertNotNull(r);
assertEquals("/foo", r.getServletPath());
assertEquals("/bar", r.getPathInfo());
}
private int id(ServletMatchResult r) {
return ((MockServlet) r.getServlet()).getId();
}
}