OpenVAS Scanner 22.7.9
ipc_openvas_tests.c
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Greenbone AG
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later
4 */
5
6#include "ipc_openvas.c"
7
8#include <cgreen/cgreen.h>
9#include <cgreen/mocks.h>
10
11Describe (ipc_openvas);
12BeforeEach (ipc_openvas)
13{
14}
15AfterEach (ipc_openvas)
16{
17}
18
19Ensure (ipc_openvas, ipc_data_from_json_ua_ok)
20{
21 ipc_data_t *data_s = NULL;
22 ipc_data_t *data_r = NULL;
23 gchar *ua = "localhost";
24
25 // Preapre data to be sent
26 data_s = g_malloc0 (sizeof (ipc_data_t *));
27 data_s = ipc_data_type_from_user_agent (ua, strlen (ua));
28
29 const char *json = ipc_data_to_json (data_s);
30 ipc_data_destroy (&data_s);
31 assert_that (data_s, is_null);
32
33 // Read received data
34 data_r = g_malloc0 (sizeof (ipc_data_t));
35 data_r = ipc_data_from_json (json, strlen (json));
36 assert_that (ipc_get_user_agent_from_data (data_r),
37 is_equal_to_string ("localhost"));
38
39 ipc_data_destroy (&data_r);
40 assert_that (data_s, is_null);
41}
42
43Ensure (ipc_openvas, ipc_data_from_json_hostname_ok)
44{
45 ipc_data_t *data_s = NULL;
46 ipc_data_t *data_r = NULL;
47 gchar *hn = "localhost";
48 gchar *hns = "TLS certificate";
49
50 // Preapre data to be sent
51 data_s = g_malloc0 (sizeof (ipc_data_t *));
52 data_s = ipc_data_type_from_hostname (hns, strlen (hns), hn, strlen (hn));
53
54 const char *json = ipc_data_to_json (data_s);
55 ipc_data_destroy (&data_s);
56 assert_that (data_s, is_null);
57
58 // Read received data
59 data_r = g_malloc0 (sizeof (ipc_data_t));
60 data_r = ipc_data_from_json (json, strlen (json));
61 assert_that (ipc_get_hostname_from_data (data_r),
62 is_equal_to_string ("localhost"));
63 assert_that (ipc_get_hostname_source_from_data (data_r),
64 is_equal_to_string ("TLS certificate"));
65
66 ipc_data_destroy (&data_r);
67 assert_that (data_r, is_null);
68}
69
70Ensure (ipc_openvas, ipc_data_from_json_parse_error)
71{
72 ipc_data_t *data_r = NULL;
73 char *json_fake = NULL;
74
75 // malformed json string
76 json_fake = g_strdup (
77 "{\"type\":1,\"user-agent\":\"Mozilla/5.0 [en] (X11, U; Greenbone OS "
78 "22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 [en] (X11, U; "
79 "Greenbone OS 22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 [en] "
80 "(X11, U; Greenbone OS 22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 "
81 "[en] (X11, U; Greenbone OS "
82 "22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 [en] (X11, U; "
83 "Greenbone OS 22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 [en] "
84 "(X11, U; Greenbone OS 22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 "
85 "[en] (X11, U; Greenbone OS "
86 "22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 [en] (X11, U; "
87 "Greenbone OS 22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 [en] "
88 "(X11, U; Greenbone OS 22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 "
89 "[en] (X11, U; Greenbone OS "
90 "22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 [en] (X11, U; "
91 "Greenbone OS 22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 [en] "
92 "(X11, U; Greenbone OS 22.04.4)\"}{\"type\":1,\"user-agent\":\"Mozilla/5.0 "
93 "[en] (X11, U; Greenbone OS 22.04.4)\"}{\"type\":");
94
95 // Read received data
96 data_r = g_malloc0 (sizeof (ipc_data_t *));
97 data_r = ipc_data_from_json (json_fake, strlen (json_fake));
98 assert_that (ipc_get_hostname_from_data (data_r), is_null);
99 assert_that (ipc_get_hostname_source_from_data (data_r), is_null);
100 assert_that (data_r, is_null);
101}
102
103Ensure (ipc_openvas, ipc_data_from_json_parse_many_objects)
104{
105 ipc_data_t *data_r = NULL;
106 char *json_fake = NULL;
107
108 // malformed json string
109 json_fake =
110 g_strdup ("{\"type\":0,\"source\":\"TLS "
111 "certificate\",\"hostname\":\"localhost\"}{\"type\":1,\"user-"
112 "agent\":\"Mozilla/5.0 [en] (X11, U; Greenbone OS "
113 "22.04.4)\"}");
114
115 // Read received data
116 data_r = g_malloc0 (sizeof (ipc_data_t *));
117 data_r = ipc_data_from_json (json_fake, strlen (json_fake));
118
119 assert_that (ipc_get_hostname_from_data (data_r),
120 is_equal_to_string ("localhost"));
121 assert_that (ipc_get_hostname_source_from_data (data_r),
122 is_equal_to_string ("TLS certificate"));
123
124 ipc_data_destroy (&data_r);
125 assert_that (data_r, is_null);
126}
127
128int
129main (int argc, char **argv)
130{
131 TestSuite *suite;
132
133 suite = create_test_suite ();
134
135 add_test_with_context (suite, ipc_openvas, ipc_data_from_json_ua_ok);
136 add_test_with_context (suite, ipc_openvas, ipc_data_from_json_hostname_ok);
137 add_test_with_context (suite, ipc_openvas, ipc_data_from_json_parse_error);
138 add_test_with_context (suite, ipc_openvas,
139 ipc_data_from_json_parse_many_objects);
140
141 if (argc > 1)
142 return run_single_test (suite, argv[1], create_text_reporter ());
143
144 return run_test_suite (suite, create_text_reporter ());
145}
struct ipc_data * ipc_data_type_from_hostname(const char *source, size_t source_len, const char *hostname, size_t hostname_len)
initializes ipc_data for a hostname data.
Definition: ipc_openvas.c:124
gchar * ipc_get_hostname_from_data(ipc_data_t *data)
Get the hostname from IPC data.
Definition: ipc_openvas.c:73
void ipc_data_destroy(ipc_data_t **data)
destroys ipc_data.
Definition: ipc_openvas.c:224
struct ipc_data * ipc_data_type_from_user_agent(const char *user_agent, size_t user_agent_len)
initializes ipc_data for the User-Agent.
Definition: ipc_openvas.c:173
gchar * ipc_get_user_agent_from_data(ipc_data_t *data)
Get the User-Agent from IPC data.
Definition: ipc_openvas.c:105
struct ipc_data * ipc_data_from_json(const char *json, size_t len)
transforms json string to a ipc_data struct
Definition: ipc_openvas.c:319
gchar * ipc_get_hostname_source_from_data(ipc_data_t *data)
Get the vhost hostname source from IPC data.
Definition: ipc_openvas.c:89
const char * ipc_data_to_json(struct ipc_data *data)
transforms ipc_data to a json string
Definition: ipc_openvas.c:251
AfterEach(ipc_openvas)
int main(int argc, char **argv)
Describe(ipc_openvas)
BeforeEach(ipc_openvas)
Ensure(ipc_openvas, ipc_data_from_json_ua_ok)