diff --git a/jenkins/__init__.py b/jenkins/__init__.py index 26672b9..4105c89 100755 --- a/jenkins/__init__.py +++ b/jenkins/__init__.py @@ -287,7 +287,7 @@ class Jenkins(object): if variables: if format_spec == CREATE_NODE: - url_path = format_spec % urlencode(self._get_encoded_params(variables)) + url_path = format_spec % urlencode(variables) else: url_path = format_spec % self._get_encoded_params(variables) else: diff --git a/tests/test_node.py b/tests/test_node.py index 4d28241..a4e7064 100644 --- a/tests/test_node.py +++ b/tests/test_node.py @@ -253,6 +253,14 @@ class JenkinsCreateNodeTest(JenkinsNodesTestBase): actual) self._check_requests(jenkins_mock.call_args_list) + def test_build_url(self): + j = jenkins.Jenkins('https://test.noexist/') + # Note the use of a URL-encodable character "+" here. + variables = {'name': '10.0.0.1+test-node'} + result = j._build_url(jenkins.CREATE_NODE, variables=variables) + expected = 'https://test.noexist/computer/doCreateItem?name=10.0.0.1%2Btest-node' + self.assertEqual(result, expected) + @patch.object(jenkins.Jenkins, 'jenkins_open') def test_already_exists(self, jenkins_mock): jenkins_mock.side_effect = [