Home | History | Annotate | Line # | Download | only in tests
kodDatabase.c revision 1.1
      1 #include "config.h"
      2 
      3 #include "ntp_types.h"
      4 #include "sntptest.h"
      5 #include "ntp_stdlib.h"
      6 #include "sntp-opts.h"
      7 
      8 #include "kod_management.h"
      9 
     10 #include "unity.h"
     11 
     12 void setUp(void)
     13 {
     14 	kod_init_kod_db("/dev/null", TRUE);
     15 }
     16 
     17 void tearDown(void)
     18 {
     19 }
     20 
     21 
     22 void test_SingleEntryHandling() {
     23 	char HOST[] = "192.0.2.5";
     24 	char REASON[] = "DENY";
     25 
     26 	add_entry(HOST, REASON);
     27 
     28 	struct kod_entry* result;
     29 
     30 	TEST_ASSERT_EQUAL(1, search_entry(HOST, &result));
     31 	TEST_ASSERT_EQUAL_STRING(HOST, result->hostname);
     32 	TEST_ASSERT_EQUAL_STRING(REASON, result->type);
     33 }
     34 
     35 void test_MultipleEntryHandling() {
     36 	char HOST1[] = "192.0.2.3";
     37 	char REASON1[] = "DENY";
     38 
     39 	char HOST2[] = "192.0.5.5";
     40 	char REASON2[] = "RATE";
     41 
     42 	char HOST3[] = "192.0.10.1";
     43 	char REASON3[] = "DENY";
     44 
     45 	add_entry(HOST1, REASON1);
     46 	add_entry(HOST2, REASON2);
     47 	add_entry(HOST3, REASON3);
     48 
     49 	struct kod_entry* result;
     50 
     51 	TEST_ASSERT_EQUAL(1, search_entry(HOST1, &result));
     52 	TEST_ASSERT_EQUAL_STRING(HOST1, result->hostname);
     53 	TEST_ASSERT_EQUAL_STRING(REASON1, result->type);
     54 
     55 	TEST_ASSERT_EQUAL(1, search_entry(HOST2, &result));
     56 	TEST_ASSERT_EQUAL_STRING(HOST2, result->hostname);
     57 	TEST_ASSERT_EQUAL_STRING(REASON2, result->type);
     58 
     59 	TEST_ASSERT_EQUAL(1, search_entry(HOST3, &result));
     60 	TEST_ASSERT_EQUAL_STRING(HOST3, result->hostname);
     61 	TEST_ASSERT_EQUAL_STRING(REASON3, result->type);
     62 
     63 	free(result);
     64 }
     65 
     66 void test_NoMatchInSearch() {
     67 	char HOST_ADD[] = "192.0.2.6";
     68 	char HOST_NOTADD[] = "192.0.6.1";
     69 	char REASON[] = "DENY";
     70 
     71 	add_entry(HOST_ADD, REASON);
     72 
     73 	struct kod_entry* result;
     74 
     75 	TEST_ASSERT_EQUAL(0, search_entry(HOST_NOTADD, &result));
     76 	TEST_ASSERT_TRUE(result == NULL);
     77 }
     78 
     79 void test_AddDuplicate() {
     80 	char HOST[] = "192.0.2.3";
     81 	char REASON1[] = "RATE";
     82 	char REASON2[] = "DENY";
     83 
     84 	add_entry(HOST, REASON1);
     85 	struct kod_entry* result1;
     86 	TEST_ASSERT_EQUAL(1, search_entry(HOST, &result1));
     87 
     88 	/*
     89 	 * Sleeps for two seconds since we want to ensure that
     90 	 * the timestamp is updated to a new value.
     91 	 */
     92 	sleep(2);
     93 
     94 	add_entry(HOST, REASON2);
     95 	struct kod_entry* result2;
     96 	TEST_ASSERT_EQUAL(1, search_entry(HOST, &result2));
     97 
     98 	TEST_ASSERT_FALSE(result1->timestamp == result2->timestamp);
     99 
    100 	free(result1);
    101 	free(result2);
    102 }
    103 
    104 void test_DeleteEntry() {
    105 	char HOST1[] = "192.0.2.1";
    106 	char HOST2[] = "192.0.2.2";
    107 	char HOST3[] = "192.0.2.3";
    108 	char REASON[] = "DENY";
    109 
    110 	add_entry(HOST1, REASON);
    111 	add_entry(HOST2, REASON);
    112 	add_entry(HOST3, REASON);
    113 
    114 	struct kod_entry* result;
    115 
    116 	TEST_ASSERT_EQUAL(1, search_entry(HOST2, &result));
    117 	free(result);
    118 
    119 	delete_entry(HOST2, REASON);
    120 
    121 	TEST_ASSERT_EQUAL(0, search_entry(HOST2, &result));
    122 
    123 	// Ensure that the other entry is still there.
    124 	TEST_ASSERT_EQUAL(1, search_entry(HOST1, &result));
    125 	free(result);
    126 }
    127