blob: 50530c5a9c3fb090b955ffada346ed0bb2487c77 [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.
# Test to make sure dynamically defined url-valued attributes are rewritten by
# rewrite_domains. See mod_pagespeed_test/rewrite_domains.html: in addition
# to having one <img> URL, one <form> URL, and one <a> url it also has one
# <span src=...> URL, one <hr imgsrc=...> URL, one <hr src=...> URL, and one
# <blockquote cite=...> URL, all referencing src.example.com. The first three
# should be rewritten because of hardcoded rules, the span.src and hr.imgsrc
# should be rewritten because of UrlValuedAttribute directives, the hr.src
# should be left unmodified, and the blockquote.src should be rewritten as an
# image because of a UrlValuedAttribute override. The rewritten ones should
# all be rewritten to dst.example.com.
HOST_NAME="http://url-attribute.example.com"
TEST="$HOST_NAME/mod_pagespeed_test"
REWRITE_DOMAINS="$TEST/rewrite_domains.html"
UVA_EXTEND_CACHE="$TEST/url_valued_attribute_extend_cache.html"
UVA_EXTEND_CACHE+="?PageSpeedFilters=core,+left_trim_urls"
start_test Rewrite domains in dynamically defined url-valued attributes.
RESPONSE_OUT=$(http_proxy=$SECONDARY_HOSTNAME $WGET_DUMP $REWRITE_DOMAINS)
MATCHES=$(echo "$RESPONSE_OUT" | fgrep -c http://dst.example.com)
check [ $MATCHES -eq 6 ]
MATCHES=$(echo "$RESPONSE_OUT" | \
fgrep -c '<hr src=http://src.example.com/hr-image>')
check [ $MATCHES -eq 1 ]
start_test Additional url-valued attributes are fully respected.
function count_exact_matches() {
# Needed because "fgrep -c" counts lines with matches, not pure matches.
fgrep -o "$1" | wc -l
}
# There are ten resources that should be optimized.
http_proxy=$SECONDARY_HOSTNAME \
fetch_until $UVA_EXTEND_CACHE 'count_exact_matches .pagespeed.' 10
# Make sure <custom d=...> isn't modified at all, but that everything else is
# recognized as a url and rewritten from ../foo to /foo. This means that only
# one reference to ../mod_pagespeed should remain, <custom d=...>.
http_proxy=$SECONDARY_HOSTNAME \
fetch_until $UVA_EXTEND_CACHE 'grep -c d=.[.][.]/mod_pa' 1
http_proxy=$SECONDARY_HOSTNAME \
fetch_until $UVA_EXTEND_CACHE 'fgrep -c ../mod_pa' 1
# There are ten images that should be optimized, so grep including .ic.
http_proxy=$SECONDARY_HOSTNAME \
fetch_until $UVA_EXTEND_CACHE 'count_exact_matches .pagespeed.ic' 10
start_test url-valued stylesheet attributes are properly handled
function url_valued_attribute_css_optimization_status() {
local input=$(cat)
if [[ $(echo "$input" | fgrep -o ".pagespeed.cf." | wc -l) != 7 ]]; then
echo incomplete # still some unoptimized css files
elif ! echo "$input" | \
grep -q "<style>.bold{font-weight:bold}</style>"; then
echo incomplete # bold.css still not inlined
else
echo complete
fi
}
URL="$TEST/url_valued_attribute_css.html"
URL+="?PageSpeedFilters=debug,combine_css,rewrite_css,inline_css"
http_proxy=$SECONDARY_HOSTNAME fetch_until -save "$URL" \
url_valued_attribute_css_optimization_status complete
OUT=$(cat $FETCH_UNTIL_OUTFILE)
check_from "$OUT" grep \
"Could not combine over barrier: custom or alternate stylesheet attribute"
check_from "$OUT" grep 'link data-stylesheet=[^<]*.pagespeed.cf'
LOOK_FOR="<span data-stylesheet-a=[^<]*.pagespeed.cf"
LOOK_FOR+="[^<]*data-stylesheet-b=[^<]*.pagespeed.cf"
LOOK_FOR+="[^<]*data-stylesheet-c=[^<]*.pagespeed.cf"
check_from "$OUT" grep "$LOOK_FOR"
check_from "$OUT" grep "<link rel=invalid data-stylesheet=[^<]*.pagespeed.cf"
check_from "$OUT" grep \
"<style data-stylesheet=[^<]*.pagespeed.cf[^>]*>.bold{font-weight:bold}"
check_not_from "$OUT" fgrep "blue.css+yellow.css"