kodDatabase.c revision 285612
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 12void setUp(void) 13{ 14 kod_init_kod_db("/dev/null", TRUE); 15} 16 17void tearDown(void) 18{ 19} 20 21 22void 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 35void 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 66void 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 79void 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 104void 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