From 642f3e268d798a276ea7baf5c12499fc101d48c3 Mon Sep 17 00:00:00 2001 From: Yann DEGAT Date: Wed, 21 May 2014 18:08:49 +0200 Subject: [PATCH] Bugfix when submitting language pack Change-Id: I1b758e7b0021bf7e80f0ab5b16fa72cfec4bcf35 Closes-bug: 1311832 --- solumclient/solum.py | 3 +-- solumclient/tests/test_solum.py | 31 ++++++++++++++++++++++--------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/solumclient/solum.py b/solumclient/solum.py index 3907eb0..6f18ad5 100644 --- a/solumclient/solum.py +++ b/solumclient/solum.py @@ -174,8 +174,7 @@ class LanguagePackCommands(cli_utils.CommandsBase): print("Error in language pack file: %s", str(exc)) sys.exit(1) - json_data = json.dumps(data) - languagepack = self.client.languagepacks.create(json_data) + languagepack = self.client.languagepacks.create(**data) fields = ['uuid', 'name', 'description', 'compiler_versions', 'os_platform'] data = dict([(f, getattr(languagepack, f, '')) diff --git a/solumclient/tests/test_solum.py b/solumclient/tests/test_solum.py index f579d5d..9085856 100644 --- a/solumclient/tests/test_solum.py +++ b/solumclient/tests/test_solum.py @@ -12,6 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. +import collections import json import re import sys @@ -47,6 +48,9 @@ plan_file_data = ( ' href: https://github.com/paulczar/example-nodejs-express.git\n' ' language_pack: auto') +languagepack_file_data = ( + '{"language-pack-type":"Java", "language-pack-name":"Java version 1.4."}') + class MockEntrypoint(object): def __init__(self, name, plugin): @@ -230,16 +234,25 @@ class TestSolum(base.TestCase): self.shell("languagepack list") mock_lp_list.assert_called_once() - @mock.patch.object(json, "load") + @mock.patch.object(cliutils, "print_dict") @mock.patch.object(languagepack.LanguagePackManager, "create") - def test_languagepack_create(self, mock_lp_create, mock_json_load): - mock_json_load.side_effect = """{ - "language-pack-type": "Java", - "language-pack-name": "Java version 1.4.", - }""" - self.make_env() - self.shell("languagepack create /dev/null") - mock_lp_create.assert_called_once() + def test_languagepack_create(self, mock_lp_create, mock_print_dict): + FakeResource = collections.namedtuple("FakeResource", + "uuid name description " + "compiler_versions os_platform") + + mock_lp_create.return_value = FakeResource( + 'foo', 'foo', 'foo', 'foo', 'foo') + expected_printed_dict_args = mock_lp_create.return_value._asdict() + lp_data = json.loads(languagepack_file_data) + mopen = mock.mock_open(read_data=languagepack_file_data) + with mock.patch('%s.open' % solum.__name__, mopen, create=True): + self.make_env() + self.shell("languagepack create /dev/null") + mock_lp_create.assert_called_once_with(**lp_data) + mock_print_dict.assert_called_once_with( + expected_printed_dict_args, + wrap=72) @mock.patch.object(languagepack.LanguagePackManager, "delete") def test_languagepack_delete(self, mock_lp_delete):