ESAPI-C 1.0
The OWASP Enterprise Security API for C
|
00001 #include <stdio.h> 00002 #include <stdlib.h> 00003 #include "minunit.h" 00004 #include "access_ref.h" 00005 00006 int tests_run = 0; 00007 00008 void test_esapi_put_reference(void) { 00009 map_t *test_map; 00010 00011 (void)fprintf(stdout,"Running test %s\n", __func__); 00012 00013 // verify empty table 00014 TEST(HASH_CNT(hh_k, k_map) == 0); 00015 00016 // verify that a new reference is successfully added 00017 TEST(esapi_put_reference("123", "100") == true); 00018 TEST(esapi_put_reference("456", "200") == true); 00019 TEST(esapi_put_reference("789", "300") == true); 00020 00021 // verify unique keys are the only keys added 00022 TEST(esapi_put_reference("123", "100") == false); 00023 00024 // verify correct number of entries are in each table 00025 TEST(HASH_CNT(hh_k, k_map) == 3); 00026 TEST(HASH_CNT(hh_v, v_map) == 3); 00027 00028 // verify table can be retrieved by key 00029 TEST((test_map = esapi_get_direct_reference("456")) != 0); 00030 TEST(strcmp(test_map->val, "200") == 0); 00031 TEST((test_map = esapi_get_direct_reference("100")) == 0); 00032 00033 // verify table can be retrieved by val 00034 TEST((test_map = esapi_get_indirect_reference("300")) != 0); 00035 TEST(strcmp(test_map->key, "789") == 0); 00036 00037 // verify return on incorrect key 00038 TEST((test_map = esapi_get_indirect_reference("123")) == 0); 00039 00040 // verify entry can be removed by key 00041 TEST(esapi_remove_direct_reference("456") == true); 00042 TEST(HASH_CNT(hh_k, k_map) == 2); 00043 TEST(HASH_CNT(hh_v, v_map) == 2); 00044 TEST((test_map = esapi_get_indirect_reference("200")) == 0); 00045 00046 // verify entry can be removed by val 00047 TEST(esapi_remove_indirect_reference("100") == true); 00048 TEST(HASH_CNT(hh_k, k_map) == 1); 00049 TEST(HASH_CNT(hh_v, v_map) == 1); 00050 00051 // verify returns on removed entries 00052 TEST((test_map = esapi_get_direct_reference("123")) == 0); 00053 TEST(esapi_remove_direct_reference("456") == false); 00054 00055 } 00056 00057 int main(void) { 00058 00059 test_esapi_put_reference(); 00060 00061 (void)fprintf(stderr,"%s: Pass <%i>, Fail <%i>\n",__FILE__, passed, failed); 00062 00063 return(EXIT_SUCCESS); 00064 }