+# Copyright 2019 Nokia
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import unittest
+import json
+import jinja2
+from ansible.plugins.filter.core import regex_search
+
+
+class LocalstorageTest(unittest.TestCase):
+
+ def setUp(self):
+ env = jinja2.Environment(
+ loader=jinja2.FileSystemLoader('./role/templates')
+ )
+ env.filters['search'] = regex_search
+ env.tests['search'] = regex_search
+ self.template = env.get_template('localstorage.j2')
+
+ def ordered(self, obj):
+ if isinstance(obj, dict):
+ return sorted((k, self.ordered(v)) for k, v in obj.items())
+ if isinstance(obj, list):
+ return sorted(self.ordered(x) for x in obj)
+ return obj
+
+ def verify(self, usecase):
+ with open('./tests/inputs/%s.json' % usecase) as data:
+ inventory = json.load(data)
+ rendered = self.template.render(inventory)
+ actual = json.loads(rendered)
+ with open('./tests/outputs/%s.json' % usecase) as data:
+ expected = json.load(data)
+ self.assertEqual(self.ordered(actual), self.ordered(expected))
+
+ def test_single_profile(self):
+ self.verify('single_profile')
+
+ def test_double_profile(self):
+ self.verify('double_profile')
+
+ def test_triple_profile(self):
+ self.verify('triple_profile')
+
+ def test_missing_volume(self):
+ self.verify('missing_volume')
+
+ def test_missing_volume2(self):
+ self.verify('missing_volume2')
+
+ def test_fewer_partition(self):
+ self.verify('fewer_partition')
+
+ def test_multinode_hybrid1(self):
+ self.verify('multinode_hybrid1')
+
+ def test_multinode_hybrid2(self):
+ self.verify('multinode_hybrid2')
+
+ def test_multinode_hybrid3(self):
+ self.verify('multinode_hybrid3')
+
+ def test_multinode_hybrid4(self):
+ self.verify('multinode_hybrid4')
+
+ def test_multinode_hybrid5(self):
+ self.verify('multinode_hybrid5')
+
+ def test_multinode_hybrid6(self):
+ self.verify('multinode_hybrid6')
+
+ def test_multinode_hybrid7(self):
+ self.verify('multinode_hybrid7')
+
+ def test_multinode_hybrid8(self):
+ self.verify('multinode_hybrid8')
+
+ def test_multinode_hybrid9(self):
+ self.verify('multinode_hybrid9')
+
+if __name__ == '__main__':
+ unittest.main()