2017-02-08 20:55:17 +00:00
|
|
|
from unittest import TestCase
|
|
|
|
try:
|
|
|
|
from unittest.mock import patch
|
|
|
|
except ImportError:
|
|
|
|
from mock import patch
|
|
|
|
|
2017-04-07 16:20:38 +00:00
|
|
|
import json
|
|
|
|
|
2017-02-08 20:55:17 +00:00
|
|
|
from senpy.client import Client
|
2017-04-07 16:20:38 +00:00
|
|
|
from senpy.models import Results, Plugins, Error
|
|
|
|
from senpy.plugins import AnalysisPlugin, default_plugin_type
|
2017-02-08 20:55:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
class Call(dict):
|
|
|
|
def __init__(self, obj):
|
2017-04-07 16:20:38 +00:00
|
|
|
self.obj = obj.serialize()
|
2017-02-27 10:37:43 +00:00
|
|
|
self.status_code = 200
|
|
|
|
self.content = self.json()
|
2017-02-08 20:55:17 +00:00
|
|
|
|
|
|
|
def json(self):
|
2017-04-07 16:20:38 +00:00
|
|
|
return json.loads(self.obj)
|
2017-02-08 20:55:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
class ModelsTest(TestCase):
|
|
|
|
def setUp(self):
|
|
|
|
self.host = '0.0.0.0'
|
|
|
|
self.port = 5000
|
|
|
|
|
|
|
|
def test_client(self):
|
|
|
|
endpoint = 'http://dummy/'
|
|
|
|
client = Client(endpoint)
|
|
|
|
success = Call(Results())
|
|
|
|
with patch('requests.request', return_value=success) as patched:
|
|
|
|
resp = client.analyse('hello')
|
|
|
|
assert isinstance(resp, Results)
|
2017-02-27 10:37:43 +00:00
|
|
|
patched.assert_called_with(
|
|
|
|
url=endpoint + '/', method='GET', params={'input': 'hello'})
|
2017-02-08 20:55:17 +00:00
|
|
|
error = Call(Error('Nothing'))
|
|
|
|
with patch('requests.request', return_value=error) as patched:
|
2017-02-28 18:38:01 +00:00
|
|
|
try:
|
|
|
|
client.analyse(input='hello', algorithm='NONEXISTENT')
|
|
|
|
raise Exception('Exceptions should be raised. This is not golang')
|
|
|
|
except Error:
|
|
|
|
pass
|
2017-02-27 10:37:43 +00:00
|
|
|
patched.assert_called_with(
|
|
|
|
url=endpoint + '/',
|
|
|
|
method='GET',
|
|
|
|
params={'input': 'hello',
|
|
|
|
'algorithm': 'NONEXISTENT'})
|
2017-04-07 16:20:38 +00:00
|
|
|
|
|
|
|
def test_plugins(self):
|
|
|
|
endpoint = 'http://dummy/'
|
|
|
|
client = Client(endpoint)
|
|
|
|
plugins = Plugins()
|
|
|
|
p1 = AnalysisPlugin({'name': 'AnalysisP1', 'version': 0, 'description': 'No'})
|
|
|
|
plugins.plugins = [p1, ]
|
|
|
|
success = Call(plugins)
|
|
|
|
with patch('requests.request', return_value=success) as patched:
|
|
|
|
response = client.plugins()
|
|
|
|
assert isinstance(response, dict)
|
|
|
|
assert len(response) == 1
|
|
|
|
assert "AnalysisP1" in response
|
|
|
|
patched.assert_called_with(
|
|
|
|
url=endpoint + '/plugins', method='GET',
|
|
|
|
params={'plugin_type': default_plugin_type})
|