This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Definition in file rules-tests.h.
Go to the source code of this file.
Functions | |
| int | rules_test_init () |
| int | rules_test_cleanup () |
| void | rules_avrules_tests () |
| void | rules_roleallow_tests () |
| void | rules_roletrans_tests () |
| void | rules_terules_tests () |
| void | build_avrule_vecs () |
| void | build_terule_vecs () |
| void | build_roletrans_vecs () |
| void | build_roleallow_vecs () |
|
|
Definition at line 907 of file rules-tests.c. References diff, init_poldiff(), RULES_MOD_POLICY, and RULES_ORIG_POLICY. 00908 {
00909 if (!(diff = init_poldiff(RULES_ORIG_POLICY, RULES_MOD_POLICY))) {
00910 return 1;
00911 } else {
00912 return 0;
00913 }
00914 }
|
|
|
|
|
|
Definition at line 871 of file rules-tests.c. References added_avrules, cleanup_test(), init_answer_vectors(), modified_avrules, poldiff_test_answers_t, removed_avrules, run_test(), test_numbers_e, and unchanged_avrules. Referenced by main(). 00872 {
00873 test_numbers_e test_num = RULES_AVRULE;
00874 poldiff_test_answers_t *answers = init_answer_vectors(added_avrules, removed_avrules, unchanged_avrules, modified_avrules);
00875 run_test(NULL, answers, test_num);
00876 cleanup_test(answers);
00877 }
|
|
|
Definition at line 887 of file rules-tests.c. References added_roleallowrules, cleanup_test(), init_answer_vectors(), modified_roleallowrules, poldiff_test_answers_t, removed_roleallowrules, run_test(), test_numbers_e, and unchanged_roleallowrules. Referenced by main(). 00888 {
00889 test_numbers_e test_num = RULES_ROLEALLOW;
00890 poldiff_test_answers_t *answers =
00891 init_answer_vectors(added_roleallowrules, removed_roleallowrules, unchanged_roleallowrules,
00892 modified_roleallowrules);
00893 run_test(NULL, answers, test_num);
00894 cleanup_test(answers);
00895 }
|
|
|
Definition at line 897 of file rules-tests.c. References added_roletrans_rules, cleanup_test(), init_answer_vectors(), modified_roletrans_rules, poldiff_test_answers_t, removed_roletrans_rules, run_test(), test_numbers_e, and unchanged_roletrans_rules. Referenced by main(). 00898 {
00899 test_numbers_e test_num = RULES_ROLETRANS;
00900 poldiff_test_answers_t *answers =
00901 init_answer_vectors(added_roletrans_rules, removed_roletrans_rules, unchanged_roletrans_rules,
00902 modified_roletrans_rules);
00903 run_test(NULL, answers, test_num);
00904 cleanup_test(answers);
00905 }
|
|
|
Definition at line 879 of file rules-tests.c. References added_terules, cleanup_test(), init_answer_vectors(), modified_terules, poldiff_test_answers_t, removed_terules, run_test(), test_numbers_e, and unchanged_terules. Referenced by main(). 00880 {
00881 test_numbers_e test_num = RULES_TERULE;
00882 poldiff_test_answers_t *answers = init_answer_vectors(added_terules, removed_terules, unchanged_terules, modified_terules);
00883 run_test(NULL, answers, test_num);
00884 cleanup_test(answers);
00885 }
|
|
|
Definition at line 801 of file rules-tests.c. References added_type_avrules, added_type_rules_v, added_v, apol_vector_append(), apol_vector_cat(), apol_vector_compare(), apol_vector_create(), apol_vector_destroy(), apol_vector_get_element(), apol_vector_get_size(), apol_vector_sort(), apol_vector_t, avrule_to_string(), compare_str(), correct_added_type_rules_v, correct_removed_type_rules_v, diff, modified_name_only_v, modified_v, poldiff_avrule_get_form(), POLDIFF_FORM_ADD_TYPE, POLDIFF_FORM_ADDED, poldiff_form_e, POLDIFF_FORM_MODIFIED, POLDIFF_FORM_REMOVE_TYPE, POLDIFF_FORM_REMOVED, poldiff_get_avrule_vector_allow(), poldiff_get_avrule_vector_auditallow(), poldiff_get_avrule_vector_dontaudit(), poldiff_get_avrule_vector_neverallow(), removed_type_avrules, removed_type_rules_v, removed_v, and string_array_to_vector(). Referenced by run_test(). 00802 {
00803 added_type_rules_v = apol_vector_create(free);
00804 removed_type_rules_v = apol_vector_create(free);
00805 correct_added_type_rules_v = string_array_to_vector(added_type_avrules);
00806 correct_removed_type_rules_v = string_array_to_vector(removed_type_avrules);
00807
00808 size_t i;
00809 char *str = NULL, *name_only = NULL;
00810 const void *item = NULL;
00811 const apol_vector_t *allow_v = NULL, *neverallow_v = NULL, *auditallow_v = NULL, *dontaudit_v = NULL;
00812 apol_vector_t *all_avrules_v = apol_vector_create(NULL);
00813
00814 allow_v = poldiff_get_avrule_vector_allow(diff);
00815 neverallow_v = poldiff_get_avrule_vector_neverallow(diff);
00816 auditallow_v = poldiff_get_avrule_vector_auditallow(diff);
00817 dontaudit_v = poldiff_get_avrule_vector_dontaudit(diff);
00818
00819 apol_vector_cat(all_avrules_v, allow_v);
00820 apol_vector_cat(all_avrules_v, neverallow_v);
00821 apol_vector_cat(all_avrules_v, auditallow_v);
00822 apol_vector_cat(all_avrules_v, dontaudit_v);
00823
00824 for (i = 0; i < apol_vector_get_size(all_avrules_v); i++) {
00825 item = apol_vector_get_element(all_avrules_v, i);
00826 if (!item)
00827 return;
00828 poldiff_form_e form = poldiff_avrule_get_form(item);
00829 str = avrule_to_string(item, form, 1);
00830 if (!str)
00831 break;
00832 switch (form) {
00833 case POLDIFF_FORM_ADDED:
00834 apol_vector_append(added_v, str);
00835 break;
00836 case POLDIFF_FORM_REMOVED:
00837 apol_vector_append(removed_v, str);
00838 break;
00839 case POLDIFF_FORM_ADD_TYPE:
00840 apol_vector_append(added_type_rules_v, str);
00841 break;
00842 case POLDIFF_FORM_REMOVE_TYPE:
00843 apol_vector_append(removed_type_rules_v, str);
00844 break;
00845 case POLDIFF_FORM_MODIFIED:
00846 name_only = avrule_to_string(item, form, 0);
00847 apol_vector_append(modified_name_only_v, name_only);
00848 apol_vector_append(modified_v, str);
00849 break;
00850 default:
00851 // should never get here
00852 assert(0);
00853 }
00854 }
00855 size_t first_diff = 0;
00856 apol_vector_sort(added_type_rules_v, compare_str, NULL);
00857 apol_vector_sort(correct_added_type_rules_v, compare_str, NULL);
00858 CU_ASSERT_FALSE(apol_vector_compare(added_type_rules_v, correct_added_type_rules_v, compare_str, NULL, &first_diff));
00859
00860 apol_vector_sort(removed_type_rules_v, compare_str, NULL);
00861 apol_vector_sort(correct_removed_type_rules_v, compare_str, NULL);
00862 CU_ASSERT_FALSE(apol_vector_compare(removed_type_rules_v, correct_removed_type_rules_v, compare_str, NULL, &first_diff));
00863
00864 apol_vector_destroy(&removed_type_rules_v);
00865 apol_vector_destroy(&correct_removed_type_rules_v);
00866 apol_vector_destroy(&added_type_rules_v);
00867 apol_vector_destroy(&correct_added_type_rules_v);
00868 apol_vector_destroy(&all_avrules_v);
00869 }
|
|
|
Definition at line 726 of file rules-tests.c. References added_type_rules_v, added_type_terules, added_v, apol_vector_append(), apol_vector_cat(), apol_vector_compare(), apol_vector_create(), apol_vector_destroy(), apol_vector_get_element(), apol_vector_get_size(), apol_vector_sort(), apol_vector_t, compare_str(), correct_added_type_rules_v, correct_removed_type_rules_v, diff, modified_name_only_v, modified_v, POLDIFF_FORM_ADD_TYPE, POLDIFF_FORM_ADDED, poldiff_form_e, POLDIFF_FORM_MODIFIED, POLDIFF_FORM_REMOVE_TYPE, POLDIFF_FORM_REMOVED, poldiff_get_terule_vector_change(), poldiff_get_terule_vector_member(), poldiff_get_terule_vector_trans(), poldiff_terule_get_form(), print_test_failure(), removed_type_rules_v, removed_type_terules, removed_v, string_array_to_vector(), and terule_to_string(). Referenced by run_test(). 00727 {
00728 added_type_rules_v = apol_vector_create(free);
00729 removed_type_rules_v = apol_vector_create(free);
00730 correct_added_type_rules_v = string_array_to_vector(added_type_terules);
00731 correct_removed_type_rules_v = string_array_to_vector(removed_type_terules);
00732
00733 size_t i;
00734 char *str = NULL;
00735 const void *item = NULL;
00736 const apol_vector_t *member_v = NULL, *change_v = NULL, *trans_v = NULL;
00737 member_v = poldiff_get_terule_vector_member(diff);
00738 change_v = poldiff_get_terule_vector_change(diff);
00739 trans_v = poldiff_get_terule_vector_trans(diff);
00740 apol_vector_t *all_terules = apol_vector_create(NULL);
00741 apol_vector_cat(all_terules, member_v);
00742 apol_vector_cat(all_terules, change_v);
00743 apol_vector_cat(all_terules, trans_v);
00744
00745 for (i = 0; i < apol_vector_get_size(all_terules); i++) {
00746 item = apol_vector_get_element(all_terules, i);
00747 if (!item)
00748 return;
00749 poldiff_form_e form = poldiff_terule_get_form(item);
00750 str = terule_to_string(item, form, 1);
00751 if (!str)
00752 break;
00753 char *name_only = NULL;
00754 switch (form) {
00755 case POLDIFF_FORM_ADDED:
00756 apol_vector_append(added_v, str);
00757 break;
00758 case POLDIFF_FORM_REMOVED:
00759 apol_vector_append(removed_v, str);
00760 break;
00761 case POLDIFF_FORM_ADD_TYPE:
00762 apol_vector_append(added_type_rules_v, str);
00763 break;
00764 case POLDIFF_FORM_REMOVE_TYPE:
00765 apol_vector_append(removed_type_rules_v, str);
00766 break;
00767 case POLDIFF_FORM_MODIFIED:
00768 name_only = terule_to_string(item, form, 0);
00769 apol_vector_append(modified_name_only_v, name_only);
00770 apol_vector_append(modified_v, str);
00771 break;
00772 default:
00773 // should never get here
00774 assert(0);
00775 }
00776 }
00777 size_t first_diff = 0;
00778 int test_result = 0;
00779 apol_vector_sort(added_type_rules_v, compare_str, NULL);
00780 apol_vector_sort(correct_added_type_rules_v, compare_str, NULL);
00781 CU_ASSERT_FALSE(test_result =
00782 apol_vector_compare(added_type_rules_v, correct_added_type_rules_v, compare_str, NULL, &first_diff));
00783 if (test_result) {
00784 print_test_failure(added_type_rules_v, correct_added_type_rules_v, first_diff, "Added Rules (due to types)");
00785 }
00786
00787 apol_vector_sort(removed_type_rules_v, compare_str, NULL);
00788 apol_vector_sort(correct_removed_type_rules_v, compare_str, NULL);
00789 CU_ASSERT_FALSE(test_result =
00790 apol_vector_compare(removed_type_rules_v, correct_removed_type_rules_v, compare_str, NULL, &first_diff));
00791 if (test_result) {
00792 print_test_failure(removed_type_rules_v, correct_removed_type_rules_v, first_diff, "Removed Rules (due to types)");
00793 }
00794 apol_vector_destroy(&all_terules);
00795 apol_vector_destroy(&added_type_rules_v);
00796 apol_vector_destroy(&correct_added_type_rules_v);
00797 apol_vector_destroy(&removed_type_rules_v);
00798 apol_vector_destroy(&correct_removed_type_rules_v);
00799 }
|
|
|
Definition at line 661 of file rules-tests.c. References added_roletrans_type, added_type_rules_v, added_v, apol_vector_append(), apol_vector_compare(), apol_vector_create(), apol_vector_destroy(), apol_vector_get_element(), apol_vector_get_size(), apol_vector_sort(), apol_vector_t, compare_str(), correct_added_type_rules_v, correct_removed_type_rules_v, diff, modified_name_only_v, modified_v, POLDIFF_FORM_ADD_TYPE, POLDIFF_FORM_ADDED, poldiff_form_e, POLDIFF_FORM_MODIFIED, POLDIFF_FORM_REMOVE_TYPE, POLDIFF_FORM_REMOVED, poldiff_get_role_trans_vector(), poldiff_role_trans_get_form(), print_test_failure(), removed_roletrans_type, removed_type_rules_v, removed_v, roletrans_to_string(), and string_array_to_vector(). Referenced by run_test(). 00662 {
00663 added_type_rules_v = apol_vector_create(free);
00664 removed_type_rules_v = apol_vector_create(free);
00665 correct_added_type_rules_v = string_array_to_vector(added_roletrans_type);
00666 correct_removed_type_rules_v = string_array_to_vector(removed_roletrans_type);
00667
00668 char *str = NULL, *name_only;
00669 size_t i;
00670 const void *item = NULL;
00671 const apol_vector_t *v = NULL;
00672 v = poldiff_get_role_trans_vector(diff);
00673 for (i = 0; i < apol_vector_get_size(v); i++) {
00674 item = apol_vector_get_element(v, i);
00675 if (!item)
00676 return;
00677 poldiff_form_e form = poldiff_role_trans_get_form(item);
00678 str = roletrans_to_string(item, form, 1);
00679 if (!str)
00680 break;
00681 switch (form) {
00682 case POLDIFF_FORM_ADDED:
00683 apol_vector_append(added_v, str);
00684 break;
00685 case POLDIFF_FORM_REMOVED:
00686 apol_vector_append(removed_v, str);
00687 break;
00688 case POLDIFF_FORM_ADD_TYPE:
00689 apol_vector_append(added_type_rules_v, str);
00690 break;
00691 case POLDIFF_FORM_REMOVE_TYPE:
00692 apol_vector_append(removed_type_rules_v, str);
00693 break;
00694 case POLDIFF_FORM_MODIFIED:
00695 name_only = roletrans_to_string(item, form, 0);
00696 apol_vector_append(modified_name_only_v, name_only);
00697 apol_vector_append(modified_v, str);
00698 break;
00699 default:
00700 // should never get here
00701 assert(0);
00702 }
00703 }
00704 int test_result;
00705 size_t first_diff = 0;
00706 apol_vector_sort(added_type_rules_v, compare_str, NULL);
00707 apol_vector_sort(correct_added_type_rules_v, compare_str, NULL);
00708 CU_ASSERT_FALSE(test_result =
00709 apol_vector_compare(added_type_rules_v, correct_added_type_rules_v, compare_str, NULL, &first_diff));
00710 if (test_result) {
00711 print_test_failure(added_type_rules_v, correct_added_type_rules_v, first_diff, "Added Rule (due to Type)");
00712 }
00713 apol_vector_sort(removed_type_rules_v, compare_str, NULL);
00714 apol_vector_sort(correct_removed_type_rules_v, compare_str, NULL);
00715 CU_ASSERT_FALSE(test_result =
00716 apol_vector_compare(removed_type_rules_v, correct_removed_type_rules_v, compare_str, NULL, &first_diff));
00717 if (test_result) {
00718 print_test_failure(removed_type_rules_v, correct_removed_type_rules_v, first_diff, "Removed Rule (due to Type)");
00719 }
00720 apol_vector_destroy(&added_type_rules_v);
00721 apol_vector_destroy(&correct_added_type_rules_v);
00722 apol_vector_destroy(&removed_type_rules_v);
00723 apol_vector_destroy(&correct_removed_type_rules_v);
00724 }
|
|
|
Definition at line 627 of file rules-tests.c. References added_v, apol_vector_append(), apol_vector_get_element(), apol_vector_get_size(), apol_vector_t, diff, modified_name_only_v, modified_v, POLDIFF_FORM_ADDED, poldiff_form_e, POLDIFF_FORM_MODIFIED, POLDIFF_FORM_REMOVED, poldiff_get_role_allow_vector(), poldiff_role_allow_get_form(), removed_v, and roleallow_to_string(). Referenced by run_test(). 00628 {
00629 char *str = NULL, *name_only = NULL;
00630 size_t i;
00631 const void *item = NULL;
00632 const apol_vector_t *v = NULL;
00633 v = poldiff_get_role_allow_vector(diff);
00634 for (i = 0; i < apol_vector_get_size(v); i++) {
00635 item = apol_vector_get_element(v, i);
00636 if (!item)
00637 return;
00638 poldiff_form_e form = poldiff_role_allow_get_form(item);
00639 str = roleallow_to_string(item, form, 1);
00640 if (!str)
00641 break;
00642 switch (form) {
00643 case POLDIFF_FORM_ADDED:
00644 apol_vector_append(added_v, str);
00645 break;
00646 case POLDIFF_FORM_REMOVED:
00647 apol_vector_append(removed_v, str);
00648 break;
00649 case POLDIFF_FORM_MODIFIED:
00650 name_only = roleallow_to_string(item, form, 0);
00651 apol_vector_append(modified_name_only_v, name_only);
00652 apol_vector_append(modified_v, str);
00653 break;
00654 default:
00655 // should never get here
00656 assert(0);
00657 }
00658 }
00659 }
|