opennel-pymanager/tests/test_manager.py

1413 lines
59 KiB
Python
Raw Normal View History

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#
# create certificate (use for test)
# Copyright (C) 2017 AleaJactaEst
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
import unittest
import tempfile
import os
import configparser
import multiprocessing
import time
import re
import queue
2018-02-09 22:29:36 +00:00
import signal
2018-02-13 19:43:02 +00:00
import http.server
2018-02-13 21:31:41 +00:00
import logging
import json
2018-02-05 22:08:24 +00:00
from unittest.mock import patch
2018-02-13 19:43:02 +00:00
from unittest.mock import MagicMock
try:
import pymanager.manager as Manager
except ImportError:
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import pymanager.manager as Manager
#try:
# import pymanager.certificate as cert
#except ImportError:
# import sys
# import os
# sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# import pymanager.certificate as cert
2018-02-09 22:29:36 +00:00
def handler(signum, frame):
print("TimeOut !")
raise Exception("end of time")
class TestManager(unittest.TestCase):
def setUp(self):
self.openssl = '/usr/bin/openssl'
self.size_root = 4096
self.size_appli = 4096
self.size_child = 2048
self.passroot = 'BadPasswordRoot'
self.passappli = 'BadPasswordApplication'
self.country_name = 'FR'
self.state_or_province_name = 'France'
self.locality_name = 'Paris'
self.organization_name = 'khanat'
self.common_name = 'khanat'
self.path = os.path.dirname(os.path.abspath(__file__))
self.program = os.path.join(self.path, 'simulate_program.py')
self.badprogram = os.path.join(self.path, 'test.cfg')
2018-02-09 22:29:36 +00:00
signal.signal(signal.SIGALRM, handler)
def test_load_config(self):
config = configparser.ConfigParser()
config.add_section('config:server')
config.set('config:server', 'port', '8000')
config.set('config:server', 'keyfile', '/home/gameserver/ca/appli/private/serverkey.pem')
config.set('config:server', 'certfile', '/home/gameserver/ca/appli/certs/servercert.pem')
config.set('config:server', 'ca_cert', '/home/gameserver/ca/appli/certs/cachaincert.pem')
config.set('config:server', 'address', '')
config.set('config:server', 'authentification', 'yes')
config.set('config:server', 'method', 'https')
config.add_section('config:client')
config.set('config:client', 'port', '8000')
config.set('config:client', 'keyfile', '/home/gameserver/ca/appli/private/clientkey.pem')
config.set('config:client', 'certfile', '/home/gameserver/ca/appli/certs/clientcert.pem')
config.set('config:client', 'ca_cert', '/home/gameserver/ca/appli/certs/cachaincert.pem')
config.set('config:client', 'address', '127.0.0.1')
config.set('config:client', 'method', 'https')
config.add_section('command:test')
config.set('command:test', 'path', '/home/gameserver')
config.set('command:test', 'command', '/bin/sleep 10')
config.set('command:test', 'logsize', '10')
config.set('command:test', 'bufsize', '10')
config.add_section('config:user')
config.set('config:user', 'usename', 'filter_all, filter_admin')
try:
manager = Manager.Manager(False)
manager._load_config(config)
self.assertTrue(True)
except:
self.fail('Error detected on load config')
def test_load_config2(self):
config = configparser.ConfigParser()
config.add_section('config:server')
config.set('config:server', 'authentification', 'no')
config.add_section('command:test')
config.set('command:test', 'path', '/home/gameserver')
config.set('command:test', 'command', '/bin/sleep 10')
try:
manager = Manager.Manager(False)
manager._load_config(config)
self.assertTrue(True)
except:
self.fail('Error detected on load config')
def test_load_config_bad_param_logsize(self):
config = configparser.ConfigParser()
config.add_section('command:test')
config.set('command:test', 'command', '/bin/sleep 10')
config.set('command:test', 'logsize', 'bidon')
with self.assertRaises(ValueError):
manager = Manager.Manager(False)
manager._load_config(config)
self.assertTrue(True)
def test_load_config_bad_param_bufsize(self):
config = configparser.ConfigParser()
config.add_section('command:test')
config.set('command:test', 'command', '/bin/sleep 10')
config.set('command:test', 'bufsize', 'bidon')
with self.assertRaises(ValueError):
manager = Manager.Manager(False)
manager._load_config(config)
self.assertTrue(True)
def test_load_config_empty(self):
config = configparser.ConfigParser()
config.add_section('config:server')
config.add_section('config:client')
config.set('config:client', 'port', '8000')
config.set('config:client', 'keyfile', '/home/gameserver/ca/appli/private/clientkey.pem')
config.set('config:client', 'certfile', '/home/gameserver/ca/appli/certs/clientcert.pem')
config.set('config:client', 'ca_cert', '/home/gameserver/ca/appli/certs/cachaincert.pem')
config.set('config:client', 'address', '127.0.0.1')
config.set('config:client', 'method', 'https')
config.add_section('config:user')
config.add_section('command:test')
config.set('command:test', 'command', '/bin/sleep 10')
try:
manager = Manager.Manager(False)
manager._load_config(config)
self.assertTrue(True)
except:
self.fail('Error detected on load config')
def test_load_config_file(self):
cfgfile = tempfile.NamedTemporaryFile(suffix="config.cfg", mode='w+t')
cfgfile.write('#\n[config:server]\nauthentification = No\n')
cfgfile.flush()
try:
manager = Manager.Manager(False)
manager.load_config(cfgfile)
self.assertTrue(True)
except:
self.fail('Error detected on load configuration')
def test_load_config_file_none(self):
with self.assertRaises(ValueError):
manager = Manager.Manager(False)
manager.load_config(None)
def test_load_password_file(self):
pwdfile = tempfile.NamedTemporaryFile(suffix="password.cfg", mode='w+t')
config = configparser.ConfigParser()
config.add_section('config:server')
config.set('config:server', 'authentification', 'yes')
config.set('config:server', 'passwordfile', pwdfile.name)
pwdfile.write('username:$2a$12$2C97xW0KC/vFp3YyjlOgU.fWXJ3EiGT2Ihb0SWN9Mw0XI4WngiUqS\n\nusername2:badhash\n')
pwdfile.flush()
try:
manager = Manager.Manager(False)
manager._load_config(config)
manager.load_password()
self.assertTrue(True)
except:
self.fail('Error detected on load password')
def test_constructor_manager_command(self):
try:
logsize = 10
bufsize = 10
queueIn = multiprocessing.Queue()
queueOut = multiprocessing.Queue()
event = multiprocessing.Event()
manageCommand = Manager.ManageCommand('test_constructor_manager_command',
self.program,
self.path,
logsize,
bufsize,
queueIn,
queueOut,
event)
manageCommand.list_thread()
self.assertTrue(True)
except:
self.fail('Error initialize object ManageCommand')
def test_execute_manager_command(self):
try:
logsize = 10
bufsize = 10
queueIn = multiprocessing.Queue()
queueOut = multiprocessing.Queue()
event = multiprocessing.Event()
manageCommand = Manager.ManageCommand('test_execute_manager_command',
self.program,
self.path,
logsize,
bufsize,
queueIn,
queueOut,
event)
manageCommand.status()
manageCommand.start()
manageCommand.status()
manageCommand.start()
foundEnd = re.compile('.*(Started).*')
foundY = re.compile('.*(sendToStdinY).*')
loop = 10
while loop > 0:
time.sleep(1)
out = manageCommand.getlog(0)
if foundEnd.match(out):
break
loop -= 1
if not foundEnd.match(out):
manageCommand.stop()
self.assertTrue(False, 'Missing message in log')
manageCommand.list_thread()
retA = manageCommand.action("sendToStdinA")
self.assertEqual(retA, "ok", 'Error impossible to send to stdin')
for i in range(0, 120):
retX = manageCommand.action("sendToStdin%d" % i)
self.assertEqual(retX, "ok", 'Error impossible to send to stdin')
retY = manageCommand.action("sendToStdinY")
self.assertEqual(retY, "ok", 'Error impossible to send to stdin')
loop = 10
while loop > 0:
time.sleep(1)
out = manageCommand.getlog(0)
if foundY.match(out):
break
loop -= 1
if not foundY.match(out):
manageCommand.stop()
self.assertTrue(False, 'Missing message in log')
manageCommand.stop()
manageCommand.status()
retZ = manageCommand.action("sendToStdinZ")
manageCommand.stop()
self.assertEqual(retZ, "ko", 'Error send to stdin when process is down')
self.assertTrue(True)
except:
self.fail('Error initialize object ManageCommand')
def test_execute_crash_manager_command(self):
try:
signal.alarm(30)
logsize = 10
bufsize = 10
queueIn = multiprocessing.Queue()
queueOut = multiprocessing.Queue()
event = multiprocessing.Event()
manageCommand = Manager.ManageCommand('test_execute_crash_manager_command',
self.program + ' --no-loop --timeout 1',
self.path,
logsize,
bufsize,
queueIn,
queueOut,
event)
res = manageCommand.start()
self.assertEqual(res, 'started')
wait = True
while wait:
time.sleep(1)
res = manageCommand.status()
if res == 'stopped':
wait = False
manageCommand.list_thread()
manageCommand.stop()
manageCommand.status()
self.assertTrue(True)
except:
self.fail('Error initialize object ManageCommand')
def test_execute_not_kill_manager_command(self):
try:
signal.alarm(30)
logsize = 10
bufsize = 10
queueIn = multiprocessing.Queue()
queueOut = multiprocessing.Queue()
event = multiprocessing.Event()
manageCommand = Manager.ManageCommand('test_execute_not_kill_manager_command',
self.program + " --disable-kill",
self.path,
logsize,
bufsize,
queueIn,
queueOut,
event,
maxWaitEnd = 2)
except:
self.fail('Error initialize object ManageCommand')
try:
res = manageCommand.start()
self.assertEqual(res, 'started')
wait = True
while wait:
time.sleep(1)
res = manageCommand.status()
self.assertEqual(res, 'started')
res = manageCommand.getlog(0)
try:
resjson = json.loads(res)
if 'last-line' in res:
if resjson['last-line'] == 3:
wait = False
except:
pass
manageCommand.list_thread()
manageCommand.stop()
res = manageCommand.status()
self.assertEqual(res, 'stopped')
self.assertTrue(True)
except Exception as e:
self.fail('Error when run test (%s)' % str(e))
def test_execute_command_crashed(self):
try:
logsize = 10
bufsize = 10
queueIn = multiprocessing.Queue()
queueOut = multiprocessing.Queue()
event = multiprocessing.Event()
manageCommand = Manager.ManageCommand('test_execute_command_crashed',
self.program + " --no-loop --timeout=1",
self.path,
logsize,
bufsize,
queueIn,
queueOut,
event,
waitDelay = 10)
manageCommand.start()
wait = True
while wait:
time.sleep(1)
res = manageCommand.status()
if res == 'stopped':
wait = False
res = manageCommand.status()
self.assertEqual(res, 'stopped')
manageCommand.start()
wait = True
while wait:
time.sleep(1)
res = manageCommand.status()
if res == 'stopped':
wait = False
res = manageCommand.status()
self.assertEqual(res, 'stopped')
manageCommand.stop()
self.assertTrue(True)
except:
self.fail('Error initialize object ManageCommand')
def test_execute_command_file_not_found(self):
try:
logsize = 10
bufsize = 10
queueIn = multiprocessing.Queue()
queueOut = multiprocessing.Queue()
event = multiprocessing.Event()
manageCommand = Manager.ManageCommand('test_execute_command_file_not_found',
self.program + "_not_exist",
self.path,
logsize,
bufsize,
queueIn,
queueOut,
event)
ret = manageCommand.start()
manageCommand.stop()
self.assertEqual(ret, "crashed", 'Error object not generate error when program not exist')
except:
self.fail('Error initialize object ManageCommand')
def test_execute_command_permission(self):
try:
logsize = 10
bufsize = 10
queueIn = multiprocessing.Queue()
queueOut = multiprocessing.Queue()
event = multiprocessing.Event()
manageCommand = Manager.ManageCommand('test_execute_command_permission',
self.badprogram,
self.path,
logsize,
bufsize,
queueIn,
queueOut,
event)
ret = manageCommand.start()
manageCommand.stop()
self.assertEqual(ret, "crashed", 'Error object not generate error when bad permission')
except:
self.fail('Error initialize object ManageCommand')
def _runCommand(self, name, command, path, logsize, bufsize, queueIn, queueOut, event):
"""
Thread to manage khaganat program
"""
manageCommand = Manager.ManageCommand(name=name,
command=command,
path=path,
logsize=logsize,
bufsize=bufsize,
queueIn=queueIn,
queueOut=queueOut,
event=event)
manageCommand.run()
2018-02-05 22:08:24 +00:00
def test_root_bad_loglevel(self):
with self.assertRaises(ValueError):
Manager.root(None,
None,
'NOTEXIST',
False,
False)
def test_root_bad_configfile(self):
logfile = tempfile.NamedTemporaryFile(suffix="password.cfg", mode='w+t')
with self.assertRaises(ValueError):
Manager.root(None,
logfile,
'DEBUG',
True,
True)
def test_main(self):
config = tempfile.NamedTemporaryFile(suffix="password.cfg", mode='w+t')
config.write('[config:server]\nauthentification=no\n')
config.flush()
Manager.main(['--conf=' + config.name])
2018-02-09 22:29:36 +00:00
def test_run_manager_command(self):
# Enable timeout
signal.alarm(10)
class MockServerHttp:
def append(self, name, queueIn, queueOut, event):
pass
def terminate(self):
pass
def join(self):
pass
config = configparser.ConfigParser()
config.add_section('config:server')
config.add_section('command:test')
config.set('command:test', 'command', self.program)
manage = Manager.Manager(False)
manage.serverHttp = MockServerHttp()
manage._load_config(config)
manage.launch_command()
queueIn = manage.threadCommand[0]._args[5]
queueOut = manage.threadCommand[0]._args[6]
event = manage.threadCommand[0]._args[7]
queueIn.put("START")
event.set()
# Enable timeout
signal.alarm(10)
item = queueOut.get(timeout=4)
self.assertEqual(item, "started", 'Error impossible to start program')
signal.alarm(0)
time.sleep(1)
signal.alarm(10)
event.set()
queueIn.put("STATUS")
item = queueOut.get(timeout=4)
self.assertEqual(item, "started", 'Error impossible to read status')
time.sleep(1)
event.set()
queueIn.put("STDIN arg")
item = queueOut.get(timeout=4)
self.assertEqual(item, "ok", 'Error when send STDIN')
signal.alarm(0)
time.sleep(1)
signal.alarm(10)
event.set()
queueIn.put("STDOUT 4")
item = queueOut.get(timeout=4)
signal.alarm(0)
self.assertRegex(item,
'^[{](.*)("first-line": 4)(.*)[}]$',
'Error when read STDOUT (Missing first-line)')
self.assertRegex(item,
'^[{](.*)("last-line": 4)(.*)[}]$',
'Error when read STDOUT (Missing last-line)')
self.assertRegex(item,
'^[{](.*)(4 arg")(.*)[}]$',
'Error when read STDOUT (bad record)')
time.sleep(1)
signal.alarm(10)
event.set()
queueIn.put("BADCOMMAND")
item = queueOut.get(timeout=4)
self.assertEqual(item, "error : command unknown", 'Error impossible to read status')
signal.alarm(0)
time.sleep(1)
signal.alarm(10)
event.set()
queueIn.put("STOP")
item = queueOut.get(timeout=4)
self.assertEqual(item, "stopped", 'Error impossible to read status')
signal.alarm(0)
time.sleep(1)
signal.alarm(10)
event.set()
queueIn.put("SHUTDOWN")
with self.assertRaises(queue.Empty):
item = queueOut.get(timeout=4)
#threadCommand.join()
manage.receive_signal(15, 1)
manage.wait_children_commands()
#Disable timeout
signal.alarm(0)
self.assertTrue(True)
def test_run_manager_command_autostart(self):
# Enable timeout
signal.alarm(10)
class MockServerHttp:
def append(self, name, queueIn, queueOut, event):
pass
def terminate(self):
pass
def join(self):
pass
config = configparser.ConfigParser()
config.add_section('config:server')
config.add_section('command:test')
config.set('command:test', 'command', self.program)
manage = Manager.Manager(True)
manage.serverHttp = MockServerHttp()
manage._load_config(config)
manage.launch_command()
queueIn = manage.threadCommand[0]._args[5]
queueOut = manage.threadCommand[0]._args[6]
event = manage.threadCommand[0]._args[7]
signal.alarm(10)
event.set()
queueIn.put("STATUS")
item = queueOut.get(timeout=4)
self.assertEqual(item, "started", 'Error impossible to read status')
time.sleep(1)
signal.alarm(10)
event.set()
queueIn.put("SHUTDOWN")
with self.assertRaises(queue.Empty):
item = queueOut.get(timeout=4)
#threadCommand.join()
manage.receive_signal(15, 1)
manage.wait_children_commands()
#Disable timeout
signal.alarm(0)
self.assertTrue(True)
2018-02-13 19:43:02 +00:00
class MockStreamRequestHandler():
def __init__(self):
self.value = "{}"
self.message = None
def define_return(self, value):
self.value = value
def read(self, numbercar):
return bytes(self.value, "utf-8")
def write(self, message):
self.message = message
class MockServer():
def __init__(self):
self.listEvent = {}
self.listQueueIn = {}
self.listQueueOut = {}
2018-02-13 21:31:41 +00:00
self.authentification = False
2018-02-13 19:43:02 +00:00
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_log_message(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.address_string = MagicMock()
manage.log_message('example')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_set_headers(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage._set_headers()
manage.send_response.assert_called_with(200)
manage.send_header.assert_called_with('Content-type', 'application/json')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_command_log_1(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.headers = {}
manage._command_log()
manage.send_error.assert_called_with(400, "bad content-type")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_command_log_2(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.headers = {'content-type' : 'application/json'}
manage._command_log()
manage.send_error.assert_called_with(400, "bad content-length")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_command_log_3(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage.rfile = TestManager.MockStreamRequestHandler()
manage._command_log()
manage.send_error.assert_called_with(400, 'Missing param name')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_command_log_4(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.rfile.define_return( '{"name": "test"}' )
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._command_log()
manage.send_error.assert_called_with(400, 'Name unknown')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_command_log_5(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listQueueIn = {'test': ''}
manage.rfile.define_return( '{"name": "test"}' )
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._command_log()
manage.send_error.assert_called_with(400, 'Missing param first-line')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_command_log_6(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listQueueIn = {'test': ''}
manage.rfile.define_return( '{"name": "test", "first-line" : "test"}' )
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._command_log()
manage.send_error.assert_called_with(400, 'Impossible to read first-line')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_command_log_7(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
#manage.server.listQueueOut['test'].put("empty")
manage.rfile.define_return( '{"name": "test", "first-line" : "1"}' )
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._command_log()
#self.assertEqual(b'empty',manage.wfile.message)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_command_log_8(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.server.listQueueOut['test'].put("empty")
manage.rfile.define_return( '{"name": "test", "first-line" : "1"}' )
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._command_log()
self.assertEqual(b'empty',manage.wfile.message)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_list(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage._send_list()
self.assertEqual(b'{"0": "test"}',manage.wfile.message)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_shutdown(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage._send_shutdown()
self.assertEqual(b'{"shutdown": "ok"}',manage.wfile.message)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_command_all(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.server.listQueueOut['test'].put("empty")
manage._send_command_all("test")
self.assertEqual(b'{"test": "empty"}',manage.wfile.message)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_command_all_timeout(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage._send_command_all("test")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_action_1(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._send_action()
manage.send_error.assert_called_with(400, 'Missing param name')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_action_2(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.rfile.define_return( '{"name": "testnew"}' )
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._send_action()
manage.send_error.assert_called_with(400, 'Name unknown')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_action_3(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.rfile.define_return( '{"name": "test"}' )
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._send_action()
manage.send_error.assert_called_with(400, 'Missing param action')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_action_4(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.rfile.define_return( '{"name": "test", "action": "example"}' )
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._send_action()
self.assertEqual(None,manage.wfile.message)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_action_5(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.server.listQueueOut['test'].put("empty")
manage.rfile.define_return( '{"name": "test", "action": "example"}' )
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._send_action()
self.assertEqual(b'{"state": "empty"}',manage.wfile.message)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_action_6(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.headers = {}
manage._send_action()
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_command_1(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.headers = {}
manage._send_command("STATUS")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_command_2(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage._send_command("STATUS")
manage.send_error.assert_called_with(400, 'Missing param name')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_command_3(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage.server.listQueueOut['test'].put("empty")
manage.rfile.define_return( '{"name": "test"}' )
manage._send_command("STATUS")
self.assertEqual(b'{"state": "empty"}',manage.wfile.message)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_command_4(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage.rfile.define_return( '{"name": "test"}' )
manage._send_command("STATUS")
manage.send_error.assert_called_with(500, 'Missing return')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_send_command_5(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.rfile = TestManager.MockStreamRequestHandler()
manage.wfile = TestManager.MockStreamRequestHandler()
manage.server = TestManager.MockServer()
manage.server.listEvent = {'test': multiprocessing.Event() }
manage.server.listQueueIn = {'test': multiprocessing.Queue() }
manage.server.listQueueOut = {'test': multiprocessing.Queue()}
manage.headers = {'content-length' : '1000', 'content-type' : 'application/json'}
manage.server.listQueueOut['test'].put("empty")
manage.rfile.define_return( '{"name": "testnew"}' )
manage._send_command("STATUS")
manage.send_error.assert_called_with(400, 'Name unknown')
2018-02-13 21:31:41 +00:00
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_GET_1(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage._command_log = MagicMock()
manage.path = "/STDOUT"
manage.do_GET()
manage._command_log.assert_called_with()
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_check_authentication_1(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
res = manage.check_authentication()
self.assertEqual(True, res)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_check_authentication_2(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage.server.authentification = True
res = manage.check_authentication()
self.assertEqual(False, res)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_check_authentication_3(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
logging.error = MagicMock()
manage.server.authentification = True
manage.headers = {'Authorization' : 'Other'}
res = manage.check_authentication()
self.assertEqual(False, res)
logging.error.assert_called_with("Authentification with Bad method (Other)")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_check_authentication_4(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
logging.error = MagicMock()
manage.server.authentification = True
manage.headers = {'Authorization' : 'Basic '}
res = manage.check_authentication()
self.assertEqual(False, res)
logging.error.assert_called_with("Error detected list index out of range")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_check_authentication_5(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
logging.error = MagicMock()
manage.server.authentification = True
manage.headers = {'Authorization' : 'Basic test:$2b$12$AoRGhrAYsuSlROUDx.0AZ.3SPBVYd8wD.Vyz7jCRXZdwm7ArEN3Oi'}
res = manage.check_authentication()
self.assertEqual(False, res)
logging.error.assert_called_with("Error detected Incorrect padding")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_check_authentication_6(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage.server.users = {"user1": ""}
logging.error = MagicMock()
manage.server.authentification = True
manage.headers = {'Authorization' : 'Basic dGVzdDokMmIkMTIkQW9SR2hyQVlzdVNsUk9VRHguMEFaLjNTUEJWWWQ4d0QuVnl6N2pDUlhaZHdtN0FyRU4zT2k='}
res = manage.check_authentication()
self.assertEqual(False, res)
logging.error.assert_called_with("Authentification with unknown user (test)")
2018-03-07 21:41:35 +00:00
signal.alarm(0)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_check_authentication_7(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
#manage.server.users = {"username": bytes("$2b$12$f5kbmfXvUq3LDequGHcoqu06AueJ35TpIU2MIf5L8c9Y1PE/6Rz4i", "utf-8")}
#manage.server.users = {"username": b"$2b$12$f5kbmfXvUq3LDequGHcoqu06AueJ35TpIU2MIf5L8c9Y1PE/6Rz4i"}
manage.server.users = {"username": "$2b$12$f5kbmfXvUq3LDequGHcoqu06AueJ35TpIU2MIf5L8c9Y1PE/6Rz4i".encode('utf-8')}
logging.error = MagicMock()
manage.server.authentification = True
#manage.headers = {'Authorization': bytes('Basic dXNlcm5hbWU6cGFzc3dvcmQ=', 'UTF-8')}
manage.headers = {'Authorization': 'Basic dXNlcm5hbWU6cGFzc3dvcmQ='}
res = manage.check_authentication()
self.assertEqual(True, res)
#logging.error.assert_called_with("Authentification with user (username)")
signal.alarm(0)
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_check_authentication_8(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage.server.users = {"username": "$2b$12$/rfBBlTy3E9CgB8ZGeWFBOo54UN5Ogj3PuEOHVJcXyQ2hL6kYVwWW".encode('utf-8')}
logging.error = MagicMock()
manage.server.authentification = True
manage.headers = {'Authorization': 'Basic dXNlcm5hbWU6cGFzc3dvcmQ='}
res = manage.check_authentication()
self.assertEqual(False, res)
logging.error.assert_called_with("Authentification with wrong password for user (username)")
signal.alarm(0)
2018-02-13 21:31:41 +00:00
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_GET_2(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage._send_command = MagicMock()
manage.path = "/STATUS"
manage.do_GET()
manage._send_command.assert_called_with("STATUS")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_GET_3(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage._send_list = MagicMock()
manage.path = "/LIST"
manage.do_GET()
manage._send_list.assert_called_with()
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_GET_4(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage._send_command_all = MagicMock()
manage.path = "/STATUSALL"
manage.do_GET()
manage._send_command_all.assert_called_with("STATUS")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_GET_5(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage.send_error = MagicMock()
manage.path = "/BADPATH"
manage.do_GET()
manage.send_error.assert_called_with(400, 'Path unknown')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_GET_6(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage.server.authentification = True
manage.send_error = MagicMock()
manage.path = "/BADPATH"
manage.do_GET()
manage.send_error.assert_called_with(403, 'Wrong authentication')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_POST_1(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage._send_command = MagicMock()
manage.path = "/START"
manage.do_POST()
manage._send_command.assert_called_with("START")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_POST_2(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage._send_command = MagicMock()
manage.path = "/STOP"
manage.do_POST()
manage._send_command.assert_called_with("STOP")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_POST_3(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage._send_action = MagicMock()
manage.path = "/STDIN"
manage.do_POST()
manage._send_action.assert_called_with()
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_POST_4(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage._send_shutdown = MagicMock()
manage.path = "/SHUTDOWN"
manage.do_POST()
manage._send_shutdown.assert_called_with()
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_POST_5(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage._send_command_all = MagicMock()
manage.path = "/STARTALL"
manage.do_POST()
manage._send_command_all.assert_called_with("START")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_POST_6(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage._send_command_all = MagicMock()
manage.path = "/STOPALL"
manage.do_POST()
manage._send_command_all.assert_called_with("STOP")
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_POST_7(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage._send_command = MagicMock()
manage._send_action = MagicMock()
manage._send_shutdown = MagicMock()
manage._send_command_all = MagicMock()
manage.path = "/BADPATH"
manage.do_POST()
manage.send_error.assert_called_with(400, 'Path unknown')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_POST_8(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.server = TestManager.MockServer()
manage.server.authentification = True
manage.send_error = MagicMock()
manage.path = "/BADPATH"
manage.do_POST()
manage.send_error.assert_called_with(403, 'Wrong authentication')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_HEAD(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.path = "test"
manage.do_HEAD()
manage.send_error.assert_called_with(404, 'File Not Found: test')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_PUT(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.path = "test"
manage.do_PUT()
manage.send_error.assert_called_with(404, 'File Not Found: test')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_PATCH(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.path = "test"
manage.do_PATCH()
manage.send_error.assert_called_with(404, 'File Not Found: test')
@patch.object(http.server.SimpleHTTPRequestHandler, '__init__')
def test_run_manage_do_DELETE(self, init):
# Enable timeout
signal.alarm(10)
manage = Manager.ManageHttpRequest(None, None, None)
manage.log_message = MagicMock()
manage.send_response = MagicMock()
manage.send_header = MagicMock()
manage.send_error = MagicMock()
manage.end_headers = MagicMock()
manage.path = "test"
manage.do_DELETE()
manage.send_error.assert_called_with(404, 'File Not Found: test')
if __name__ == '__main__':
unittest.main()