blob: 72cb87b68ac4d3fd6ba4c966c88d50786723dd2f [file] [log] [blame]
#!/bin/bash
#
# Copyright 2016 Google Inc.
#
# 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.
start_test Request Headers affect MPS options
# Get the special file response_headers.html and test the result.
# This file has Apache request_t headers_out and err_headers_out modified
# according to the query parameter. The modification happens in
# instaweb_handler when the handler == kGenerateResponseWithOptionsHandler.
# Possible query flags include: headers_out, headers_errout, headers_override,
# and headers_combine.
function response_header_test() {
query=$1
mps_on=$2
comments_removed=$3
rm -rf $OUTDIR
mkdir -p $OUTDIR
# Get the file
echo $WGET -q -S -O - \
"$TEST_ROOT/response_headers.html?$query" '>&' $OUTDIR/header_out
check $WGET -q -S -O - \
"$TEST_ROOT/response_headers.html?$query" >& $OUTDIR/header_out
# Make sure that any MPS option headers were stripped
check_not grep -q ^PageSpeed: $OUTDIR/header_out
check_not grep -q ^ModPagespeed: $OUTDIR/header_out
# Verify if MPS is on or off
if [ $mps_on = "no" ]; then
# Verify that PageSpeed was off
check_not fgrep -q 'X-Mod-Pagespeed:' $OUTDIR/header_out
check_not fgrep -q '<script' $OUTDIR/header_out
else
# Verify that PageSpeed was on
check fgrep -q 'X-Mod-Pagespeed:' $OUTDIR/header_out
check fgrep -q '<script' $OUTDIR/header_out
fi
# Verify if comments were stripped
if [ $comments_removed = "no" ]; then
# Verify that comments were not removed
check fgrep -q '<!--' $OUTDIR/header_out
else
# Verify that comments were removed
check_not fgrep -q '<!--' $OUTDIR/header_out
fi
}
# headers_out = MPS: off
# err_headers_out =
response_header_test headers_out no no
# headers_out =
# err_headers_out = MPS: on
response_header_test headers_errout no no
# Note: The next two tests will break if remove_comments gets into the
# CoreFilter set.
# headers_out = MPS: off, Filters: -remove_comments
# err_headers_out = MPS: on, Filters: +remove_comments
# err_headers should is processed after headers_out, and so it should override
# but disabling a filter trumps enabling one. The overriding is described in
# the code for build_context_for_request.
response_header_test headers_override yes no
# headers_out = MPS: on
# err_headers_out = Filters: +remove_comments
response_header_test headers_combine yes yes