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 "gmp_tickets.c"
20
21 #include <cgreen/cgreen.h>
22 #include <cgreen/mocks.h>
23
24 Describe (gmp_tickets);
BeforeEach(gmp_tickets)25 BeforeEach (gmp_tickets) {}
AfterEach(gmp_tickets)26 AfterEach (gmp_tickets) {}
27
28 /* create_ticket_run */
29
30 int
dummy_client_writer(const char * message,void * data)31 dummy_client_writer (const char *message, void *data)
32 {
33 return 0;
34 }
35
36 void
log_event(const char * type,const char * type_name,const char * id,const char * action)37 log_event (const char *type, const char *type_name, const char *id,
38 const char *action)
39 {
40 return;
41 }
42
43 gchar *
ticket_uuid(ticket_t ticket)44 ticket_uuid (ticket_t ticket)
45 {
46 return g_strdup ("9b5da19e-86b4-11e9-b0d2-28d24461215b");
47 }
48
49 int
copy_ticket(const char * comment,const char * ticket_id,ticket_t * new_ticket)50 copy_ticket (const char *comment, const char *ticket_id, ticket_t *new_ticket)
51 {
52 mock ();
53 return 0;
54 }
55
56 int
create_ticket(const char * comment,const char * result_id,const char * user_id,const char * open_note,ticket_t * ticket)57 create_ticket (const char *comment, const char *result_id,
58 const char *user_id, const char *open_note,
59 ticket_t *ticket)
60 {
61 mock ();
62 return 0;
63 }
64
Ensure(gmp_tickets,create_ticket_run_calls_copy_ticket_when_given_copy)65 Ensure (gmp_tickets, create_ticket_run_calls_copy_ticket_when_given_copy)
66 {
67 gmp_parser_t gmp_parser;
68 GError *error;
69 const gchar *uuid;
70
71 /* Check that create_ticket_run calls only copy_ticket when given COPY. */
72
73 uuid = "9b5da19e-86b4-11e9-b0d2-28d24461215b";
74 gmp_parser.client_writer = dummy_client_writer;
75
76 /* <CREATE_TICKET> */
77 create_ticket_start (&gmp_parser, NULL, NULL);
78
79 create_ticket_element_start (&gmp_parser, "copy", NULL, NULL);
80 create_ticket_element_text (uuid, strlen (uuid));
81 create_ticket_element_end (&gmp_parser, &error, "copy");
82
83 create_ticket_element_start (&gmp_parser, "comment", NULL, NULL);
84 create_ticket_element_text (uuid, strlen (uuid));
85 create_ticket_element_end (&gmp_parser, &error, "comment");
86
87 /* </CREATE_TICKET> */
88 xml_handle_end_element (create_ticket_data.context, "create_ticket");
89 assert_that (create_ticket_data.context->done, is_not_equal_to (0));
90
91 expect (copy_ticket);
92 never_expect (create_ticket);
93 create_ticket_run (&gmp_parser, &error);
94 }
95
96 /* Test suite. */
97
98 int
main(int argc,char ** argv)99 main (int argc, char **argv)
100 {
101 TestSuite *suite;
102
103 suite = create_test_suite ();
104
105 add_test_with_context (suite, gmp_tickets, create_ticket_run_calls_copy_ticket_when_given_copy);
106
107 if (argc > 1)
108 return run_single_test (suite, argv[1], create_text_reporter ());
109
110 return run_test_suite (suite, create_text_reporter ());
111 }
112