cubicweb/pyramid/test/test_config.py
changeset 12053 c3c9f2e1424c
child 12562 7bb677060ebd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb/pyramid/test/test_config.py	Thu Mar 09 16:36:33 2017 +0100
@@ -0,0 +1,64 @@
+# copyright 2017 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
+#
+# This file is part of CubicWeb.
+#
+# CubicWeb 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.
+#
+# CubicWeb 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 CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
+"""Tests for cubicweb.pyramid.config module."""
+
+import os
+from os import path
+from unittest import TestCase
+
+from mock import patch
+
+from cubicweb.devtools.testlib import TemporaryDirectory
+
+from cubicweb.pyramid import config
+
+
+class PyramidConfigTC(TestCase):
+
+    def test_get_random_secret_key(self):
+        with patch('random.choice', return_value='0') as patched_choice:
+            secret = config.get_random_secret_key()
+        self.assertEqual(patched_choice.call_count, 50)
+        self.assertEqual(secret, '0' * 50)
+
+    def test_write_development_ini(self):
+        with TemporaryDirectory() as instancedir:
+            appid = 'pyramid-instance'
+            os.makedirs(path.join(instancedir, appid))
+            os.environ['CW_INSTANCES_DIR'] = instancedir
+            try:
+                cfg = config.CubicWebPyramidConfiguration(appid)
+                with patch('random.choice', return_value='0') as patched_choice:
+                    cfg.write_development_ini(['foo', 'bar'])
+            finally:
+                os.environ.pop('CW_INSTANCES_DIR')
+            with open(path.join(instancedir, appid, 'development.ini')) as f:
+                lines = f.readlines()
+        self.assertEqual(patched_choice.call_count, 50 * 3)
+        secret = '0' * 50
+        for option in ('cubicweb.session.secret',
+                       'cubicweb.auth.authtkt.persistent.secret',
+                       'cubicweb.auth.authtkt.session.secret'):
+            self.assertIn('{} = {}\n'.format(option, secret), lines)
+        self.assertIn('cubicweb.instance = {}\n'.format(appid), lines)
+        self.assertIn('    cubicweb_foo\n', lines)
+
+
+if __name__ == '__main__':
+    import unittest
+    unittest.main()