From 727deb901e3090653644a135c238c2f2878a4d8e Mon Sep 17 00:00:00 2001 From: Daniil Baturin Date: Sun, 26 Apr 2015 15:03:19 +0600 Subject: Add path validation functionality. --- test/data/interface_definition_sample.xml | 37 +++++++++++++++-------- test/reference_tree_test.ml | 50 ++++++++++++++++++++++++++++++- 2 files changed, 73 insertions(+), 14 deletions(-) (limited to 'test') diff --git a/test/data/interface_definition_sample.xml b/test/data/interface_definition_sample.xml index b74a415..26f4c80 100644 --- a/test/data/interface_definition_sample.xml +++ b/test/data/interface_definition_sample.xml @@ -1,23 +1,34 @@ - + - - - User name - - [a-z][a-zA-Z0-9]+ - - User name must start with a letter and consist of letters and digits - + - + - User full name + User name + + [a-zA-Z][a-zA-Z0-9\-]+ + + User name must start with a letter and consist of letters and digits - + + + + User full name + + + + - + + + + + [a-zA-Z][a-zA-Z0-9\-] + + + diff --git a/test/reference_tree_test.ml b/test/reference_tree_test.ml index 52e5a8d..8c969ab 100644 --- a/test/reference_tree_test.ml +++ b/test/reference_tree_test.ml @@ -1,14 +1,62 @@ open OUnit2 open Reference_tree +let validators = Hashtbl.create 256 +let () = Hashtbl.add validators "anything" "true"; + Hashtbl.add validators "nothing" "false" + +let raises_validation_error f = + try f (); false + with Validation_error _ -> true + let test_load_valid_definition test_ctxt = let r = Vytree.make default_data "root" in let r = load_from_xml r (in_testdata_dir test_ctxt ["interface_definition_sample.xml"]) in - assert_equal (Vytree.list_children r) ["login"] + assert_equal (Vytree.list_children r) ["system"] + +(* Path validation tests *) +let test_validate_path_leaf_valid test_ctxt = + let r = Vytree.make default_data "root" in + let r = load_from_xml r (in_testdata_dir test_ctxt ["interface_definition_sample.xml"]) in + assert_equal (validate_path validators r ["system"; "host-name"; "test"]) (["system"; "host-name"], Some "test") + +let test_validate_path_leaf_invalid test_ctxt = + let r = Vytree.make default_data "root" in + let r = load_from_xml r (in_testdata_dir test_ctxt ["interface_definition_sample.xml"]) in + assert_equal (raises_validation_error (fun () -> validate_path validators r ["system"; "host-name"; "1234"])) true + +let test_validate_path_leaf_incomplete test_ctxt = + let r = Vytree.make default_data "root" in + let r = load_from_xml r (in_testdata_dir test_ctxt ["interface_definition_sample.xml"]) in + assert_equal (raises_validation_error (fun () -> validate_path validators r ["system"; "host-name"])) true + +let test_validate_path_tag_node_complete_valid test_ctxt = + let r = Vytree.make default_data "root" in + let r = load_from_xml r (in_testdata_dir test_ctxt ["interface_definition_sample.xml"]) in + assert_equal (validate_path validators r ["system"; "login"; "user"; "test"; "full-name"; "test user"]) + (["system"; "login"; "user"; "test"; "full-name";], Some "test user") + +let test_validate_path_tag_node_invalid_name test_ctxt = + let r = Vytree.make default_data "root" in + let r = load_from_xml r (in_testdata_dir test_ctxt ["interface_definition_sample.xml"]) in + assert_equal (raises_validation_error (fun () -> validate_path validators r ["system"; "login"; "user"; "999"; "full-name"; "test user"])) + true + +let test_validate_path_tag_node_incomplete test_ctxt = + let r = Vytree.make default_data "root" in + let r = load_from_xml r (in_testdata_dir test_ctxt ["interface_definition_sample.xml"]) in + assert_equal (raises_validation_error (fun () -> validate_path validators r ["system"; "login"; "user"])) true + let suite = "Util tests" >::: [ "test_load_valid_definition" >:: test_load_valid_definition; + "test_validate_path_leaf_valid" >:: test_validate_path_leaf_valid; + "test_validate_path_leaf_invalid" >:: test_validate_path_leaf_invalid; + "test_validate_path_leaf_incomplete" >:: test_validate_path_leaf_incomplete; + "test_validate_path_tag_node_complete_valid" >:: test_validate_path_tag_node_complete_valid; + "test_validate_path_tag_node_invalid_name" >:: test_validate_path_tag_node_invalid_name; + "test_validate_path_tag_node_incomplete" >:: test_validate_path_tag_node_incomplete; ] let () = -- cgit v1.2.3