11import os
22import re
3+ import sys
34import unittest
45
56import yaml
67
8+ import module_utils .helpers as helpers
9+
10+ sys .modules ['ansible.module_utils.helpers' ] = helpers
11+ import library .cartridge_validate_config as validate_config
12+ import unit .test_validate_config as test_validate_config
13+
714
815# This tests protects against inattentive people, who do not completely change the variables list
916
@@ -17,6 +24,7 @@ def setUp(self):
1724 with open (self .defaults_file , 'r' ) as f :
1825 try :
1926 self .defaults = yaml .safe_load (f )
27+ self .cached_facts_names = self .defaults ['cartridge_cached_fact_names_by_target' ]
2028 except yaml .YAMLError as e :
2129 self .fail ("Impossible to parse 'defaults/main.yml': %s" % e )
2230
@@ -32,6 +40,14 @@ def setUp(self):
3240 text = f .read ()
3341 self .doc_facts = re .findall (r'\n[*-][^`]*`([^`]+)`' , text )
3442
43+ self .validate_config_facts = list (validate_config .SCHEMA .keys ())
44+
45+ self .test_validate_config_facts = set ()
46+ for params in test_validate_config .PARAMS_BY_TYPES .values ():
47+ for param in params :
48+ self .test_validate_config_facts .add (param .split ('.' )[0 ].split ('[' )[0 ])
49+ self .test_validate_config_facts = list (self .test_validate_config_facts )
50+
3551 self .not_user_facts = [
3652 # Role defaults
3753 'cartridge_role_scenarios' ,
@@ -73,3 +89,28 @@ def test_doc_facts(self):
7389 sorted (default_names ), sorted (self .doc_facts + self .not_user_facts ),
7490 'List of facts in defaults and in documentation is different' ,
7591 )
92+
93+ # If someone added a variable to defaults, but forgot to add it to validate config
94+ def test_validate_config_facts (self ):
95+ default_names = list (self .defaults .keys ())
96+
97+ self .assertEqual (
98+ sorted (default_names ), sorted (self .validate_config_facts + self .not_user_facts ),
99+ 'List of facts in defaults and in validate config step is different' ,
100+ )
101+
102+ # If someone added a variable to validate config step, but forgot to add it to cached facts list
103+ def test_validate_config_cached_facts (self ):
104+ cached_facts_names = self .cached_facts_names ['validate_config' ]
105+
106+ self .assertEqual (
107+ sorted (self .validate_config_facts ), sorted (cached_facts_names ),
108+ 'List of facts in cached facts and in validate config step is different' ,
109+ )
110+
111+ # If someone added a variable to validate config step, but forgot to add it to test of validate config
112+ def test_validate_config_test_facts (self ):
113+ self .assertEqual (
114+ sorted (self .validate_config_facts ), sorted (self .test_validate_config_facts ),
115+ 'List of facts in validate config step and in test of this step is different' ,
116+ )
0 commit comments