blob: 5de3a3e7f301da435b736688c4d2a992d667c059 [file] [log] [blame]
/*
* Copyright 2012 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.
*/
// Author: sriharis@google.com (Srihari Sukumaran)
#include "net/instaweb/rewriter/public/handle_noscript_redirect_filter.h"
#include "net/instaweb/rewriter/public/rewrite_driver.h"
#include "net/instaweb/rewriter/public/rewrite_options.h"
#include "net/instaweb/rewriter/public/rewrite_test_base.h"
#include "pagespeed/kernel/base/gtest.h"
#include "pagespeed/kernel/base/string.h"
namespace net_instaweb {
class HandleNoscriptRedirectFilterTest : public RewriteTestBase {
protected:
virtual void SetUp() {
options()->EnableFilter(RewriteOptions::kHandleNoscriptRedirect);
RewriteTestBase::SetUp();
rewrite_driver()->AddFilters();
}
};
TEST_F(HandleNoscriptRedirectFilterTest, TestOneHead) {
GoogleString input_html =
"<head></head><body><img src=\"http://test.com/1.jpeg\"/></body>";
GoogleString output_html =
"<head><link rel=\"canonical\" href=\"http://test.com/one_head.html\"/>"
"</head><body><img src=\"http://test.com/1.jpeg\"/></body>";
ValidateExpected("one_head", input_html, output_html);
}
TEST_F(HandleNoscriptRedirectFilterTest, TestMultipleHeads) {
GoogleString input_html =
"<head></head><head></head>"
"<body><img src=\"http://test.com/1.jpeg\"/></body>";
GoogleString output_html =
"<head>"
"<link rel=\"canonical\" href=\"http://test.com/multiple_heads.html\"/>"
"</head><head></head><body><img src=\"http://test.com/1.jpeg\"/></body>";
ValidateExpected("multiple_heads", input_html, output_html);
}
TEST_F(HandleNoscriptRedirectFilterTest, TestNoHead) {
GoogleString input_html =
"<body><img src=\"http://test.com/1.jpeg\"/></body>";
GoogleString output_html =
"<head><link rel=\"canonical\" href=\"http://test.com/no_head.html\"/>"
"</head><body><img src=\"http://test.com/1.jpeg\"/></body>";
ValidateExpected("no_head", input_html, output_html);
}
TEST_F(HandleNoscriptRedirectFilterTest, TestOneHeadCanonical) {
GoogleString input_html =
"<head><link rel=\"canonical\" href=\"http://test.com/foo.html\"></head>"
"<body><img src=\"http://test.com/1.jpeg\"/></body>";
ValidateNoChanges("one_head_canonical", input_html);
}
TEST_F(HandleNoscriptRedirectFilterTest, TestTwoHeadCanonical) {
GoogleString input_html =
"<head></head>"
"<head><link rel=\"canonical\" href=\"http://test.com/foo.html\"/>"
"</head><body><img src=\"http://test.com/1.jpeg\"/></body>";
GoogleString output_html =
"<head><link rel=\"canonical\" "
"href=\"http://test.com/two_head_canonical.html\"/></head>"
"<head><link rel=\"canonical\" href=\"http://test.com/foo.html\"/></head>"
"<body><img src=\"http://test.com/1.jpeg\"/></body>";
ValidateExpected("two_head_canonical", input_html, output_html);
}
TEST_F(HandleNoscriptRedirectFilterTest, TestTwoLinksInHead) {
GoogleString input_html =
"<head><link rel=\"canonical\" href=\"http://test.com/foo.html\">"
"<link href=special.css rel=stylesheet type=text/css/></head>"
"<body><img src=\"http://test.com/1.jpeg\"/></body>";
ValidateNoChanges("two_links_in_head", input_html);
}
} // namespace net_instaweb