Added POST to Command controller

Change-Id: Ia19d01e06620ffb2326dc5eb0ef0dd02000c2649
This commit is contained in:
aviau 2014-08-21 14:19:43 -04:00
parent fd075316cb
commit b95b72d21f
2 changed files with 27 additions and 1 deletions

View File

@ -69,4 +69,16 @@ class CommandsController(rest.RestController):
commands = [host for host commands = [host for host
in pecan.request.mongo_connection.shinken.commands.find()] in pecan.request.mongo_connection.shinken.commands.find()]
return [command.Command(**c) for c in commands] return [command.Command(**c) for c in commands]
@wsme_pecan.wsexpose(command.Command,
body=command.Command,
status_code=201)
def post(self, data):
"""Create a new command.
:param data: a command within the request body.
"""
pecan.request.mongo_connection.shinken.commands.insert(
data.as_dict()
)

View File

@ -84,3 +84,17 @@ class TestRootController(functionalTest.FunctionalTest):
self.assertEqual(expected_commands, mongo_commands) self.assertEqual(expected_commands, mongo_commands)
self.assertEqual(response.status_int, 204) self.assertEqual(response.status_int, 204)
def test_add_command(self):
new_command = {
"command_name": "newcommand",
"command_line": "/usr/bin/newcommand -hello"
}
response = self.app.post_json("/v1/commands", params=new_command)
commands = [c for c in self.mongoconnection.shinken.commands.find()]
for c in commands:
del c["_id"]
self.assertTrue(new_command in commands)
self.assertEqual(response.status_int, 201)