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