Skip to content

Commit

Permalink
Merge pull request #31130 from ticosax/saltnado_pass_get
Browse files Browse the repository at this point in the history
Saltnado: provide also get parameters to the context
  • Loading branch information
Mike Place committed Feb 16, 2016
2 parents 2b93f53 + f0a6d2b commit 52a3c9b
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
1 change: 1 addition & 0 deletions salt/netapi/rest_tornado/saltnado.py
Expand Up @@ -1699,6 +1699,7 @@ def post(self, tag_suffix=None): # pylint: disable=W0221

ret = self.event.fire_event({
'post': self.raw_data,
'get': dict(self.request.query_arguments),
# In Tornado >= v4.0.3, the headers come
# back as an HTTPHeaders instance, which
# is a dictionary. We must cast this as
Expand Down
38 changes: 37 additions & 1 deletion tests/unit/netapi/rest_tornado/test_handlers.py
Expand Up @@ -39,9 +39,11 @@ class AsyncHTTPTestCase(object):
pass

import salt.ext.six as six
from salt.ext.six.moves.urllib.parse import urlencode # pylint: disable=no-name-in-module
from salt.ext.six.moves.urllib.parse import urlencode, urlparse # pylint: disable=no-name-in-module
# pylint: enable=import-error

from salttesting.mock import NO_MOCK, NO_MOCK_REASON, MagicMock, patch


@skipIf(HAS_TORNADO is False, 'The tornado package needs to be installed') # pylint: disable=W0223
class SaltnadoTestCase(integration.ModuleCase, AsyncHTTPTestCase):
Expand Down Expand Up @@ -347,6 +349,40 @@ def test_cors_origin_url_with_arguments(self):
self.assertEqual(headers["Access-Control-Allow-Origin"], "*")


@skipIf(NO_MOCK, NO_MOCK_REASON)
class TestWebhookSaltHandler(SaltnadoTestCase):

def get_app(self):
urls = [
(r'/hook(/.*)?', saltnado.WebhookSaltAPIHandler),
]
return self.build_tornado_app(urls)

@patch('salt.utils.event.get_event')
def test_hook_can_handle_get_parameters(self, get_event):
self._app.mod_opts['webhook_disable_auth'] = True
event = MagicMock()
event.fire_event.return_value = True
get_event.return_value = event
response = self.fetch('/hook/my_service/?param=1&param=2',
body=json.dumps({}),
method='POST',
headers={'Content-Type': self.content_type_map['json']})
self.assertEqual(response.code, 200, response.body)
host = urlparse(response.effective_url).netloc
event.fire_event.assert_called_once_with(
{'headers': {'Content-Length': '2',
'Connection': 'close',
'Content-Type': 'application/json',
'Host': host,
'Accept-Encoding': 'gzip'},
'post': {},
'get': {'param': ['1', '2']}
},
'salt/netapi/hook/my_service/',
)


class TestSaltAuthHandler(SaltnadoTestCase):

def get_app(self):
Expand Down

0 comments on commit 52a3c9b

Please sign in to comment.