1 /* Copyright (C) 2019-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.c"
20
21 #include <cgreen/cgreen.h>
22
23 Describe (manage);
BeforeEach(manage)24 BeforeEach (manage) {}
AfterEach(manage)25 AfterEach (manage) {}
26
27 /* truncate_certificate */
28
Ensure(manage,truncate_certificate_given_truncated)29 Ensure (manage, truncate_certificate_given_truncated)
30 {
31 const gchar *given;
32 gchar *truncated;
33
34 given = "-----BEGIN CERTIFICATE-----\n"
35 "MIIEjTCCAvWgAwIBAgIMWtd9bxgrX+9SgEHXMA0GCSqGSIb3DQEBCwUAMGIxKjAo\n"
36 "BgNVBAsTIUNlcnRpZmljYXRlIEF1dGhvcml0eSBmb3IgYy5sb2NhbDESMBAGA1UE\n"
37 "ChMJR1ZNIFVzZXJzMRMwEQYDVQQHEwpPc25hYnJ1ZWNrMQswCQYDVQQGEwJERTAe\n"
38 "Fw0xODA0MTgxNzE2MzFaFw0yODA0MTcxNzE2MzFaMGIxKjAoBgNVBAsTIUNlcnRp\n"
39 "ZmljYXRlIEF1dGhvcml0eSBmb3IgYy5sb2NhbDESMBAGA1UEChMJR1ZNIFVzZXJz\n"
40 "MRMwEQYDVQQHEwpPc25hYnJ1ZWNrMQswCQYDVQQGEwJERTCCAaIwDQYJKoZIhvcN\n"
41 "AQEBBQADggGPADCCAYoCggGBAN7Xjg8ZUAVg3URxV8DJ7DhArjEzR7m1BKYC3PPu\n"
42 "yaAnRZqed4eZo9t6Gk+EvZxjkyN79Sooz9xpYV43naBLzTJlgbTIhkKDi9t9kB9O\n"
43 "5kA8b5YxKDHaVmmJ1oxR3k115fLtBcwyjt6juL4FvyP+zJ7v1bLcXSjgUytuAce1\n"
44 "C2BTLP8IaLde1bkhxINnD6moEarsZex0THQffPof6nI1gaPiDOXorzWCTegMnT1s\n"
45 "26jRvQog8H7Tw+TvGwENW28MwrTy5ZnzwWIND64vmPy3oC5LQhTacd++84CstuZ9\n"
46 "nI4mXh++gXRqP7lx9CSpVH+z7/Lo9S3JkWvl756m1ieJtX6bJtAadDdOsofbgasN\n"
47 "xhJ42oxjjxdYdH5s0AX2frv+OvnBIWCGN9/6Tws1VCAF1SjIB7GRuyM7FcUoONtx\n"
48 "svQiwNal/hOCN6DbCSM/ff76G4VwKOUlpY3GJdveTugum7V7VN9hYBSBcK45diAd\n"
49 "b0ZZiRSq9T61/zFayeVQWPiWfwIDAQABo0MwQTAPBgNVHRMBAf8EBTADAQH/MA8G\n"
50 "A1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFBHD0+uQ+JXQmoUvLIJGldpGgaUdMA0G\n"
51 "CSqGSIb3DQEBCwUAA4IBgQCqW2XCz2zMW14oKUu0jq33MKUE0MKG2VUy/JjVyUl9\n"
52 "Vg2ZIuDFnX3qpGZJaHDOeFz3xYGcLny0QuKm4I+zYL6/rmDMhcHyuO3N+cOc+x4X\n"
53 "4PRz8jydhrOMED16Tg0+o5L3JDplWpmsqUKu+sY378ZNdGPBIE1LIIzOjH296SWe\n"
54 "0fztTTHLr56ftmakwC241Etmgf8ow95kxhFxbxB0hUFcIkCvi0S9eZ4ip0v/Yo2z\n"
55 "lZ/DYl9GnkdnwlHB/f1/iZzrn7arEKwhqE8L/STJH+K0nJT4IGQZnyUfId7Jb+lO\n"
56 "HWIyYyrUHkqIRqfybZrDXPTYGW/NvheOm8OTQmz65ySLWWNVpy2TRoLD3198GSF9\n"
57 "fnkIVNvsMB5h5uCzboV+HqkYX72wg1Vfda0/8M/riYbEaxNcKKfuReoPNoCOBC8h\n"
58 "NKOM6mBOCkc7MifVDVwCxaVlvGX5fKzHDhfSoNreotdL2mFJfk15Jjk4w3bmgiVT\n"
59 "u1UuTizi5guqzOf+57s4o7Q=\n"
60 "-----END CERTIFICATE-----\n";
61
62 truncated = truncate_certificate (given);
63 assert_that (truncated, is_equal_to_string (given));
64 g_free (truncated);
65 }
66
67 /* truncate_text */
68
Ensure(manage,truncate_text_truncates)69 Ensure (manage, truncate_text_truncates)
70 {
71 gchar *given;
72
73 given = g_strdup ("1234567890");
74
75 truncate_text (given, 4, 0 /* Not XML. */, NULL /* No suffix. */);
76 assert_that (given, is_equal_to_string ("1234"));
77 g_free (given);
78 }
79
Ensure(manage,truncate_text_does_not_truncate)80 Ensure (manage, truncate_text_does_not_truncate)
81 {
82 const gchar *original;
83 gchar *given;
84
85 original = "1234567890";
86 given = g_strdup (original);
87 truncate_text (given, 40, 0 /* Not XML. */, NULL /* No suffix. */);
88 assert_that (given, is_equal_to_string (original));
89 g_free (given);
90 }
91
Ensure(manage,truncate_text_handles_null)92 Ensure (manage, truncate_text_handles_null)
93 {
94 truncate_text (NULL, 40, 0 /* Not XML. */, NULL /* No suffix. */);
95 }
96
Ensure(manage,truncate_text_appends_suffix)97 Ensure (manage, truncate_text_appends_suffix)
98 {
99 const gchar *suffix;
100 gchar *given;
101
102 suffix = "abc";
103 given = g_strdup ("1234567890");
104
105 truncate_text (given, strlen (suffix) + 1, 0 /* Not XML. */, suffix);
106 assert_that (given, is_equal_to_string ("1abc"));
107 g_free (given);
108 }
109
Ensure(manage,truncate_text_skips_suffix)110 Ensure (manage, truncate_text_skips_suffix)
111 {
112 const gchar *suffix;
113 gchar *given;
114
115 suffix = "abc";
116 given = g_strdup ("1234567890");
117
118 truncate_text (given,
119 /* Too little space for suffix. */
120 strlen (suffix) - 1,
121 /* Not XML. */
122 0,
123 suffix);
124 assert_that (given, is_equal_to_string ("12"));
125 g_free (given);
126 }
127
Ensure(manage,truncate_text_preserves_xml)128 Ensure (manage, truncate_text_preserves_xml)
129 {
130 gchar *given;
131
132 given = g_strdup ("12 90");
133
134 truncate_text (given, 5, 1 /* Preserve entities. */, NULL /* No suffix. */);
135 assert_that (given, is_equal_to_string ("12"));
136 g_free (given);
137 }
138
139 /* delete_reports */
140
141 // TODO
142 //
143 // To test this kind of function we need to isolate the code in the manage.c
144 // module. So we need to create stubs/mocks in manage_tests.c that simulate
145 // init_report_iterator, next_report, delete_report_internal and
146 // cleanup_iterator. Then we can use these stubs/mocks to create simple
147 // tests of delete_reports, like delete_reports_deletes_each_report_once or
148 // delete_reports_returns_negative_1_on_error.
149 //
150 // Should be easier to do after splitting Manager source code up.
151
152 /* Test suite. */
153
154 int
main(int argc,char ** argv)155 main (int argc, char **argv)
156 {
157 TestSuite *suite;
158
159 suite = create_test_suite ();
160
161 add_test_with_context (suite, manage, truncate_certificate_given_truncated);
162
163 add_test_with_context (suite, manage, truncate_text_truncates);
164 add_test_with_context (suite, manage, truncate_text_does_not_truncate);
165 add_test_with_context (suite, manage, truncate_text_handles_null);
166 add_test_with_context (suite, manage, truncate_text_appends_suffix);
167 add_test_with_context (suite, manage, truncate_text_skips_suffix);
168 add_test_with_context (suite, manage, truncate_text_preserves_xml);
169
170 if (argc > 1)
171 return run_single_test (suite, argv[1], create_text_reporter ());
172
173 return run_test_suite (suite, create_text_reporter ());
174 }
175