Add tests for nested grain/pillar matching

Also added tests for traditional grain matching when target grain is a
list.
This commit is contained in:
Erik Johnson 2013-01-26 00:13:51 -06:00
parent 4998a15839
commit 77eeb47bea
4 changed files with 74 additions and 3 deletions

View file

@ -21,3 +21,15 @@ grains:
test_grain: cheese
script: grail
alot: many
planets:
- mercury
- venus
- earth
- mars
level1:
level2: foo
companions:
one:
- susan
- ian
- barbara

View file

@ -20,6 +20,16 @@ integration.test: True
grains:
test_grain: spam
role: sub
planets:
- jupiter
- saturn
- uranus
- neptune
level1:
level2: bar
companions:
two:
- jamie
- zoe
ipc_mode: tcp

View file

@ -11,3 +11,12 @@ knights:
- Galahad
- Bedevere
- Robin
level1:
level2: foo
companions:
three:
- liz
- jo
- sarah jane

View file

@ -57,6 +57,7 @@ class MatchTest(integration.ShellCase, integration.ShellCaseCommonTestsMixIn):
'''
test salt grain matcher
'''
# First-level grain (string value)
data = self.run_salt('-t 1 -G "test_grain:cheese" test.ping')
data = '\n'.join(data)
self.assertIn('minion', data)
@ -65,6 +66,33 @@ class MatchTest(integration.ShellCase, integration.ShellCaseCommonTestsMixIn):
data = '\n'.join(data)
self.assertIn('sub_minion', data)
self.assertNotIn('minion', data.replace('sub_minion', 'stub'))
# First-level grain (list member)
data = self.run_salt('-t 1 -G "planets:earth" test.ping')
data = '\n'.join(data)
self.assertIn('minion', data)
self.assertNotIn('sub_minion', data)
data = self.run_salt('-G "planets:saturn" test.ping')
data = '\n'.join(data)
self.assertIn('sub_minion', data)
self.assertNotIn('minion', data.replace('sub_minion', 'stub'))
# Nested grain (string value)
data = self.run_salt('-t 1 -G "level1:level2:foo" test.ping')
data = '\n'.join(data)
self.assertIn('minion', data)
self.assertNotIn('sub_minion', data)
data = self.run_salt('-G "level1:level2:bar" test.ping')
data = '\n'.join(data)
self.assertIn('sub_minion', data)
self.assertNotIn('minion', data.replace('sub_minion', 'stub'))
# Nested grain (list member)
data = self.run_salt('-t 1 -G "companions:one:ian" test.ping')
data = '\n'.join(data)
self.assertIn('minion', data)
self.assertNotIn('sub_minion', data)
data = self.run_salt('-G "companions:two:jamie" test.ping')
data = '\n'.join(data)
self.assertIn('sub_minion', data)
self.assertNotIn('minion', data.replace('sub_minion', 'stub'))
def test_regrain(self):
'''
@ -85,18 +113,31 @@ class MatchTest(integration.ShellCase, integration.ShellCaseCommonTestsMixIn):
'''
test pillar matcher
'''
# First-level pillar (string value)
data = self.run_salt('-I "monty:python" test.ping')
data = '\n'.join(data)
self.assertIn('minion', data)
self.assertIn('sub_minion', data)
# First-level pillar (string value, only in sub_minion)
data = self.run_salt('-I "sub:sub_minion" test.ping')
data = '\n'.join(data)
self.assertIn('sub_minion', data)
self.assertNotIn('minion', data.replace('sub_minion', 'stub'))
# First-level pillar (list member)
data = self.run_salt('-I "knights:Bedevere" test.ping')
data = '\n'.join(data)
self.assertIn('minion', data)
self.assertIn('sub_minion', data)
# Nested pillar (string value)
data = self.run_salt('-I "level1:level2:foo" test.ping')
data = '\n'.join(data)
self.assertIn('minion', data)
self.assertIn('sub_minion', data)
# Nested pillar (list member)
data = self.run_salt('-I "companions:three:sarah jane" test.ping')
data = '\n'.join(data)
self.assertIn('minion', data)
self.assertIn('sub_minion', data)
def test_compound(self):
'''
@ -119,7 +160,7 @@ class MatchTest(integration.ShellCase, integration.ShellCaseCommonTestsMixIn):
self.assertIn('minion', data)
self.assertIn('sub_minion', data)
def test_ipcadr(self):
def test_ipcidr(self):
subnets_data = self.run_salt('--out yaml \'*\' network.subnets')
yaml_data = yaml.load('\n'.join(subnets_data))
@ -162,7 +203,6 @@ class MatchTest(integration.ShellCase, integration.ShellCaseCommonTestsMixIn):
self.assertIn('user.add:', data)
if __name__ == "__main__":
loader = TestLoader()
tests = loader.loadTestsFromTestCase(MatchTest)