From f3feefca2b2fc1694dc5dfbda50cc9a5104c4cc0 Mon Sep 17 00:00:00 2001 From: Nicolas ROCHE Date: Mon, 29 Apr 2019 19:26:01 +0200 Subject: [PATCH] cook: correct reression on cook action using several args (#32687) --- hobo/environment/management/commands/cook.py | 6 ++--- tests/test_cook.py | 23 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/hobo/environment/management/commands/cook.py b/hobo/environment/management/commands/cook.py index 37a9a0a..2b6d41b 100644 --- a/hobo/environment/management/commands/cook.py +++ b/hobo/environment/management/commands/cook.py @@ -78,9 +78,9 @@ class Command(BaseCommand): continue action_args[arg] = string.Template( action_args[arg]).substitute(variables) - if not self.permissive: - self.check_action(action, action_args) - steps.append((action, action_args)) + if not self.permissive: + self.check_action(action, action_args) + steps.append((action, action_args)) for action, action_args in steps: getattr(self, action.replace('-', '_'))(**action_args) diff --git a/tests/test_cook.py b/tests/test_cook.py index 0b48ae3..1f46a35 100644 --- a/tests/test_cook.py +++ b/tests/test_cook.py @@ -1,4 +1,6 @@ import pytest +import mock +import StringIO from django.core.management.base import CommandError @@ -52,3 +54,24 @@ def test_check_action_invalid_certificat(monkeypatch): with pytest.raises(CommandError) as e_info: command.check_action(action, action_args) assert 'has no valid certificate' in str(e_info.value) + +@mock.patch('hobo.environment.management.commands.cook.open') +def test_having_several_action_args(mocked_open): + """load variables from a file""" + receipe = """{ + "steps": [ + {"create-authentic": { + "url": "https://entrouvert.org/", + "title": "Connexion" + }} + ] +}""" + expected_a2 = "[call(title=u'Connexion', url=u'https://entrouvert.org/')]" + + command = Command() + command.permissive = True + command.create_authentic = mock.MagicMock() + + mocked_open.side_effect = [StringIO.StringIO(receipe)] + command.run_cook('recipe_me.json') + assert str(command.create_authentic.mock_calls) == expected_a2