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&nbsp;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