]> granicus.if.org Git - icinga2/blob - test/base-utility.cpp
Merge pull request #7383 from K0nne/K0nne-patch-1
[icinga2] / test / base-utility.cpp
1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2
3 #include "base/utility.hpp"
4 #include <chrono>
5 #include <BoostTestTargetConfig.h>
6
7 using namespace icinga;
8
9 BOOST_AUTO_TEST_SUITE(base_utility)
10
11 BOOST_AUTO_TEST_CASE(comparepasswords_works)
12 {
13         BOOST_CHECK(Utility::ComparePasswords("", ""));
14
15         BOOST_CHECK(!Utility::ComparePasswords("x", ""));
16         BOOST_CHECK(!Utility::ComparePasswords("", "x"));
17
18         BOOST_CHECK(Utility::ComparePasswords("x", "x"));
19         BOOST_CHECK(!Utility::ComparePasswords("x", "y"));
20
21         BOOST_CHECK(Utility::ComparePasswords("abcd", "abcd"));
22         BOOST_CHECK(!Utility::ComparePasswords("abc", "abcd"));
23         BOOST_CHECK(!Utility::ComparePasswords("abcde", "abcd"));
24 }
25
26 BOOST_AUTO_TEST_CASE(comparepasswords_issafe)
27 {
28         using std::chrono::duration_cast;
29         using std::chrono::microseconds;
30         using std::chrono::steady_clock;
31
32         String a, b;
33
34         a.Append(200000001, 'a');
35         b.Append(200000002, 'b');
36
37         auto start1 (steady_clock::now());
38
39         Utility::ComparePasswords(a, a);
40
41         auto duration1 (steady_clock::now() - start1);
42
43         auto start2 (steady_clock::now());
44
45         Utility::ComparePasswords(a, b);
46
47         auto duration2 (steady_clock::now() - start2);
48
49         double diff = (double)duration_cast<microseconds>(duration1).count() / (double)duration_cast<microseconds>(duration2).count();
50         BOOST_WARN(0.9 <= diff && diff <= 1.1);
51 }
52
53 BOOST_AUTO_TEST_CASE(validateutf8)
54 {
55         BOOST_CHECK(Utility::ValidateUTF8("") == "");
56         BOOST_CHECK(Utility::ValidateUTF8("a") == "a");
57         BOOST_CHECK(Utility::ValidateUTF8("\xC3") == "\xEF\xBF\xBD");
58         BOOST_CHECK(Utility::ValidateUTF8("\xC3\xA4") == "\xC3\xA4");
59 }
60
61 BOOST_AUTO_TEST_SUITE_END()