This is an automated email from the ASF dual-hosted git repository. zwoop pushed a commit to branch 8.1.x in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/8.1.x by this push: new 794bcc8 Add header rewrite test to make sure we are not injecting end of rule char (#6340) 794bcc8 is described below commit 794bcc87c13cea20d0b00b1cf13452ac8a151a41 Author: Evan Zelkowitz <e...@apache.org> AuthorDate: Thu Jan 30 14:51:51 2020 -0700 Add header rewrite test to make sure we are not injecting end of rule char (#6340) * Add header rewrite test to make sure we are not injecting end of rule characters in to an actual header This is a regression check for the issue fixed in #5423 (cherry picked from commit a2e77e9db166b40c19240f0a1b64d302a711b74b) --- .../gold/header_rewrite-l_value.gold | 16 ++++++ .../header_rewrite/header_rewrite_l_value.test.py | 64 ++++++++++++++++++++++ .../header_rewrite/rules/rule_l_value.conf | 21 +++++++ 3 files changed, 101 insertions(+) diff --git a/tests/gold_tests/pluginTest/header_rewrite/gold/header_rewrite-l_value.gold b/tests/gold_tests/pluginTest/header_rewrite/gold/header_rewrite-l_value.gold new file mode 100644 index 0000000..8c3cf66 --- /dev/null +++ b/tests/gold_tests/pluginTest/header_rewrite/gold/header_rewrite-l_value.gold @@ -0,0 +1,16 @@ +`` +> GET http://www.example.com`` +> Host: www.example.com`` +> User-Agent: curl/`` +> Accept: */* +`` +< HTTP/1.1 200 OK +< Date: `` +< Age: `` +< Transfer-Encoding: chunked +< Proxy-Connection: keep-alive +< Server: ATS/`` +< X-First: First +< X-Last: Last +< +`` diff --git a/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py b/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py new file mode 100644 index 0000000..28247b0 --- /dev/null +++ b/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py @@ -0,0 +1,64 @@ +''' +''' +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +Test.Summary = ''' +Test for a regression of the issue fixed in +https://github.com/apache/trafficserver/pull/5423 +Insertion of header rewrite directives in to the output +''' + +Test.ContinueOnFail = True +# Define default ATS +ts = Test.MakeATSProcess("ts") +server = Test.MakeOriginServer("server") + +Test.testName = "" +request_header = {"headers": "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n", "timestamp": "1469733493.993", "body": ""} +# expected response from the origin server +response_header = {"headers": "HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n", "timestamp": "1469733493.993", "body": ""} + +# add response to the server dictionary +server.addResponse("sessionfile.log", request_header, response_header) +ts.Disk.records_config.update({ + 'proxy.config.diags.debug.enabled': 1, + 'proxy.config.diags.debug.tags': 'header.*', +}) + +# The following rule adds X-First and X-Last headers +ts.Setup.CopyAs('rules/rule_l_value.conf', Test.RunDirectory) + +ts.Disk.plugin_config.AddLine( + 'header_rewrite.so {0}/rule_l_value.conf'.format(Test.RunDirectory) +) +ts.Disk.remap_config.AddLine( + 'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port) +) +ts.Disk.remap_config.AddLine( + 'map http://www.example.com:8080 http://127.0.0.1:{0}'.format(server.Variables.Port) +) + +# [L] test +tr = Test.AddTestRun("Header Rewrite End [L]") +tr.Processes.Default.Command = 'curl --proxy 127.0.0.1:{0} "http://www.example.com" -H "Proxy-Connection: keep-alive" --verbose'.format( + ts.Variables.port) +tr.Processes.Default.ReturnCode = 0 +tr.Processes.Default.StartBefore(server, ready=When.PortOpen(server.Variables.Port)) +tr.Processes.Default.StartBefore(Test.Processes.ts) +tr.Processes.Default.Streams.stderr = "gold/header_rewrite-l_value.gold" +tr.StillRunningAfter = server +ts.Streams.All = "gold/header_rewrite-tag.gold" diff --git a/tests/gold_tests/pluginTest/header_rewrite/rules/rule_l_value.conf b/tests/gold_tests/pluginTest/header_rewrite/rules/rule_l_value.conf new file mode 100644 index 0000000..e80a8e4 --- /dev/null +++ b/tests/gold_tests/pluginTest/header_rewrite/rules/rule_l_value.conf @@ -0,0 +1,21 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +cond %{SEND_RESPONSE_HDR_HOOK} + set-header X-First "First" + set-header X-Last "Last" [L] +