1 /* Copyright (C) 2020 Greenbone Networks GmbH
2 *
3 * SPDX-License-Identifier: AGPL-3.0-or-later
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Affero General Public License as
7 * published by the Free Software Foundation, either version 3 of the
8 * License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #include "manage_sql.c"
20
21 #include <cgreen/cgreen.h>
22
23 Describe (manage_sql);
BeforeEach(manage_sql)24 BeforeEach (manage_sql) {}
AfterEach(manage_sql)25 AfterEach (manage_sql) {}
26
27 /* truncate_text */
28
29 #define PASS(port) assert_that (validate_results_port (port), is_equal_to (0))
30 #define FAIL(port) assert_that (validate_results_port (port), is_equal_to (1))
31
Ensure(manage_sql,validate_results_port_validates)32 Ensure (manage_sql, validate_results_port_validates)
33 {
34 PASS ("cpe:/a:.joomclan:com_joomclip");
35 PASS ("cpe:two");
36 PASS ("general/tcp");
37 PASS ("general/udp");
38 PASS ("general/Host_Details");
39 PASS ("20/udp");
40 PASS ("20/UDP");
41 PASS ("20/dccp");
42 PASS ("1/tcp");
43 PASS ("8080/tcp");
44 PASS ("65535/tcp");
45
46 FAIL (NULL);
47 FAIL ("cpe:/a:.joomclan:com_joomclip cpe:two");
48 FAIL ("0/tcp");
49 FAIL ("65536/tcp");
50 FAIL ("20/tcp (IANA: ftp-data)");
51 FAIL ("20/tcp,21/tcp");
52 FAIL ("20/tcp;21/tcp");
53 FAIL ("20/tcp 21/tcp");
54 FAIL ("20-21/tcp");
55 FAIL ("20/tcp-21/tcp");
56 FAIL ("-1/tcp");
57 FAIL ("ftp-data (20/tcp)");
58 FAIL ("80");
59 FAIL ("ftp-data");
60 FAIL ("udp");
61 }
62
63 #define CMP(one, two, ret) assert_that (streq_ignore_ws (one, two), is_equal_to (ret))
64
65 #define EQ2(one, two) CMP(one, two, 1); CMP(two, one, 1)
66 #define EQ(string) CMP(string, string, 1)
67
Ensure(manage_sql,streq_ignore_ws_finds_equal)68 Ensure (manage_sql, streq_ignore_ws_finds_equal)
69 {
70 EQ ("abc");
71 EQ (" abc");
72 EQ ("abc ");
73 EQ ("ab c");
74 EQ ("");
75 EQ (".");
76 EQ (" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-=_)(*&^%$#@!~\"':}{<>?");
77 EQ ("three little words");
78 }
79
Ensure(manage_sql,streq_ignore_ws_finds_equal_despite_ws)80 Ensure (manage_sql, streq_ignore_ws_finds_equal_despite_ws)
81 {
82 EQ2 ("abc", " abc");
83 EQ2 ("abc", "abc ");
84 EQ2 ("abc", "ab c");
85 EQ2 ("abc", " a b c ");
86
87 EQ2 ("abc", "\nabc");
88 EQ2 ("abc", "abc\n");
89 EQ2 ("abc", "ab\nc");
90 EQ2 ("abc", "\na\nb\n\n\n\nc\n");
91
92 EQ2 ("abc", "\tabc");
93 EQ2 ("abc", "abc\t");
94 EQ2 ("abc", "ab\tc");
95 EQ2 ("abc", "\ta\tb\t\t\t\tc\t");
96
97 EQ2 ("abcd", "\ta\nb \t\nc \t\t\n\nd\t\n ");
98
99 EQ2 ("", " ");
100 EQ2 ("", "\t");
101 EQ2 ("", "\n");
102 EQ2 ("", " ");
103 EQ2 ("", "\t\t");
104 EQ2 ("", "\n\n");
105 EQ2 ("", " \n\t \n\n\t\t");
106
107 EQ2 (" \n\t \n\n\t\t", " \n\t \n\n\t\t");
108 }
109
110 #define DIFF(one, two) CMP(one, two, 0); CMP(two, one, 0)
111
Ensure(manage_sql,streq_ignore_ws_finds_diff)112 Ensure (manage_sql, streq_ignore_ws_finds_diff)
113 {
114 DIFF ("abc", "abcd");
115 DIFF ("abc", "dabc");
116 DIFF ("abc", "abdc");
117 DIFF ("abc", "xyz");
118 DIFF ("abc", "");
119 DIFF ("abc", ".");
120 DIFF ("abc", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-=_)(*&^%$#@!~\"':}{<>?");
121 }
122
Ensure(manage_sql,streq_ignore_ws_finds_diff_incl_ws)123 Ensure (manage_sql, streq_ignore_ws_finds_diff_incl_ws)
124 {
125 DIFF ("zabc", " abc");
126 DIFF ("zabc", "abc ");
127 DIFF ("zabc", "ab c");
128 DIFF ("zabc", " a b c ");
129
130 DIFF ("zabc", "\nabc");
131 DIFF ("zabc", "abc\n");
132 DIFF ("zabc", "ab\nc");
133 DIFF ("zabc", "\na\nb\n\n\n\nc\n");
134
135 DIFF ("zabc", "\tabc");
136 DIFF ("zabc", "abc\t");
137 DIFF ("zabc", "ab\tc");
138 DIFF ("zabc", "\ta\tb\t\t\t\tc\t");
139
140 DIFF ("zabcd", "\ta\nb \t\nc \t\t\n\nd\t\n ");
141
142 DIFF ("a", " ");
143 DIFF ("a", "\t");
144 DIFF ("a", "\n");
145 DIFF ("a", " ");
146 DIFF ("a", "\t\t");
147 DIFF ("a", "\n\n");
148 DIFF ("a", " \n\t \n\n\t\t");
149
150 DIFF ("a \n\t \n\n\t\t", " \n\t \n\n\t\t");
151 DIFF (" \n\t \na\n\t\t", " \n\t \n\n\t\t");
152 DIFF (" \n\t \n\n\t\ta", " \n\t \n\n\t\t");
153 }
154
Ensure(manage_sql,streq_ignore_ws_handles_null)155 Ensure (manage_sql, streq_ignore_ws_handles_null)
156 {
157 EQ (NULL);
158 DIFF ("abc", NULL);
159 }
160
161 /* Test suite. */
162
163 int
main(int argc,char ** argv)164 main (int argc, char **argv)
165 {
166 TestSuite *suite;
167
168 suite = create_test_suite ();
169
170 add_test_with_context (suite, manage_sql, validate_results_port_validates);
171
172 add_test_with_context (suite, manage_sql, streq_ignore_ws_finds_equal);
173 add_test_with_context (suite, manage_sql, streq_ignore_ws_finds_equal_despite_ws);
174 add_test_with_context (suite, manage_sql, streq_ignore_ws_finds_diff);
175 add_test_with_context (suite, manage_sql, streq_ignore_ws_finds_diff_incl_ws);
176 add_test_with_context (suite, manage_sql, streq_ignore_ws_handles_null);
177
178 if (argc > 1)
179 return run_single_test (suite, argv[1], create_text_reporter ());
180
181 return run_test_suite (suite, create_text_reporter ());
182 }
183