2010-10-05 12:40:05 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
from base import *
|
|
|
|
from requests import *
|
|
|
|
|
|
|
|
class TestPatternCapture(CurlRequest):
|
|
|
|
# use capture from previous regex conditional
|
|
|
|
config = """
|
|
|
|
if req.path =~ "(.*)" {
|
|
|
|
env.set "INFO" => "%1";
|
|
|
|
show_env_info;
|
|
|
|
}
|
|
|
|
"""
|
|
|
|
URL = "/path/?a_simple_query"
|
|
|
|
EXPECT_RESPONSE_BODY = "/path/"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
|
|
|
|
class TestPatternCaptureRange(CurlRequest):
|
|
|
|
# use capture from previous regex conditional
|
|
|
|
config = """
|
|
|
|
if req.path =~ "/([^/]*)/(.*)" {
|
|
|
|
env.set "INFO" => "%[1-2]";
|
|
|
|
show_env_info;
|
|
|
|
}
|
|
|
|
"""
|
|
|
|
URL = "/path/xyz"
|
|
|
|
EXPECT_RESPONSE_BODY = "pathxyz"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
|
|
|
|
class TestPatternCaptureRevRange(CurlRequest):
|
|
|
|
# use capture from previous regex conditional
|
|
|
|
config = """
|
|
|
|
if req.path =~ "/([^/]*)/(.*)" {
|
|
|
|
env.set "INFO" => "%[2-1]";
|
|
|
|
show_env_info;
|
|
|
|
}
|
|
|
|
"""
|
|
|
|
URL = "/path/xyz"
|
|
|
|
EXPECT_RESPONSE_BODY = "xyzpath"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
|
|
|
|
class TestPatternEncodingPath(CurlRequest):
|
|
|
|
# encoding path
|
|
|
|
config = """
|
|
|
|
env.set "INFO" => "%{enc:req.path}";
|
|
|
|
show_env_info;
|
|
|
|
"""
|
|
|
|
URL = "/complicated%3fpath%3d%20%24"
|
|
|
|
EXPECT_RESPONSE_BODY = "/complicated%3fpath%3d%20%24"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
|
|
|
|
class TestPatternCombine(CurlRequest):
|
|
|
|
# combine several pieces
|
|
|
|
config = """
|
|
|
|
env.set "INFO" => "Abc:%{enc:req.path}:%{req.query}:%{req.host}";
|
|
|
|
show_env_info;
|
|
|
|
"""
|
|
|
|
URL = "/complicated%3fpath%3d%20%24?a_simple_query"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
|
|
|
|
def Prepare(self):
|
|
|
|
self.EXPECT_RESPONSE_BODY = "Abc:/complicated%3fpath%3d%20%24:a_simple_query:" + self.vhost
|
|
|
|
|
|
|
|
class TestPatternEscape(CurlRequest):
|
|
|
|
config = """
|
|
|
|
env.set "INFO" => "\\\\%\\\\?\\\\$\\\\%{req.path}";
|
|
|
|
show_env_info;
|
|
|
|
"""
|
|
|
|
URL = "/abc"
|
|
|
|
EXPECT_RESPONSE_BODY = "%?$%{req.path}"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
|
|
|
|
|
|
|
|
class Test(GroupTest):
|
|
|
|
group = [
|
|
|
|
TestPatternCapture,
|
2010-10-05 12:50:21 +00:00
|
|
|
TestPatternCaptureRange,
|
|
|
|
TestPatternCaptureRevRange,
|
2010-10-05 12:40:05 +00:00
|
|
|
TestPatternEncodingPath,
|
|
|
|
TestPatternCombine,
|
|
|
|
TestPatternEscape,
|
|
|
|
]
|