aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Métaireau <alexis@notmyidea.org>2018-01-07 21:44:33 +0100
committerAlexis Métaireau <alexis@notmyidea.org>2018-01-07 21:44:33 +0100
commit59ff2dd6b237d13f49808ff42b61ca1812e9b911 (patch)
tree4818c9cbe07d274f01b4d7e0389e11f169ace32f
parentf1e2a2d84ceb13951c2547c6548eb823b60ce77e (diff)
parent2019b398f164aa3f7edb8af439c92f1a32d2e920 (diff)
downloadihatemoney-mirror-59ff2dd6b237d13f49808ff42b61ca1812e9b911.zip
ihatemoney-mirror-59ff2dd6b237d13f49808ff42b61ca1812e9b911.tar.gz
ihatemoney-mirror-59ff2dd6b237d13f49808ff42b61ca1812e9b911.tar.bz2
Merge branch 'almet/fix-template-inclusion-packaging' of github.com:spiral-project/ihatemoney into almet/fix-template-inclusion-packaging
-rw-r--r--dev-requirements.txt1
-rwxr-xr-xihatemoney/manage.py8
-rw-r--r--ihatemoney/tests/tests.py27
-rw-r--r--tox.ini13
4 files changed, 43 insertions, 6 deletions
diff --git a/dev-requirements.txt b/dev-requirements.txt
index 04358ae..28116fa 100644
--- a/dev-requirements.txt
+++ b/dev-requirements.txt
@@ -3,3 +3,4 @@ tox
pytest
Flask-Testing
Flake8
+mock; python_version < '3.3'
diff --git a/ihatemoney/manage.py b/ihatemoney/manage.py
index 797e6c4..315cfac 100755
--- a/ihatemoney/manage.py
+++ b/ihatemoney/manage.py
@@ -4,7 +4,7 @@ import os
import pkgutil
import random
import sys
-from getpass import getpass
+import getpass
from flask_script import Manager, Command, Option
from flask_migrate import Migrate, MigrateCommand
@@ -20,11 +20,11 @@ class GeneratePasswordHash(Command):
"""Get password from user and hash it without printing it in clear text."""
def run(self):
- password = getpass(prompt='Password: ')
+ password = getpass.getpass(prompt='Password: ')
print(generate_password_hash(password))
-class ConfigTemplate(Command):
+class GenerateConfig(Command):
def get_options(self):
return [
Option('config_file', choices=[
@@ -74,7 +74,7 @@ def main():
manager = Manager(app)
manager.add_command('db', MigrateCommand)
manager.add_command('generate_password_hash', GeneratePasswordHash)
- manager.add_command('generate-config', ConfigTemplate)
+ manager.add_command('generate-config', GenerateConfig)
manager.run()
diff --git a/ihatemoney/tests/tests.py b/ihatemoney/tests/tests.py
index de53c58..d4b6d7a 100644
--- a/ihatemoney/tests/tests.py
+++ b/ihatemoney/tests/tests.py
@@ -4,6 +4,10 @@ try:
import unittest2 as unittest
except ImportError:
import unittest # NOQA
+try:
+ from unittest.mock import patch
+except ImportError:
+ from mock import patch
import os
import json
@@ -16,6 +20,7 @@ from flask import session
from flask_testing import TestCase
from ihatemoney.run import create_app, db, load_configuration
+from ihatemoney.manage import GenerateConfig, GeneratePasswordHash
from ihatemoney import models
from ihatemoney import utils
@@ -1406,5 +1411,27 @@ class ServerTestCase(IhatemoneyTestCase):
self.assertStatus(200, req)
+class CommandTestCase(BaseTestCase):
+ def test_generate_config(self):
+ """ Simply checks that all config file generation
+ - raise no exception
+ - produce something non-empty
+ """
+ cmd = GenerateConfig()
+ for config_file in cmd.get_options()[0].kwargs['choices']:
+ with patch('sys.stdout', new=six.StringIO()) as stdout:
+ cmd.run(config_file)
+ print(stdout.getvalue())
+ self.assertNotEqual(len(stdout.getvalue().strip()), 0)
+
+ def test_generate_password_hash(self):
+ cmd = GeneratePasswordHash()
+ with patch('sys.stdout', new=six.StringIO()) as stdout, \
+ patch('getpass.getpass', new=lambda prompt: 'secret'): # NOQA
+ cmd.run()
+ print(stdout.getvalue())
+ self.assertEqual(len(stdout.getvalue().strip()), 187)
+
+
if __name__ == "__main__":
unittest.main()
diff --git a/tox.ini b/tox.ini
index ddef0a1..15c2b40 100644
--- a/tox.ini
+++ b/tox.ini
@@ -6,22 +6,31 @@ skip_missing_interpreters = True
commands =
python --version
- py.test ihatemoney/tests/tests.py
+ py.test --pyargs ihatemoney.tests.tests
+
deps =
-rdev-requirements.txt
-rrequirements.txt
-install_command = pip install --pre {opts} {packages}
+# To be sure we are importing ihatemoney pkg from pip-installed version
+changedir = /tmp
+
+install_command =
+ pip install --pre {opts} {packages}
+ pip install .
+
[testenv:docs]
commands = sphinx-build -a -n -b html -d docs/_build/doctrees docs docs/_build/html
deps =
-rdocs/requirements.txt
+changedir = {toxinidir}
[testenv:lint]
commands = flake8 ihatemoney
deps =
-rdev-requirements.txt
+changedir = {toxinidir}
[flake8]
exclude = migrations