mirror of
https://github.com/KingDuckZ/kamokan.git
synced 2024-12-01 00:45:41 +00:00
57 lines
1.6 KiB
C++
57 lines
1.6 KiB
C++
/* 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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "catch.hpp"
|
|
#include "escapist.hpp"
|
|
#include <utility>
|
|
#include <vector>
|
|
#include <string>
|
|
#include <boost/utility/string_view.hpp>
|
|
|
|
TEST_CASE ("Test html escaping", "[security][escape]") {
|
|
using boost::string_view;
|
|
using StrPair = std::pair<string_view, string_view>;
|
|
|
|
const std::vector<StrPair> test_data {
|
|
{"", ""},
|
|
{"a", "a"},
|
|
{"&", "&"},
|
|
{">", ">"},
|
|
{"<", "<"},
|
|
{"/", "/"},
|
|
{"\"", """},
|
|
{"'", "'"},
|
|
{">a", ">a"},
|
|
{"a>", "a>"},
|
|
{"abcd", "abcd"},
|
|
{"abcdefgh", "abcdefgh"},
|
|
{"abcdefghi", "abcdefghi"},
|
|
{"abcdefgh&", "abcdefgh&"},
|
|
{"ab&defghi", "ab&defghi"},
|
|
{"<>&123''", "<>&123''"},
|
|
{"</body>", "</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);
|
|
}
|
|
}
|