|
@@ -1,17 +1,16 @@
|
|
|
import json
|
|
|
import os
|
|
|
-import tempfile
|
|
|
import unittest
|
|
|
|
|
|
from flask import Flask
|
|
|
from flask_testing import LiveServerTestCase
|
|
|
from mock import mock
|
|
|
|
|
|
-from kalliope.core import LIFOBuffer
|
|
|
-from kalliope.core.Models import Singleton
|
|
|
from kalliope._version import version_str
|
|
|
+from kalliope.core import LIFOBuffer
|
|
|
from kalliope.core.ConfigurationManager import BrainLoader
|
|
|
from kalliope.core.ConfigurationManager import SettingLoader
|
|
|
+from kalliope.core.Models import Singleton
|
|
|
from kalliope.core.RestAPI.FlaskAPI import FlaskAPI
|
|
|
|
|
|
|
|
@@ -66,74 +65,65 @@ class TestRestAPI(LiveServerTestCase):
|
|
|
expected_content = {
|
|
|
"Kalliope version": "%s" % version_str
|
|
|
}
|
|
|
- self.assertEqual(json.dumps(expected_content, sort_keys=True), json.dumps(json.loads(response.get_data().decode('utf-8')), sort_keys=True))
|
|
|
+ self.assertEqual(json.dumps(expected_content, sort_keys=True),
|
|
|
+ json.dumps(json.loads(response.get_data().decode('utf-8')), sort_keys=True))
|
|
|
|
|
|
def test_get_all_synapses(self):
|
|
|
url = self.get_server_url()+"/synapses"
|
|
|
|
|
|
response = self.client.get(url)
|
|
|
expected_content = {
|
|
|
- "synapses": [
|
|
|
- {
|
|
|
- "name": "test",
|
|
|
- "neurons": [
|
|
|
- {
|
|
|
- "name": "say",
|
|
|
- "parameters": {
|
|
|
- "message": [
|
|
|
- "test message"
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ],
|
|
|
- "signals": [
|
|
|
- {
|
|
|
- "order": "test_order"
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "name": "test2",
|
|
|
- "neurons": [
|
|
|
- {
|
|
|
- "name": "say",
|
|
|
- "parameters": {
|
|
|
- "message": [
|
|
|
- "test message"
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ],
|
|
|
- "signals": [
|
|
|
- {
|
|
|
- "order": "bonjour"
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "name": "test3",
|
|
|
- "neurons": [
|
|
|
- {
|
|
|
- "name": "say",
|
|
|
- "parameters": {
|
|
|
- "message": [
|
|
|
- "test message"
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ],
|
|
|
- "signals": [
|
|
|
- {
|
|
|
- "order": "test_order_3"
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- ]
|
|
|
+ "synapses": [{
|
|
|
+ "name": "test",
|
|
|
+ "neurons": [{
|
|
|
+ "name": "say",
|
|
|
+ "parameters": {
|
|
|
+ "message": ["test message"]
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ "signals": [{
|
|
|
+ "order": "test_order"
|
|
|
+ }]
|
|
|
+ }, {
|
|
|
+ "name": "test2",
|
|
|
+ "neurons": [{
|
|
|
+ "name": "say",
|
|
|
+ "parameters": {
|
|
|
+ "message": ["test message"]
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ "signals": [{
|
|
|
+ "order": "bonjour"
|
|
|
+ }]
|
|
|
+ }, {
|
|
|
+ "name": "test4",
|
|
|
+ "neurons": [{
|
|
|
+ "name": "say",
|
|
|
+ "parameters": {
|
|
|
+ "message": ["test message {{parameter1}}"]
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ "signals": [{
|
|
|
+ "order": "test_order_with_parameter"
|
|
|
+ }]
|
|
|
+ }, {
|
|
|
+ "name": "test3",
|
|
|
+ "neurons": [{
|
|
|
+ "name": "say",
|
|
|
+ "parameters": {
|
|
|
+ "message": ["test message"]
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ "signals": [{
|
|
|
+ "order": "test_order_3"
|
|
|
+ }]
|
|
|
+ }]
|
|
|
}
|
|
|
# a lot of char ti process
|
|
|
self.maxDiff = None
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
- self.assertEqual(json.dumps(expected_content, sort_keys=True), json.dumps(json.loads(response.get_data().decode('utf-8')), sort_keys=True))
|
|
|
+ self.assertEqual(json.dumps(expected_content, sort_keys=True),
|
|
|
+ json.dumps(json.loads(response.get_data().decode('utf-8')), sort_keys=True))
|
|
|
|
|
|
def test_get_one_synapse(self):
|
|
|
url = self.get_server_url() + "/synapses/test"
|
|
@@ -159,7 +149,8 @@ class TestRestAPI(LiveServerTestCase):
|
|
|
]
|
|
|
}
|
|
|
}
|
|
|
- self.assertEqual(json.dumps(expected_content, sort_keys=True), json.dumps(json.loads(response.get_data().decode('utf-8')), sort_keys=True))
|
|
|
+ self.assertEqual(json.dumps(expected_content, sort_keys=True),
|
|
|
+ json.dumps(json.loads(response.get_data().decode('utf-8')), sort_keys=True))
|
|
|
|
|
|
def test_get_synapse_not_found(self):
|
|
|
url = self.get_server_url() + "/synapses/test-none"
|
|
@@ -186,7 +177,35 @@ class TestRestAPI(LiveServerTestCase):
|
|
|
'synapse_name': 'test'}],
|
|
|
'user_order': None
|
|
|
}
|
|
|
- self.assertEqual(json.dumps(expected_content, sort_keys=True), json.dumps(json.loads(result.get_data().decode('utf-8')), sort_keys=True))
|
|
|
+ self.assertEqual(json.dumps(expected_content, sort_keys=True),
|
|
|
+ json.dumps(json.loads(result.get_data().decode('utf-8')), sort_keys=True))
|
|
|
+ self.assertEqual(result.status_code, 201)
|
|
|
+
|
|
|
+ # run a synapse by its name with parameter
|
|
|
+ url = self.get_server_url() + "/synapses/start/id/test4"
|
|
|
+ headers = {"Content-Type": "application/json"}
|
|
|
+ data = {"parameters": {"parameter1": "replaced_value"}}
|
|
|
+ result = self.client.post(url, headers=headers, data=json.dumps(data))
|
|
|
+
|
|
|
+ expected_content = {
|
|
|
+ "matched_synapses": [
|
|
|
+ {
|
|
|
+ "matched_order": None,
|
|
|
+ "neuron_module_list": [
|
|
|
+ {
|
|
|
+ "generated_message": "test message replaced_value",
|
|
|
+ "neuron_name": "Say"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "synapse_name": "test4"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "status": "complete",
|
|
|
+ "user_order": None
|
|
|
+ }
|
|
|
+
|
|
|
+ self.assertEqual(json.dumps(expected_content, sort_keys=True),
|
|
|
+ json.dumps(json.loads(result.get_data().decode('utf-8')), sort_keys=True))
|
|
|
self.assertEqual(result.status_code, 201)
|
|
|
|
|
|
def test_post_synapse_not_found(self):
|
|
@@ -199,7 +218,8 @@ class TestRestAPI(LiveServerTestCase):
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- self.assertEqual(json.dumps(expected_content, sort_keys=True), json.dumps(json.loads(result.get_data().decode('utf-8')), sort_keys=True))
|
|
|
+ self.assertEqual(json.dumps(expected_content, sort_keys=True),
|
|
|
+ json.dumps(json.loads(result.get_data().decode('utf-8')), sort_keys=True))
|
|
|
self.assertEqual(result.status_code, 404)
|
|
|
|
|
|
def test_run_synapse_with_order(self):
|
|
@@ -219,12 +239,13 @@ class TestRestAPI(LiveServerTestCase):
|
|
|
'generated_message': 'test message', 'neuron_name': 'Say'
|
|
|
}
|
|
|
],
|
|
|
- 'synapse_name': 'test'
|
|
|
+ 'synapse_name': 'test'
|
|
|
}
|
|
|
],
|
|
|
'user_order': "test_order"
|
|
|
}
|
|
|
- self.assertEqual(json.dumps(expected_content, sort_keys=True), json.dumps(json.loads(result.get_data().decode('utf-8')), sort_keys=True))
|
|
|
+ self.assertEqual(json.dumps(expected_content, sort_keys=True),
|
|
|
+ json.dumps(json.loads(result.get_data().decode('utf-8')), sort_keys=True))
|
|
|
self.assertEqual(result.status_code, 201)
|
|
|
|
|
|
def test_post_synapse_by_order_not_found(self):
|
|
@@ -237,7 +258,8 @@ class TestRestAPI(LiveServerTestCase):
|
|
|
|
|
|
expected_content = {'status': None, 'matched_synapses': [], 'user_order': u'non existing order'}
|
|
|
|
|
|
- self.assertEqual(json.dumps(expected_content, sort_keys=True), json.dumps(json.loads(result.get_data().decode('utf-8')), sort_keys=True))
|
|
|
+ self.assertEqual(json.dumps(expected_content, sort_keys=True),
|
|
|
+ json.dumps(json.loads(result.get_data().decode('utf-8')), sort_keys=True))
|
|
|
self.assertEqual(result.status_code, 201)
|
|
|
|
|
|
# TODO this doesn't work on travis but works locally with python -m unittest discover
|
|
@@ -283,7 +305,7 @@ class TestRestAPI(LiveServerTestCase):
|
|
|
|
|
|
with mock.patch("os.system") as mock_os_system:
|
|
|
# Scenario 1 : input wav file
|
|
|
- temp_file = "/tmp/kalliope/tempfile.wav" # tempfile.NamedTemporaryFile(suffix=".wav")
|
|
|
+ temp_file = "/tmp/kalliope/tempfile.wav" # tempfile.NamedTemporaryFile(suffix=".wav")
|
|
|
result_file = FlaskAPI._convert_to_wav(temp_file)
|
|
|
self.assertEqual(temp_file, result_file)
|
|
|
mock_os_system.assert_not_called()
|
|
@@ -299,6 +321,6 @@ if __name__ == '__main__':
|
|
|
unittest.main()
|
|
|
|
|
|
# suite = unittest.TestSuite()
|
|
|
- # suite.addTest(TestRestAPI("test_post_synapse_by_order_not_found"))
|
|
|
+ # suite.addTest(TestRestAPI("test_run_synapse_by_name"))
|
|
|
# runner = unittest.TextTestRunner()
|
|
|
# runner.run(suite)
|