ESAPI-C 1.0
The OWASP Enterprise Security API for C

test/src/access_ref_test.c

Go to the documentation of this file.
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 }
 All Data Structures Files Functions Variables Typedefs Defines