OpenDNSSEC-enforcer  2.0.3
test_policy.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 Jerry Lundström <lundstrom.jerry@gmail.com>
3  * Copyright (c) 2014 .SE (The Internet Infrastructure Foundation).
4  * Copyright (c) 2014 OpenDNSSEC AB (svb)
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
22  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
24  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  *
28  */
29 
30 #include "CUnit/Basic.h"
31 
32 #include "../db_configuration.h"
33 #include "../db_connection.h"
34 #include "../policy.h"
35 
36 #include <string.h>
37 
38 static db_configuration_list_t* configuration_list = NULL;
39 static db_configuration_t* configuration = NULL;
40 static db_connection_t* connection = NULL;
41 
42 static policy_t* object = NULL;
43 static policy_list_t* object_list = NULL;
44 static db_value_t id = DB_VALUE_EMPTY;
45 static db_clause_list_t* clause_list = NULL;
46 
47 static int db_sqlite = 0;
48 static int db_mysql = 0;
49 
50 #if defined(ENFORCER_DATABASE_SQLITE3)
51 int test_policy_init_suite_sqlite(void) {
52  if (configuration_list) {
53  return 1;
54  }
55  if (configuration) {
56  return 1;
57  }
58  if (connection) {
59  return 1;
60  }
61 
62  /*
63  * Setup the configuration for the connection
64  */
65  if (!(configuration_list = db_configuration_list_new())) {
66  return 1;
67  }
68  if (!(configuration = db_configuration_new())
69  || db_configuration_set_name(configuration, "backend")
70  || db_configuration_set_value(configuration, "sqlite")
71  || db_configuration_list_add(configuration_list, configuration))
72  {
73  db_configuration_free(configuration);
74  configuration = NULL;
75  db_configuration_list_free(configuration_list);
76  configuration_list = NULL;
77  return 1;
78  }
79  configuration = NULL;
80  if (!(configuration = db_configuration_new())
81  || db_configuration_set_name(configuration, "file")
82  || db_configuration_set_value(configuration, "test.db")
83  || db_configuration_list_add(configuration_list, configuration))
84  {
85  db_configuration_free(configuration);
86  configuration = NULL;
87  db_configuration_list_free(configuration_list);
88  configuration_list = NULL;
89  return 1;
90  }
91  configuration = NULL;
92 
93  /*
94  * Connect to the database
95  */
96  if (!(connection = db_connection_new())
97  || db_connection_set_configuration_list(connection, configuration_list))
98  {
99  db_connection_free(connection);
100  connection = NULL;
101  db_configuration_list_free(configuration_list);
102  configuration_list = NULL;
103  return 1;
104  }
105  configuration_list = NULL;
106 
107  if (db_connection_setup(connection)
108  || db_connection_connect(connection))
109  {
110  db_connection_free(connection);
111  connection = NULL;
112  return 1;
113  }
114 
115  db_sqlite = 1;
116  db_mysql = 0;
117 
118  return 0;
119 }
120 #endif
121 
122 #if defined(ENFORCER_DATABASE_MYSQL)
123 int test_policy_init_suite_mysql(void) {
124  if (configuration_list) {
125  return 1;
126  }
127  if (configuration) {
128  return 1;
129  }
130  if (connection) {
131  return 1;
132  }
133 
134  /*
135  * Setup the configuration for the connection
136  */
137  if (!(configuration_list = db_configuration_list_new())) {
138  return 1;
139  }
140  if (!(configuration = db_configuration_new())
141  || db_configuration_set_name(configuration, "backend")
142  || db_configuration_set_value(configuration, "mysql")
143  || db_configuration_list_add(configuration_list, configuration))
144  {
145  db_configuration_free(configuration);
146  configuration = NULL;
147  db_configuration_list_free(configuration_list);
148  configuration_list = NULL;
149  return 1;
150  }
151  configuration = NULL;
152  if (!(configuration = db_configuration_new())
153  || db_configuration_set_name(configuration, "host")
154  || db_configuration_set_value(configuration, ENFORCER_DB_HOST)
155  || db_configuration_list_add(configuration_list, configuration))
156  {
157  db_configuration_free(configuration);
158  configuration = NULL;
159  db_configuration_list_free(configuration_list);
160  configuration_list = NULL;
161  return 1;
162  }
163  configuration = NULL;
164  if (!(configuration = db_configuration_new())
165  || db_configuration_set_name(configuration, "port")
166  || db_configuration_set_value(configuration, ENFORCER_DB_PORT_TEXT)
167  || db_configuration_list_add(configuration_list, configuration))
168  {
169  db_configuration_free(configuration);
170  configuration = NULL;
171  db_configuration_list_free(configuration_list);
172  configuration_list = NULL;
173  return 1;
174  }
175  configuration = NULL;
176  if (!(configuration = db_configuration_new())
177  || db_configuration_set_name(configuration, "user")
178  || db_configuration_set_value(configuration, ENFORCER_DB_USERNAME)
179  || db_configuration_list_add(configuration_list, configuration))
180  {
181  db_configuration_free(configuration);
182  configuration = NULL;
183  db_configuration_list_free(configuration_list);
184  configuration_list = NULL;
185  return 1;
186  }
187  configuration = NULL;
188  if (!(configuration = db_configuration_new())
189  || db_configuration_set_name(configuration, "pass")
190  || db_configuration_set_value(configuration, ENFORCER_DB_PASSWORD)
191  || db_configuration_list_add(configuration_list, configuration))
192  {
193  db_configuration_free(configuration);
194  configuration = NULL;
195  db_configuration_list_free(configuration_list);
196  configuration_list = NULL;
197  return 1;
198  }
199  configuration = NULL;
200  if (!(configuration = db_configuration_new())
201  || db_configuration_set_name(configuration, "db")
202  || db_configuration_set_value(configuration, ENFORCER_DB_DATABASE)
203  || db_configuration_list_add(configuration_list, configuration))
204  {
205  db_configuration_free(configuration);
206  configuration = NULL;
207  db_configuration_list_free(configuration_list);
208  configuration_list = NULL;
209  return 1;
210  }
211  configuration = NULL;
212 
213  /*
214  * Connect to the database
215  */
216  if (!(connection = db_connection_new())
217  || db_connection_set_configuration_list(connection, configuration_list))
218  {
219  db_connection_free(connection);
220  connection = NULL;
221  db_configuration_list_free(configuration_list);
222  configuration_list = NULL;
223  return 1;
224  }
225  configuration_list = NULL;
226 
227  if (db_connection_setup(connection)
228  || db_connection_connect(connection))
229  {
230  db_connection_free(connection);
231  connection = NULL;
232  return 1;
233  }
234 
235  db_sqlite = 0;
236  db_mysql = 1;
237 
238  return 0;
239 }
240 #endif
241 
242 static int test_policy_clean_suite(void) {
243  db_connection_free(connection);
244  connection = NULL;
245  db_configuration_free(configuration);
246  configuration = NULL;
247  db_configuration_list_free(configuration_list);
248  configuration_list = NULL;
249  db_value_reset(&id);
250  db_clause_list_free(clause_list);
251  clause_list = NULL;
252  return 0;
253 }
254 
255 static void test_policy_new(void) {
256  CU_ASSERT_PTR_NOT_NULL_FATAL((object = policy_new(connection)));
257  CU_ASSERT_PTR_NOT_NULL_FATAL((object_list = policy_list_new(connection)));
258 }
259 
260 static void test_policy_set(void) {
261  CU_ASSERT(!policy_set_name(object, "name 1"));
262  CU_ASSERT(!policy_set_description(object, "description 1"));
263  CU_ASSERT(!policy_set_signatures_resign(object, 1));
264  CU_ASSERT(!policy_set_signatures_refresh(object, 1));
265  CU_ASSERT(!policy_set_signatures_jitter(object, 1));
266  CU_ASSERT(!policy_set_signatures_inception_offset(object, 1));
267  CU_ASSERT(!policy_set_signatures_validity_default(object, 1));
268  CU_ASSERT(!policy_set_signatures_validity_denial(object, 1));
269  CU_ASSERT(!policy_set_signatures_max_zone_ttl(object, 1));
270  CU_ASSERT(!policy_set_denial_type(object, POLICY_DENIAL_TYPE_NSEC));
272  CU_ASSERT(!policy_set_denial_optout(object, 1));
273  CU_ASSERT(!policy_set_denial_ttl(object, 1));
274  CU_ASSERT(!policy_set_denial_resalt(object, 1));
275  CU_ASSERT(!policy_set_denial_algorithm(object, 1));
276  CU_ASSERT(!policy_set_denial_iterations(object, 1));
277  CU_ASSERT(!policy_set_denial_salt_length(object, 1));
278  CU_ASSERT(!policy_set_denial_salt(object, "denial_salt 1"));
279  CU_ASSERT(!policy_set_denial_salt_last_change(object, 1));
280  CU_ASSERT(!policy_set_keys_ttl(object, 1));
281  CU_ASSERT(!policy_set_keys_retire_safety(object, 1));
282  CU_ASSERT(!policy_set_keys_publish_safety(object, 1));
283  CU_ASSERT(!policy_set_keys_shared(object, 1));
284  CU_ASSERT(!policy_set_keys_purge_after(object, 1));
285  CU_ASSERT(!policy_set_zone_propagation_delay(object, 1));
286  CU_ASSERT(!policy_set_zone_soa_ttl(object, 1));
287  CU_ASSERT(!policy_set_zone_soa_minimum(object, 1));
288  CU_ASSERT(!policy_set_zone_soa_serial_text(object, "counter"));
289  CU_ASSERT(!policy_set_zone_soa_serial_text(object, "datecounter"));
290  CU_ASSERT(!policy_set_zone_soa_serial_text(object, "unixtime"));
291  CU_ASSERT(!policy_set_zone_soa_serial_text(object, "keep"));
292  CU_ASSERT(!policy_set_parent_registration_delay(object, 1));
293  CU_ASSERT(!policy_set_parent_propagation_delay(object, 1));
294  CU_ASSERT(!policy_set_parent_ds_ttl(object, 1));
295  CU_ASSERT(!policy_set_parent_soa_ttl(object, 1));
296  CU_ASSERT(!policy_set_parent_soa_minimum(object, 1));
297 }
298 
299 static void test_policy_get(void) {
300  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_name(object));
301  CU_ASSERT(!strcmp(policy_name(object), "name 1"));
302  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_description(object));
303  CU_ASSERT(!strcmp(policy_description(object), "description 1"));
304  CU_ASSERT(policy_signatures_resign(object) == 1);
305  CU_ASSERT(policy_signatures_refresh(object) == 1);
306  CU_ASSERT(policy_signatures_jitter(object) == 1);
307  CU_ASSERT(policy_signatures_inception_offset(object) == 1);
308  CU_ASSERT(policy_signatures_validity_default(object) == 1);
309  CU_ASSERT(policy_signatures_validity_denial(object) == 1);
310  CU_ASSERT(policy_signatures_max_zone_ttl(object) == 1);
311  CU_ASSERT(policy_denial_type(object) == POLICY_DENIAL_TYPE_NSEC3);
312  CU_ASSERT(policy_denial_optout(object) == 1);
313  CU_ASSERT(policy_denial_ttl(object) == 1);
314  CU_ASSERT(policy_denial_resalt(object) == 1);
315  CU_ASSERT(policy_denial_algorithm(object) == 1);
316  CU_ASSERT(policy_denial_iterations(object) == 1);
317  CU_ASSERT(policy_denial_salt_length(object) == 1);
318  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_denial_salt(object));
319  CU_ASSERT(!strcmp(policy_denial_salt(object), "denial_salt 1"));
320  CU_ASSERT(policy_denial_salt_last_change(object) == 1);
321  CU_ASSERT(policy_keys_ttl(object) == 1);
322  CU_ASSERT(policy_keys_retire_safety(object) == 1);
323  CU_ASSERT(policy_keys_publish_safety(object) == 1);
324  CU_ASSERT(policy_keys_shared(object) == 1);
325  CU_ASSERT(policy_keys_purge_after(object) == 1);
326  CU_ASSERT(policy_zone_propagation_delay(object) == 1);
327  CU_ASSERT(policy_zone_soa_ttl(object) == 1);
328  CU_ASSERT(policy_zone_soa_minimum(object) == 1);
329  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_zone_soa_serial_text(object));
330  CU_ASSERT(!strcmp(policy_zone_soa_serial_text(object), "keep"));
331  CU_ASSERT(policy_parent_registration_delay(object) == 1);
332  CU_ASSERT(policy_parent_propagation_delay(object) == 1);
333  CU_ASSERT(policy_parent_ds_ttl(object) == 1);
334  CU_ASSERT(policy_parent_soa_ttl(object) == 1);
335  CU_ASSERT(policy_parent_soa_minimum(object) == 1);
336 }
337 
338 static void test_policy_create(void) {
339  CU_ASSERT_FATAL(!policy_create(object));
340 }
341 
342 static void test_policy_clauses(void) {
343  policy_list_t* new_list;
344 
345  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
346  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
347  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
348  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
349  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
350  policy_list_free(new_list);
351  db_clause_list_free(clause_list);
352  clause_list = NULL;
353 
354  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
355  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
356  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
357  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
358  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
359  policy_list_free(new_list);
360  db_clause_list_free(clause_list);
361  clause_list = NULL;
362 
363  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
364  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
365  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
366  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
367  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
368  policy_list_free(new_list);
369  db_clause_list_free(clause_list);
370  clause_list = NULL;
371 
372  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
373  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
374  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
375  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
376  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
377  policy_list_free(new_list);
378  db_clause_list_free(clause_list);
379  clause_list = NULL;
380 
381  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
382  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
383  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
384  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
385  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
386  policy_list_free(new_list);
387  db_clause_list_free(clause_list);
388  clause_list = NULL;
389 
390  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
391  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
392  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
393  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
394  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
395  policy_list_free(new_list);
396  db_clause_list_free(clause_list);
397  clause_list = NULL;
398 
399  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
400  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
401  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
402  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
403  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
404  policy_list_free(new_list);
405  db_clause_list_free(clause_list);
406  clause_list = NULL;
407 
408  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
409  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
410  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
411  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
412  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
413  policy_list_free(new_list);
414  db_clause_list_free(clause_list);
415  clause_list = NULL;
416 
417  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
418  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
419  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
420  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
421  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
422  policy_list_free(new_list);
423  db_clause_list_free(clause_list);
424  clause_list = NULL;
425 
426  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
427  CU_ASSERT_PTR_NOT_NULL(policy_denial_type_clause(clause_list, policy_denial_type(object)));
428  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
429  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
430  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
431  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
432  policy_list_free(new_list);
433  db_clause_list_free(clause_list);
434  clause_list = NULL;
435 
436  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
437  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
438  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
439  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
440  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
441  policy_list_free(new_list);
442  db_clause_list_free(clause_list);
443  clause_list = NULL;
444 
445  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
446  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
447  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
448  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
449  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
450  policy_list_free(new_list);
451  db_clause_list_free(clause_list);
452  clause_list = NULL;
453 
454  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
455  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
456  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
457  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
458  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
459  policy_list_free(new_list);
460  db_clause_list_free(clause_list);
461  clause_list = NULL;
462 
463  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
464  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
465  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
466  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
467  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
468  policy_list_free(new_list);
469  db_clause_list_free(clause_list);
470  clause_list = NULL;
471 
472  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
473  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
474  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
475  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
476  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
477  policy_list_free(new_list);
478  db_clause_list_free(clause_list);
479  clause_list = NULL;
480 
481  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
482  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
483  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
484  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
485  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
486  policy_list_free(new_list);
487  db_clause_list_free(clause_list);
488  clause_list = NULL;
489 
490  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
491  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
492  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
493  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
494  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
495  policy_list_free(new_list);
496  db_clause_list_free(clause_list);
497  clause_list = NULL;
498 
499  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
500  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
501  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
502  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
503  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
504  policy_list_free(new_list);
505  db_clause_list_free(clause_list);
506  clause_list = NULL;
507 
508  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
509  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
510  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
511  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
512  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
513  policy_list_free(new_list);
514  db_clause_list_free(clause_list);
515  clause_list = NULL;
516 
517  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
518  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
519  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
520  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
521  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
522  policy_list_free(new_list);
523  db_clause_list_free(clause_list);
524  clause_list = NULL;
525 
526  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
527  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
528  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
529  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
530  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
531  policy_list_free(new_list);
532  db_clause_list_free(clause_list);
533  clause_list = NULL;
534 
535  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
536  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
537  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
538  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
539  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
540  policy_list_free(new_list);
541  db_clause_list_free(clause_list);
542  clause_list = NULL;
543 
544  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
545  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
546  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
547  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
548  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
549  policy_list_free(new_list);
550  db_clause_list_free(clause_list);
551  clause_list = NULL;
552 
553  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
554  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
555  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
556  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
557  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
558  policy_list_free(new_list);
559  db_clause_list_free(clause_list);
560  clause_list = NULL;
561 
562  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
563  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
564  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
565  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
566  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
567  policy_list_free(new_list);
568  db_clause_list_free(clause_list);
569  clause_list = NULL;
570 
571  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
572  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
573  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
574  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
575  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
576  policy_list_free(new_list);
577  db_clause_list_free(clause_list);
578  clause_list = NULL;
579 
580  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
581  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
582  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
583  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
584  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
585  policy_list_free(new_list);
586  db_clause_list_free(clause_list);
587  clause_list = NULL;
588 
589  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
590  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
591  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
592  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
593  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
594  policy_list_free(new_list);
595  db_clause_list_free(clause_list);
596  clause_list = NULL;
597 
598  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
599  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
600  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
601  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
602  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
603  policy_list_free(new_list);
604  db_clause_list_free(clause_list);
605  clause_list = NULL;
606 
607  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
608  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
609  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
610  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
611  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
612  policy_list_free(new_list);
613  db_clause_list_free(clause_list);
614  clause_list = NULL;
615 
616  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
617  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
618  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
619  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
620  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
621  policy_list_free(new_list);
622  db_clause_list_free(clause_list);
623  clause_list = NULL;
624 
625  CU_ASSERT_PTR_NOT_NULL_FATAL((clause_list = db_clause_list_new()));
626  CU_ASSERT(!policy_list_get_by_clauses(object_list, clause_list));
627  CU_ASSERT_PTR_NOT_NULL(policy_list_next(object_list));
628  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get_by_clauses(connection, clause_list)));
629  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
630  policy_list_free(new_list);
631  db_clause_list_free(clause_list);
632  clause_list = NULL;
633 }
634 
635 static void test_policy_list(void) {
636  const policy_t* item;
637  policy_t* item2;
638  policy_list_t* new_list;
639 
640  CU_ASSERT_FATAL(!policy_list_get(object_list));
641  CU_ASSERT_PTR_NOT_NULL_FATAL((item = policy_list_next(object_list)));
642  CU_ASSERT_FATAL(!db_value_copy(&id, policy_id(item)));
643  CU_ASSERT_PTR_NOT_NULL_FATAL((item = policy_list_begin(object_list)));
644 
645  CU_ASSERT_FATAL(!policy_list_get(object_list));
646  CU_ASSERT_PTR_NOT_NULL_FATAL((item2 = policy_list_get_next(object_list)));
647  policy_free(item2);
648  CU_PASS("policy_free");
649 
650  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new_get(connection)));
651  CU_ASSERT_PTR_NOT_NULL(policy_list_next(new_list));
652  policy_list_free(new_list);
653 }
654 
655 static void test_policy_list_store(void) {
656  policy_list_t* new_list;
657 
658  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new(connection)));
659  CU_ASSERT_FATAL(!policy_list_object_store(new_list));
660  CU_ASSERT_FATAL(!policy_list_get(new_list));
661 
662  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_list_next(new_list));
663  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_list_begin(new_list));
664 
665  CU_PASS("policy_free");
666 
667  policy_list_free(new_list);
668 }
669 
670 static void test_policy_list_associated(void) {
671  policy_list_t* new_list;
672 
673  CU_ASSERT_PTR_NOT_NULL((new_list = policy_list_new(connection)));
674  CU_ASSERT_FATAL(!policy_list_get(new_list));
675 
676  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_list_next(new_list));
677  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_list_begin(new_list));
678 
679  CU_PASS("policy_free");
680 
681  policy_list_free(new_list);
682 }
683 
684 static void test_policy_read(void) {
685  CU_ASSERT_FATAL(!policy_get_by_id(object, &id));
686 }
687 
688 static void test_policy_verify(void) {
689  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_name(object));
690  CU_ASSERT(!strcmp(policy_name(object), "name 1"));
691  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_description(object));
692  CU_ASSERT(!strcmp(policy_description(object), "description 1"));
693  CU_ASSERT(policy_signatures_resign(object) == 1);
694  CU_ASSERT(policy_signatures_refresh(object) == 1);
695  CU_ASSERT(policy_signatures_jitter(object) == 1);
696  CU_ASSERT(policy_signatures_inception_offset(object) == 1);
697  CU_ASSERT(policy_signatures_validity_default(object) == 1);
698  CU_ASSERT(policy_signatures_validity_denial(object) == 1);
699  CU_ASSERT(policy_signatures_max_zone_ttl(object) == 1);
700  CU_ASSERT(policy_denial_type(object) == POLICY_DENIAL_TYPE_NSEC3);
701  CU_ASSERT(policy_denial_optout(object) == 1);
702  CU_ASSERT(policy_denial_ttl(object) == 1);
703  CU_ASSERT(policy_denial_resalt(object) == 1);
704  CU_ASSERT(policy_denial_algorithm(object) == 1);
705  CU_ASSERT(policy_denial_iterations(object) == 1);
706  CU_ASSERT(policy_denial_salt_length(object) == 1);
707  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_denial_salt(object));
708  CU_ASSERT(!strcmp(policy_denial_salt(object), "denial_salt 1"));
709  CU_ASSERT(policy_denial_salt_last_change(object) == 1);
710  CU_ASSERT(policy_keys_ttl(object) == 1);
711  CU_ASSERT(policy_keys_retire_safety(object) == 1);
712  CU_ASSERT(policy_keys_publish_safety(object) == 1);
713  CU_ASSERT(policy_keys_shared(object) == 1);
714  CU_ASSERT(policy_keys_purge_after(object) == 1);
715  CU_ASSERT(policy_zone_propagation_delay(object) == 1);
716  CU_ASSERT(policy_zone_soa_ttl(object) == 1);
717  CU_ASSERT(policy_zone_soa_minimum(object) == 1);
718  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_zone_soa_serial_text(object));
719  CU_ASSERT(!strcmp(policy_zone_soa_serial_text(object), "keep"));
720  CU_ASSERT(policy_parent_registration_delay(object) == 1);
721  CU_ASSERT(policy_parent_propagation_delay(object) == 1);
722  CU_ASSERT(policy_parent_ds_ttl(object) == 1);
723  CU_ASSERT(policy_parent_soa_ttl(object) == 1);
724  CU_ASSERT(policy_parent_soa_minimum(object) == 1);
725 }
726 
727 static void test_policy_read_by_name(void) {
728  CU_ASSERT_FATAL(!policy_get_by_name(object, "name 1"));
729 }
730 
731 static void test_policy_verify_name(void) {
732  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_name(object));
733  CU_ASSERT(!strcmp(policy_name(object), "name 1"));
734  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_description(object));
735  CU_ASSERT(!strcmp(policy_description(object), "description 1"));
736  CU_ASSERT(policy_signatures_resign(object) == 1);
737  CU_ASSERT(policy_signatures_refresh(object) == 1);
738  CU_ASSERT(policy_signatures_jitter(object) == 1);
739  CU_ASSERT(policy_signatures_inception_offset(object) == 1);
740  CU_ASSERT(policy_signatures_validity_default(object) == 1);
741  CU_ASSERT(policy_signatures_validity_denial(object) == 1);
742  CU_ASSERT(policy_signatures_max_zone_ttl(object) == 1);
743  CU_ASSERT(policy_denial_type(object) == POLICY_DENIAL_TYPE_NSEC3);
744  CU_ASSERT(policy_denial_optout(object) == 1);
745  CU_ASSERT(policy_denial_ttl(object) == 1);
746  CU_ASSERT(policy_denial_resalt(object) == 1);
747  CU_ASSERT(policy_denial_algorithm(object) == 1);
748  CU_ASSERT(policy_denial_iterations(object) == 1);
749  CU_ASSERT(policy_denial_salt_length(object) == 1);
750  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_denial_salt(object));
751  CU_ASSERT(!strcmp(policy_denial_salt(object), "denial_salt 1"));
752  CU_ASSERT(policy_denial_salt_last_change(object) == 1);
753  CU_ASSERT(policy_keys_ttl(object) == 1);
754  CU_ASSERT(policy_keys_retire_safety(object) == 1);
755  CU_ASSERT(policy_keys_publish_safety(object) == 1);
756  CU_ASSERT(policy_keys_shared(object) == 1);
757  CU_ASSERT(policy_keys_purge_after(object) == 1);
758  CU_ASSERT(policy_zone_propagation_delay(object) == 1);
759  CU_ASSERT(policy_zone_soa_ttl(object) == 1);
760  CU_ASSERT(policy_zone_soa_minimum(object) == 1);
761  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_zone_soa_serial_text(object));
762  CU_ASSERT(!strcmp(policy_zone_soa_serial_text(object), "keep"));
763  CU_ASSERT(policy_parent_registration_delay(object) == 1);
764  CU_ASSERT(policy_parent_propagation_delay(object) == 1);
765  CU_ASSERT(policy_parent_ds_ttl(object) == 1);
766  CU_ASSERT(policy_parent_soa_ttl(object) == 1);
767  CU_ASSERT(policy_parent_soa_minimum(object) == 1);
768 }
769 
770 static void test_policy_change(void) {
771  CU_ASSERT(!policy_set_name(object, "name 2"));
772  CU_ASSERT(!policy_set_description(object, "description 2"));
773  CU_ASSERT(!policy_set_signatures_resign(object, 2));
774  CU_ASSERT(!policy_set_signatures_refresh(object, 2));
775  CU_ASSERT(!policy_set_signatures_jitter(object, 2));
776  CU_ASSERT(!policy_set_signatures_inception_offset(object, 2));
777  CU_ASSERT(!policy_set_signatures_validity_default(object, 2));
778  CU_ASSERT(!policy_set_signatures_validity_denial(object, 2));
779  CU_ASSERT(!policy_set_signatures_max_zone_ttl(object, 2));
780  CU_ASSERT(!policy_set_denial_type(object, POLICY_DENIAL_TYPE_NSEC));
781  CU_ASSERT(!policy_set_denial_optout(object, 2));
782  CU_ASSERT(!policy_set_denial_ttl(object, 2));
783  CU_ASSERT(!policy_set_denial_resalt(object, 2));
784  CU_ASSERT(!policy_set_denial_algorithm(object, 2));
785  CU_ASSERT(!policy_set_denial_iterations(object, 2));
786  CU_ASSERT(!policy_set_denial_salt_length(object, 2));
787  CU_ASSERT(!policy_set_denial_salt(object, "denial_salt 2"));
788  CU_ASSERT(!policy_set_denial_salt_last_change(object, 2));
789  CU_ASSERT(!policy_set_keys_ttl(object, 2));
790  CU_ASSERT(!policy_set_keys_retire_safety(object, 2));
791  CU_ASSERT(!policy_set_keys_publish_safety(object, 2));
792  CU_ASSERT(!policy_set_keys_shared(object, 2));
793  CU_ASSERT(!policy_set_keys_purge_after(object, 2));
794  CU_ASSERT(!policy_set_zone_propagation_delay(object, 2));
795  CU_ASSERT(!policy_set_zone_soa_ttl(object, 2));
796  CU_ASSERT(!policy_set_zone_soa_minimum(object, 2));
797  CU_ASSERT(!policy_set_zone_soa_serial_text(object, "counter"));
798  CU_ASSERT(!policy_set_parent_registration_delay(object, 2));
799  CU_ASSERT(!policy_set_parent_propagation_delay(object, 2));
800  CU_ASSERT(!policy_set_parent_ds_ttl(object, 2));
801  CU_ASSERT(!policy_set_parent_soa_ttl(object, 2));
802  CU_ASSERT(!policy_set_parent_soa_minimum(object, 2));
803 }
804 
805 static void test_policy_update(void) {
806  CU_ASSERT_FATAL(!policy_update(object));
807 }
808 
809 static void test_policy_read2(void) {
810  CU_ASSERT_FATAL(!policy_get_by_id(object, &id));
811 }
812 
813 static void test_policy_verify2(void) {
814  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_name(object));
815  CU_ASSERT(!strcmp(policy_name(object), "name 2"));
816  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_description(object));
817  CU_ASSERT(!strcmp(policy_description(object), "description 2"));
818  CU_ASSERT(policy_signatures_resign(object) == 2);
819  CU_ASSERT(policy_signatures_refresh(object) == 2);
820  CU_ASSERT(policy_signatures_jitter(object) == 2);
821  CU_ASSERT(policy_signatures_inception_offset(object) == 2);
822  CU_ASSERT(policy_signatures_validity_default(object) == 2);
823  CU_ASSERT(policy_signatures_validity_denial(object) == 2);
824  CU_ASSERT(policy_signatures_max_zone_ttl(object) == 2);
825  CU_ASSERT(policy_denial_type(object) == POLICY_DENIAL_TYPE_NSEC);
826  CU_ASSERT(policy_denial_optout(object) == 2);
827  CU_ASSERT(policy_denial_ttl(object) == 2);
828  CU_ASSERT(policy_denial_resalt(object) == 2);
829  CU_ASSERT(policy_denial_algorithm(object) == 2);
830  CU_ASSERT(policy_denial_iterations(object) == 2);
831  CU_ASSERT(policy_denial_salt_length(object) == 2);
832  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_denial_salt(object));
833  CU_ASSERT(!strcmp(policy_denial_salt(object), "denial_salt 2"));
834  CU_ASSERT(policy_denial_salt_last_change(object) == 2);
835  CU_ASSERT(policy_keys_ttl(object) == 2);
836  CU_ASSERT(policy_keys_retire_safety(object) == 2);
837  CU_ASSERT(policy_keys_publish_safety(object) == 2);
838  CU_ASSERT(policy_keys_shared(object) == 2);
839  CU_ASSERT(policy_keys_purge_after(object) == 2);
840  CU_ASSERT(policy_zone_propagation_delay(object) == 2);
841  CU_ASSERT(policy_zone_soa_ttl(object) == 2);
842  CU_ASSERT(policy_zone_soa_minimum(object) == 2);
843  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_zone_soa_serial_text(object));
844  CU_ASSERT(!strcmp(policy_zone_soa_serial_text(object), "counter"));
845  CU_ASSERT(policy_parent_registration_delay(object) == 2);
846  CU_ASSERT(policy_parent_propagation_delay(object) == 2);
847  CU_ASSERT(policy_parent_ds_ttl(object) == 2);
848  CU_ASSERT(policy_parent_soa_ttl(object) == 2);
849  CU_ASSERT(policy_parent_soa_minimum(object) == 2);
850 }
851 
852 static void test_policy_cmp(void) {
853  policy_t* local_object;
854 
855  CU_ASSERT_PTR_NOT_NULL_FATAL((local_object = policy_new(connection)));
856 }
857 
858 static void test_policy_read_by_name2(void) {
859  CU_ASSERT_FATAL(!policy_get_by_name(object, "name 2"));
860 }
861 
862 static void test_policy_verify_name2(void) {
863  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_name(object));
864  CU_ASSERT(!strcmp(policy_name(object), "name 2"));
865  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_description(object));
866  CU_ASSERT(!strcmp(policy_description(object), "description 2"));
867  CU_ASSERT(policy_signatures_resign(object) == 2);
868  CU_ASSERT(policy_signatures_refresh(object) == 2);
869  CU_ASSERT(policy_signatures_jitter(object) == 2);
870  CU_ASSERT(policy_signatures_inception_offset(object) == 2);
871  CU_ASSERT(policy_signatures_validity_default(object) == 2);
872  CU_ASSERT(policy_signatures_validity_denial(object) == 2);
873  CU_ASSERT(policy_signatures_max_zone_ttl(object) == 2);
874  CU_ASSERT(policy_denial_type(object) == POLICY_DENIAL_TYPE_NSEC);
875  CU_ASSERT(policy_denial_optout(object) == 2);
876  CU_ASSERT(policy_denial_ttl(object) == 2);
877  CU_ASSERT(policy_denial_resalt(object) == 2);
878  CU_ASSERT(policy_denial_algorithm(object) == 2);
879  CU_ASSERT(policy_denial_iterations(object) == 2);
880  CU_ASSERT(policy_denial_salt_length(object) == 2);
881  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_denial_salt(object));
882  CU_ASSERT(!strcmp(policy_denial_salt(object), "denial_salt 2"));
883  CU_ASSERT(policy_denial_salt_last_change(object) == 2);
884  CU_ASSERT(policy_keys_ttl(object) == 2);
885  CU_ASSERT(policy_keys_retire_safety(object) == 2);
886  CU_ASSERT(policy_keys_publish_safety(object) == 2);
887  CU_ASSERT(policy_keys_shared(object) == 2);
888  CU_ASSERT(policy_keys_purge_after(object) == 2);
889  CU_ASSERT(policy_zone_propagation_delay(object) == 2);
890  CU_ASSERT(policy_zone_soa_ttl(object) == 2);
891  CU_ASSERT(policy_zone_soa_minimum(object) == 2);
892  CU_ASSERT_PTR_NOT_NULL_FATAL(policy_zone_soa_serial_text(object));
893  CU_ASSERT(!strcmp(policy_zone_soa_serial_text(object), "counter"));
894  CU_ASSERT(policy_parent_registration_delay(object) == 2);
895  CU_ASSERT(policy_parent_propagation_delay(object) == 2);
896  CU_ASSERT(policy_parent_ds_ttl(object) == 2);
897  CU_ASSERT(policy_parent_soa_ttl(object) == 2);
898  CU_ASSERT(policy_parent_soa_minimum(object) == 2);
899 }
900 
901 static void test_policy_delete(void) {
902  CU_ASSERT_FATAL(!policy_delete(object));
903 }
904 
905 static void test_policy_list2(void) {
906  CU_ASSERT_FATAL(!policy_list_get(object_list));
907  CU_ASSERT_PTR_NULL(policy_list_next(object_list));
908 }
909 
910 static void test_policy_end(void) {
911  if (object) {
912  policy_free(object);
913  CU_PASS("policy_free");
914  }
915  if (object_list) {
916  policy_list_free(object_list);
917  CU_PASS("policy_list_free");
918  }
919 }
920 
921 static int test_policy_add_tests(CU_pSuite pSuite) {
922  if (!CU_add_test(pSuite, "new object", test_policy_new)
923  || !CU_add_test(pSuite, "set fields", test_policy_set)
924  || !CU_add_test(pSuite, "get fields", test_policy_get)
925  || !CU_add_test(pSuite, "create object", test_policy_create)
926  || !CU_add_test(pSuite, "object clauses", test_policy_clauses)
927  || !CU_add_test(pSuite, "list objects", test_policy_list)
928  || !CU_add_test(pSuite, "list objects (store)", test_policy_list_store)
929  || !CU_add_test(pSuite, "list objects (associated)", test_policy_list_associated)
930  || !CU_add_test(pSuite, "read object by id", test_policy_read)
931  || !CU_add_test(pSuite, "verify fields", test_policy_verify)
932  || !CU_add_test(pSuite, "read object by name", test_policy_read_by_name)
933  || !CU_add_test(pSuite, "verify fields (name)", test_policy_verify_name)
934  || !CU_add_test(pSuite, "change object", test_policy_change)
935  || !CU_add_test(pSuite, "update object", test_policy_update)
936  || !CU_add_test(pSuite, "reread object by id", test_policy_read2)
937  || !CU_add_test(pSuite, "verify fields after update", test_policy_verify2)
938  || !CU_add_test(pSuite, "compare objects", test_policy_cmp)
939  || !CU_add_test(pSuite, "reread object by name", test_policy_read_by_name2)
940  || !CU_add_test(pSuite, "verify fields after update (name)", test_policy_verify_name2)
941  || !CU_add_test(pSuite, "delete object", test_policy_delete)
942  || !CU_add_test(pSuite, "list objects to verify delete", test_policy_list2)
943  || !CU_add_test(pSuite, "end test", test_policy_end))
944  {
945  return CU_get_error();
946  }
947  return 0;
948 }
949 
951  CU_pSuite pSuite = NULL;
952  int ret;
953 
954 #if defined(ENFORCER_DATABASE_SQLITE3)
955  pSuite = CU_add_suite("Test of policy (SQLite)", test_policy_init_suite_sqlite, test_policy_clean_suite);
956  if (!pSuite) {
957  return CU_get_error();
958  }
959  ret = test_policy_add_tests(pSuite);
960  if (ret) {
961  return ret;
962  }
963 #endif
964 #if defined(ENFORCER_DATABASE_MYSQL)
965  pSuite = CU_add_suite("Test of policy (MySQL)", test_policy_init_suite_mysql, test_policy_clean_suite);
966  if (!pSuite) {
967  return CU_get_error();
968  }
969  ret = test_policy_add_tests(pSuite);
970  if (ret) {
971  return ret;
972  }
973 #endif
974  return 0;
975 }
int policy_list_get(policy_list_t *policy_list)
Definition: policy.c:3037
int policy_set_signatures_refresh(policy_t *policy, unsigned int signatures_refresh)
Definition: policy.c:1196
int policy_create(policy_t *policy)
Definition: policy.c:1561
int policy_set_zone_soa_serial_text(policy_t *policy, const char *zone_soa_serial)
Definition: policy.c:1463
int policy_set_signatures_jitter(policy_t *policy, unsigned int signatures_jitter)
Definition: policy.c:1206
void policy_list_free(policy_list_t *policy_list)
Definition: policy.c:2664
int policy_set_description(policy_t *policy, const char *description_text)
Definition: policy.c:1164
unsigned int policy_denial_resalt(const policy_t *policy)
Definition: policy.c:917
int db_connection_setup(db_connection_t *connection)
Definition: db_connection.c:66
unsigned int policy_parent_registration_delay(const policy_t *policy)
Definition: policy.c:1045
const policy_t * policy_list_begin(policy_list_t *policy_list)
Definition: policy.c:3155
int policy_set_signatures_inception_offset(policy_t *policy, unsigned int signatures_inception_offset)
Definition: policy.c:1216
db_configuration_t * db_configuration_new(void)
int db_value_copy(db_value_t *value, const db_value_t *from_value)
Definition: db_value.c:77
db_clause_list_t * db_clause_list_new(void)
Definition: db_clause.c:202
const char * policy_name(const policy_t *policy)
Definition: policy.c:813
#define DB_VALUE_EMPTY
Definition: db_value.h:60
int policy_delete(policy_t *policy)
Definition: policy.c:2571
int policy_set_denial_ttl(policy_t *policy, unsigned int denial_ttl)
Definition: policy.c:1289
unsigned int policy_signatures_max_zone_ttl(const policy_t *policy)
Definition: policy.c:885
unsigned int policy_denial_salt_last_change(const policy_t *policy)
Definition: policy.c:957
int db_configuration_set_name(db_configuration_t *configuration, const char *name)
unsigned int policy_denial_algorithm(const policy_t *policy)
Definition: policy.c:925
unsigned int policy_signatures_refresh(const policy_t *policy)
Definition: policy.c:837
unsigned int policy_signatures_validity_default(const policy_t *policy)
Definition: policy.c:861
int policy_set_keys_retire_safety(policy_t *policy, unsigned int keys_retire_safety)
Definition: policy.c:1393
int policy_set_signatures_max_zone_ttl(policy_t *policy, unsigned int signatures_max_zone_ttl)
Definition: policy.c:1256
int policy_list_get_by_clauses(policy_list_t *policy_list, const db_clause_list_t *clause_list)
Definition: policy.c:3093
unsigned int policy_parent_propagation_delay(const policy_t *policy)
Definition: policy.c:1053
int policy_set_denial_type(policy_t *policy, policy_denial_type_t denial_type)
Definition: policy.c:1266
int test_policy_add_suite(void)
Definition: test_policy.c:950
int policy_set_keys_shared(policy_t *policy, unsigned int keys_shared)
Definition: policy.c:1413
unsigned int policy_signatures_validity_denial(const policy_t *policy)
Definition: policy.c:869
int policy_set_signatures_resign(policy_t *policy, unsigned int signatures_resign)
Definition: policy.c:1186
int policy_set_parent_registration_delay(policy_t *policy, unsigned int parent_registration_delay)
Definition: policy.c:1480
unsigned int policy_signatures_jitter(const policy_t *policy)
Definition: policy.c:845
policy_denial_type
Definition: policy.h:40
unsigned int policy_signatures_inception_offset(const policy_t *policy)
Definition: policy.c:853
int policy_set_parent_soa_minimum(policy_t *policy, unsigned int parent_soa_minimum)
Definition: policy.c:1520
void db_clause_list_free(db_clause_list_t *clause_list)
Definition: db_clause.c:209
int db_configuration_list_add(db_configuration_list_t *configuration_list, db_configuration_t *configuration)
unsigned int policy_zone_propagation_delay(const policy_t *policy)
Definition: policy.c:1005
int policy_list_object_store(policy_list_t *policy_list)
Definition: policy.c:2654
unsigned int policy_denial_iterations(const policy_t *policy)
Definition: policy.c:933
int policy_set_keys_ttl(policy_t *policy, unsigned int keys_ttl)
Definition: policy.c:1383
int policy_set_signatures_validity_default(policy_t *policy, unsigned int signatures_validity_default)
Definition: policy.c:1226
unsigned int policy_zone_soa_ttl(const policy_t *policy)
Definition: policy.c:1013
policy_t * policy_list_get_next(policy_list_t *policy_list)
Definition: policy.c:3277
void policy_free(policy_t *policy)
Definition: policy.c:518
void db_configuration_free(db_configuration_t *configuration)
void db_value_reset(db_value_t *value)
Definition: db_value.c:60
unsigned int policy_keys_publish_safety(const policy_t *policy)
Definition: policy.c:981
int policy_set_keys_publish_safety(policy_t *policy, unsigned int keys_publish_safety)
Definition: policy.c:1403
int policy_set_zone_soa_minimum(policy_t *policy, unsigned int zone_soa_minimum)
Definition: policy.c:1453
policy_t * policy_new(const db_connection_t *connection)
Definition: policy.c:479
int policy_set_denial_salt_length(policy_t *policy, unsigned int denial_salt_length)
Definition: policy.c:1337
int policy_update(policy_t *policy)
Definition: policy.c:2110
unsigned int policy_parent_ds_ttl(const policy_t *policy)
Definition: policy.c:1061
policy_list_t * policy_list_new_get(const db_connection_t *connection)
Definition: policy.c:3076
const char * policy_zone_soa_serial_text(const policy_t *policy)
Definition: policy.c:1029
unsigned int policy_denial_ttl(const policy_t *policy)
Definition: policy.c:909
int policy_set_zone_propagation_delay(policy_t *policy, unsigned int zone_propagation_delay)
Definition: policy.c:1433
int policy_set_parent_propagation_delay(policy_t *policy, unsigned int parent_propagation_delay)
Definition: policy.c:1490
unsigned int policy_parent_soa_minimum(const policy_t *policy)
Definition: policy.c:1077
unsigned int policy_denial_optout(const policy_t *policy)
Definition: policy.c:901
unsigned int policy_keys_retire_safety(const policy_t *policy)
Definition: policy.c:973
db_configuration_list_t * db_configuration_list_new(void)
policy_list_t * policy_list_new(const db_connection_t *connection)
Definition: policy.c:2621
int policy_set_zone_soa_ttl(policy_t *policy, unsigned int zone_soa_ttl)
Definition: policy.c:1443
int policy_set_denial_salt(policy_t *policy, const char *denial_salt_text)
Definition: policy.c:1351
int policy_get_by_name(policy_t *policy, const char *name)
Definition: policy.c:2040
const char * policy_description(const policy_t *policy)
Definition: policy.c:821
const policy_t * policy_list_next(policy_list_t *policy_list)
Definition: policy.c:3211
int db_connection_set_configuration_list(db_connection_t *connection, const db_configuration_list_t *configuration_list)
Definition: db_connection.c:54
void db_connection_free(db_connection_t *connection)
Definition: db_connection.c:45
db_clause_t * policy_denial_type_clause(db_clause_list_t *clause_list, policy_denial_type_t denial_type)
Definition: policy.c:1540
int policy_set_name(policy_t *policy, const char *name_text)
Definition: policy.c:1142
Definition: policy.h:60
int policy_set_denial_iterations(policy_t *policy, unsigned int denial_iterations)
Definition: policy.c:1323
unsigned int policy_denial_salt_length(const policy_t *policy)
Definition: policy.c:941
int policy_set_denial_salt_last_change(policy_t *policy, unsigned int denial_salt_last_change)
Definition: policy.c:1373
unsigned int policy_parent_soa_ttl(const policy_t *policy)
Definition: policy.c:1069
int policy_set_denial_resalt(policy_t *policy, unsigned int denial_resalt)
Definition: policy.c:1299
const char * policy_denial_salt(const policy_t *policy)
Definition: policy.c:949
int db_configuration_set_value(db_configuration_t *configuration, const char *value)
unsigned int policy_keys_shared(const policy_t *policy)
Definition: policy.c:989
const db_value_t * policy_id(const policy_t *policy)
Definition: policy.c:805
int policy_set_denial_algorithm(policy_t *policy, unsigned int denial_algorithm)
Definition: policy.c:1309
unsigned int policy_zone_soa_minimum(const policy_t *policy)
Definition: policy.c:1021
int db_connection_connect(const db_connection_t *connection)
Definition: db_connection.c:88
int policy_get_by_id(policy_t *policy, const db_value_t *id)
Definition: policy.c:1987
unsigned int policy_keys_purge_after(const policy_t *policy)
Definition: policy.c:997
db_connection_t * db_connection_new(void)
Definition: db_connection.c:38
int policy_set_denial_optout(policy_t *policy, unsigned int denial_optout)
Definition: policy.c:1279
policy_list_t * policy_list_new_get_by_clauses(const db_connection_t *connection, const db_clause_list_t *clause_list)
Definition: policy.c:3135
int policy_set_keys_purge_after(policy_t *policy, unsigned int keys_purge_after)
Definition: policy.c:1423
int policy_set_signatures_validity_denial(policy_t *policy, unsigned int signatures_validity_denial)
Definition: policy.c:1236
int policy_set_parent_ds_ttl(policy_t *policy, unsigned int parent_ds_ttl)
Definition: policy.c:1500
unsigned int policy_keys_ttl(const policy_t *policy)
Definition: policy.c:965
unsigned int policy_signatures_resign(const policy_t *policy)
Definition: policy.c:829
void db_configuration_list_free(db_configuration_list_t *configuration_list)
int policy_set_parent_soa_ttl(policy_t *policy, unsigned int parent_soa_ttl)
Definition: policy.c:1510