/* Copyright 2017, Michele Santullo * This file is part of "tawashi". * * "tawashi" is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * "tawashi" is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with "tawashi". If not, see . */ #include "catch.hpp" #include "escapist.hpp" #include #include #include #include TEST_CASE ("Test html escaping", "[security][escape]") { using boost::string_view; using StrPair = std::pair; const std::vector test_data { {"", ""}, {"a", "a"}, {"&", "&"}, {">", ">"}, {"<", "<"}, {"/", "/"}, {"\"", """}, {"'", "'"}, {">a", ">a"}, {"a>", "a>"}, {"abcd", "abcd"}, {"abcdefgh", "abcdefgh"}, {"abcdefghi", "abcdefghi"}, {"abcdefgh&", "abcdefgh&"}, {"ab&defghi", "ab&defghi"}, {"<>&123''", "<>&123''"}, {"", "</body>"}, {"&\"lol\"&", "&"lol"&"} }; tawashi::Escapist esc; for (const auto& p : test_data) { const auto& in = p.first; const auto& expected = p.second; std::string out = esc.escape_html(in); CHECK(out == expected); } }